CN109558338A - 存储器中的动态页面分配 - Google Patents

存储器中的动态页面分配 Download PDF

Info

Publication number
CN109558338A
CN109558338A CN201810982166.6A CN201810982166A CN109558338A CN 109558338 A CN109558338 A CN 109558338A CN 201810982166 A CN201810982166 A CN 201810982166A CN 109558338 A CN109558338 A CN 109558338A
Authority
CN
China
Prior art keywords
page
memory
side cache
memory side
cache
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.)
Pending
Application number
CN201810982166.6A
Other languages
English (en)
Inventor
K·库马尔
B·A·格兰尼耶洛
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.)
Intel Corp
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 CN109558338A publication Critical patent/CN109558338A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • 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/0815Cache consistency protocols
    • G06F12/0831Cache consistency protocols using a bus scheme, e.g. with bus monitoring or watching means
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • 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/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/1016Performance 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/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • G06F2212/1021Hit rate 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/10Providing a specific technical effect
    • G06F2212/1041Resource optimization
    • G06F2212/1044Space efficiency 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/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/22Employing cache memory using specific memory technology
    • G06F2212/222Non-volatile memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/28Using a specific disk cache architecture
    • G06F2212/282Partitioned cache
    • 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/604Details relating to cache allocation
    • 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/6042Allocation of cache space to multiple users or processors
    • G06F2212/6046Using a specific cache allocation policy other than replacement policy
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/62Details of cache specific to multiprocessor cache arrangements
    • G06F2212/621Coherency control relating to peripheral accessing, e.g. from DMA or I/O device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/652Page size control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/653Page colouring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

描述了可操作以分配存储器的物理页面的系统的技术。该系统可以包括存储器侧高速缓存、耦合到存储器侧高速缓存的存储器侧高速缓存监视单元,以及操作系统(OS)页面分配器。OS页面分配器可以从存储器侧高速缓存监视单元接收反馈。OS页面分配器可以基于从存储器侧高速缓存监视单元接收的反馈来调整页面分配策略,所述页面分配策略定义由OS页面分配器分配的物理页面。

Description

存储器中的动态页面分配
背景技术
存储器设备通常作为计算机或其他电子设备中的内部半导体集成电路提供。存在许多不同类型的存储器,包括易失性存储器,例如动态随机存取存储器(DRAM)和同步动态随机存取存储器(SDRAM),以及非易失性存储器(NVM),例如闪存。
闪存设备通常使用单晶体管存储器元件,其允许高存储密度、高可靠性和低功耗。通过对电荷存储节点(例如,浮动栅极或电荷捕获)编程来改变单元的阈值电压来确定每个单元的数据状态。诸如相变存储器(PCM)之类的其他NVM使用诸如物理材料改变或极化之类的其他物理现象来确定每个单元的数据状态。闪存和其他固态存储器的常见用途包括个人计算机、个人数字助理(PDA)、数码相机、数字媒体播放器、数字记录器、游戏、电器、车辆、无线设备、蜂窝电话和可移动便携式存储器模块等。这种存储器的用途继续扩大。
附图说明
通过下面结合附图的详细描述,本发明实施例的特征和优点将变得显而易见,附图通过示例的方式一起示出了发明特征;并且,其中:
图1示出了根据示例实施例的映射到存储器侧高速缓存中的位置的存储器地址存取模式;
图2示出了根据示例实施例的操作系统(OS)页面空闲列表;
图3示出了根据示例实施例的包括高速缓存监视单元的计算设备,该高速缓存监视单元向操作系统(OS)页面分配器提供反馈以使OS页面分配器能够动态调整页面分配策略。
图4示出了根据示例实施例的可操作用于分配存储器的物理页面的系统;
图5示出了根据示例实施例的可操作用于分配存储器的物理页面的存储器设备;
图6是示出了根据示例实施例的用于分配存储器的物理页面的操作的流程图;以及
图7示出了根据示例实施例的包括数据存储设备的计算系统。
现在将参考所示的示例性实施例,并且这里将使用特定语言来进行相同描述。然而,应该理解的是,不打算由此限制本发明的范围。
具体实施方式
在描述所公开的发明实施例之前,应理解本发明不限于本文公开的特定结构、过程步骤或材料,而是扩展到其等同物,如相关领域的普通技术人员将认识到的。还应该理解,本文采用的术语仅用于描述特定示例或实施例的目的,而不是限制性的。不同附图中的相同附图标记表示相同元件。提供流程图和过程中提供的数字是为了清楚地说明步骤和操作,并不一定表示特定的次序或顺序。
贯穿本说明书对“示例”的引用意味着结合该示例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,贯穿本说明书在各个地方出现的短语“在示例中”或“实施例”不一定都指代相同的实施例。
如本文所用,为方便起见,可以在共同列表中呈现多个项目、结构元件、组成元件和/或材料。但是,这些列表应该被解释为好像列表中的每个成员都被单独标识为独立且独特的成员。因此,在没有相反的指示的情况下,这样的列表中的任何个别成员都不应仅基于它们在共同组中的呈现而被解释为事实上等同于同一列表中的任何其他成员。另外,本文中的各种示例和实施例可以与其各种组件的替代物一起提及。应理解,这些实施例、示例和替代方案不应被解释为事实上是彼此的等同物,而是在本公开内容下被视为单独的和自主的表示。
此外,所描述的特征、结构或特性可以在一个或多个实施例中以任何合适的方式组合。在以下描述中,提供了许多具体细节,诸如布局、距离、网络示例等的示例,以提供对本发明实施例的透彻理解。然而,相关领域的技术人员将认识到,可以在没有一个或多个具体细节的情况下或者利用其他方法、组件、布局等来实践该技术。在其他实例中,众所周知的结构、材料或操作可以未详细示出或描述以避免模糊本公开的各方面。
在本公开中,“包含”、“包含着”、“含有”和“具有”等可以具有美国专利法中赋予它们的含义并且可以表示“包括”、“包括着”等等,并且通常被解释为开放式术语。术语“由......组成”或“由......构成”是封闭术语,并且仅包括结合这些术语具体列出的组件、结构、步骤等,以及符合美国专利法的那些。“基本上由......组成”或“基本上由......构成”具有美国专利法通常赋予它们的含义。特别是,这些术语通常是封闭的术语,但允许包含不会对与其结合使用的项目的基本和新颖特征或功能产生实质性影响的其他项目、材料、组件、步骤或元件。例如,组合物中存在的微量元素如果在“基本上由......组成”的语言下出现,但不影响组合物的性质或特征,即使没有在这些术语后的列表中明确列出,也是允许的。当在本说明书中使用开放式术语时,如“包含”或“包括”,应当理解,也应该直接支持语言“基本上由......组成”以及语言“由......组成”,就好像明确陈述一样,反之亦然。
说明书和权利要求书中的术语“第一”、“第二”、“第三”、“第四”等等用于区分相似的元件,而不一定用于描述特定的顺序或时间顺序。应当理解,如此使用的任何术语在适当的情况下是可互换的,使得本文描述的实施例例如能够以不同于本文所示或以其他方式描述的顺序操作。类似地,如果在本文中将方法描述为包括一系列步骤,则这里所示的这些步骤的顺序不一定是可以执行这些步骤的唯一顺序,并且可能省略某些所述步骤和/或本文未描述的某些其他步骤可能可以添加到该方法中。
如本文所使用的,诸如“增加”、“减少”、“更好”、“更差”、“更高”、“更低”、“增强”等的比较术语是指与周围或相邻区域中、在单个设备或多个类似设备中的、在组或类别中的、在多个组或类别中的的其他设备、组件或活动,或与已知的最先进技术相比明显不同的设备、组件或活动的属性。例如,具有“增加的”破坏风险的数据区域可以指存储器设备中的比同一存储器设备中的其他区域更可能具有写入错误的区域。许多因素都可能导致这样的风险增加,包括位置、制造过程、应用于该区域的程序脉冲数等。
如本文所用,术语“基本上”是指动作、特性、属性、状态、结构、项目或结果的完全或接近完全的程度或水平。例如,“基本上”封闭的对象意味着该对象要么完全封闭,要么接近完全封闭。在某些情况下,与绝对完整性的确切允许偏差程度可能取决于具体情况。然而,一般而言,如果完成的接近程度将具有与获得完全绝对和完全完成相同的总体结果。当在否定含义中使用时,“基本上”的使用同样适用于指代完全或几乎完全缺乏动作、特性、属性、状态、结构、项目或结果。例如,“基本上不含”颗粒的组合物要么完全没有颗粒,要么几乎完全没有颗粒,这种效果与完全缺少颗粒的效果相同。换句话说,“基本上没有”成分或元素的组合物实际上可能仍含有此类物质,只要没有可测量的效果即可。
如本文所使用的,术语“约”用于通过提供可以“略高于”或“略低于”端点的给定值来为数值范围端点提供灵活性。然而,应该理解,即使在本说明书中结合特定数值使用术语“约”时,也提供了对与“约”术语不同的精确数值的支持。
可以以范围格式在此表达或呈现数值量和数据。应当理解,这样的范围格式仅仅是为了方便和简洁而使用,因此应该灵活地解释为不仅包括明确列举作为范围限制的数值,而且还包括包含在该范围内的所有单独的数值或子范围,如同每个数值和子范围被明确列举。作为说明,“约1至约5”的数值范围应该被解释为不仅包括明确列举的约1至约5的值,而且还包括在所指示的范围内的单个值和子范围。因此,包括在该数值范围内的是单个值,例如2、3和4以及子范围,例如1-3、2-4和3-5等,以及单个地1、1.5、2、2.3、3、3.8、4、4.6、5和5.1。
同样的原理适用于仅将一个数值作为最小值或最大值进行记载的范围。此外,无论范围的广度或所描述的特性如何,都应该应用这种解释。
以下提供技术实施例的初始概述,并且然后在后面进一步详细描述特定技术实施例。该初步概述旨在帮助读者更快地理解该技术,但不旨在识别关键或基本技术特征,也不旨在限制所要求保护的主题的范围。除非另外定义,否则本文使用的所有技术和科学术语具有与本公开所属领域的普通技术人员通常理解的含义相同的含义。
存储器设备可以利用非易失性存储器(NVM),所述非易失性存储器是不需要电力来维持由介质存储的数据的状态的存储介质。NVM传统上一直用于存储器存储或长期持久存储的任务,但新的和不断发展的存储器技术允许将NVM用于超出传统存储器存储的角色。这种角色的一个示例是使用NVM作为主存储器或系统存储器。非易失性系统存储器(NVMsys)可以将传统存储的数据可靠性与超低延迟和高带宽性能相结合,与传统易失性存储器相比具有许多优势,例如高密度、大容量、低功耗和降低制造复杂性,仅举几例。例如,字节可寻址的就地写NVM(例如三维(3D)交叉点存储器)可以作为字节可寻址存储器来操作,类似于动态随机存取存储器(DRAM)或作为块可寻址存储器来操作,类似于NAND闪存。换句话说,这种NVM可以作为系统存储器或作为持久性存储存储器(NVMstor)来操作。在NVM用作系统存储器的一些情况下,当到NVMsys的电力中断时,存储的数据可被丢弃或以其他方式呈现为不可读。NVMsys还通过提供可以更靠近计算设备中的处理器的非易失性、低延迟存储器来提高数据管理的灵活性。在一些示例中,NVMsys可以驻留在DRAM总线上,使得NVMsys可以提供对数据的超快速类DRAM存取。NVMsys还可用于频繁存取大型复杂数据集的计算环境,以及对因电力故障或系统崩溃导致的停机时间敏感的环境。
NVM的非限制性示例可包括平面或三维(3D)NAND闪存,包括单阈值级或多阈值级NAND闪存、NOR闪存、单级或多级相变存储器(PCM),例如硫属化物玻璃PCM、平面或3D PCM,交叉点阵列存储器,包括3D交叉点存储器,基于非易失性双列直插存储器模块(NVDIMM)的存储器,如基于闪存的(NVDIMM-F)存储器,基于闪存/DRAM的(NVDIMM-N)存储器,基于持久存储器的(NVDIMM-P)存储器,基于3D交叉点的NVDIMM存储器,电阻RAM(ReRAM),包括基于金属氧化物或氧空位的ReRAM,例如HfO2-、Hf/HfOx-、Ti/HfO2-、TiOx-和基于TaOx的ReRAM,基于细丝的ReRAM,例如Ag/GeS2-、ZrTe/Al2O3-和基于Ag的ReRAM,可编程金属化单元(PMC)存储器,例如导电桥接RAM(CBRAM)、氧化硅-氮化物-氧化物-硅(SONOS)存储器、铁电RAM(FeRAM)、铁电晶体管RAM(Fe-TRAM)、反铁电存储器、聚合物存储器(例如,铁电聚合物存储器)、磁阻RAM(MRAM)、就地写入非易失性MRAM(NVMRAM)、自旋转移扭矩(STT)存储器、自旋轨道扭矩(SOT)存储器、纳米线存储器、电可擦除可编程只读存储器(EEPROM)、纳米管RAM(NRAM)、其他基于忆阻器和晶闸管的存储器,基于自旋电子磁结的存储器,基于磁隧道结(MTJ)的存储器,基于畴壁(DW)存储器等,包括其组合。术语“存储器设备”可以指管芯本身和/或封装的存储器产品。NVM可以是字节或块可寻址的。在一些示例中,NVM可以符合联合电子设备工程委员会(JEDEC)颁布的一个或多个标准,例如JESD21-C、JESD218、JESD219、JESD220-1、JESD223B、JESD223-1或其他合适的标准(本文引用的JEDEC标准可从www.jedec.org获得)。在一个特定示例中,NVM可以是3D交叉点存储器。
在一个示例中,随着NVMsys的出现,存储器侧高速缓存已经成为存储器系统中的有益类型的高速缓存。存储器侧高速缓存可以与中央处理单元(CPU)侧高速缓存不同,因为存储器侧高速缓存正在对系统存储器的数据高速缓存,或者换句话说,正在对被引用到存储器侧高速缓存而不是CPU侧高速缓存之下的存储器层的数据高速缓存,CPU侧高速缓存是引用到CPU的针对CPU进行高速缓存。存储器侧高速缓存可以提供快速数据存取,并且因此可以直接映射以实现对存储在其中的数据的更快查找和检索。此外,存储器侧高速缓存在容量上可以跨越数十到数百吉比特(GB),这通常能够在较低存储器层中的NVMsys容量的1/8th或1/16th左右进行高速缓存。存储器侧高速缓存可以包括可以用作高速缓存的任何类型的易失性存储器。易失性存储器可以包括任何类型的易失性存储器,并且不被认为是限制性的。易失性存储器的非限制性示例可以包括随机存取存储器(RAM),诸如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步动态随机存取存储器(SDRAM)等,包括其组合。SDRAM存储器可以包括其任何变体,例如单数据速率SDRAM(SDR DRAM)、双倍数据速率(DDR)SDRAM、包括DDR、DDR2、DDR3、DDR4、DDR5等,统称为DDRx,以及低功耗DDR(LPDDR)SDRAM,包括LPDDR、LPDDR2、LPDDR3、LPDDR4等,统称为LPDDRx。在某些示例中,DRAM符合JEDEC颁布的标准,例如用于DDR SDRAM的JESD79F、用于DDR2SDRAM的JESD79-2F、用于DDR3SDRAM的JESD79-3F、用于DDR4SDRAM的JESD79-4A、用于LPDDR SDRAM的JESD209B、用于LPDDR2SDRAM的JESD209-2F、用于LPDDR3SDRAM的JESD209-3C和用于LPDDR4SDRAM的JESD209-4A(这些标准可在www.jedec.org上获得;DDR5SDRAM即将推出)。这些标准(和类似标准)可以被称为基于DDR或基于LPDDR的标准,并且实现这种标准的通信接口可以被称为基于DDR或基于LPDDR的接口。在一个特定示例中,易失性存储器可以是DRAM。在另一特定示例中,易失性存储器可以是DDRx SDRAM。在又一个特定方面,易失性存储器可以是LPDDRxSDRAM。另外,在一些情况下,易失性存储器可以在功能上耦合到存储卡,例如双列直插式存储器模块(DIMM),其耦合到系统中以用作存储器侧高速缓存。
在一个示例中,存储器侧高速缓存的增加的容量是存储器设备中的存储器层次结构的新变化。存储器侧高速缓存的容量足够大,整个数据集可以存在其中。然而,由于存储器侧高速缓存的直接映射特性,工作负载可能仅利用存储器侧高速缓存中的可用容量的一小部分。例如,基于工作负载的特定存取模式,由于存储器侧高速缓存中的冲突,仅可以利用可用容量的一小部分。根据特定存储器存取模式来对存储器侧高速缓存中的存储器位置存取可导致折叠到直接映射存储器侧高速缓存中的一小组存储器位置上。换句话说,几个物理存储器地址可以映射到存储器侧高速缓存中的相同存储器位置,这可能导致低效使用并且导致存储器侧高速缓存中的冲突的数量增加。
图1示出了传统存储器地址存取模式的示例,该传统存储器地址存取模式映射到存储器侧高速缓存中的存储器位置。如图所示,存储器地址存取模式可以折叠到存储器侧高速缓存中的一小组存储器位置,其可以是直接映射的存储器侧高速缓存。在该示例中,存储器地址存取模式在所有可用位置中仅映射到存储器侧高速缓存中的两个位置,从而导致可用高速缓存空间的低效使用和冲突的数量增加(即,在两个位置处)。
在一种配置中,操作系统(OS)页面分配器可以在存储器中针对工作负载分配物理页面,并且工作负载的存储器地址存取模式可以根据OS页面分配器在存储器中分配给工作负载的物理页面。存储器中的物理页面可以与存储器地址相关联,并且存储器地址存取模式可以根据存储器中的物理页面。作为示例,物理页面X1、Y1和Z1可以分别具有地址100、200和300,并且可以根据存储器地址存取模式来对这些地址存取。
在一个示例中,虽然可以根据工作负载本身来存取4千字节(K)的跨度(即,页面内的较低12位),但4K是由工作负载控制的上限。物理地址的高阶位(例如,13和更高)可以由OS页面分配器确定。例如,在虚拟地址空间中顺序流式传输的工作负载可以被赋予不连续的随机物理页面,这可以导致存储器中的非流式物理地址存取模式(在4K块之外)。另一方面,具有某种任意存取模式的工作负载可能无意中由OS页面分配器强制在直接映射的高速缓存中一组减少的位置上发生冲突,这对于共享环境中的非关键应用而言是有利的,但对于关键应用是不利的。
图2示出了操作系统(OS)页面空闲列表的示例。如图所示,OS页面空闲列表通常可以折叠为2的幂,这可能导致直接对映射高速缓存中的少数条目的冲突的数量增加。这个问题可见于在多通道动态随机存取存储器(MCDRAM)高速缓存和两级存储器(2LM)高速缓存中,这可能导致应用级性能不佳。在一段时间内,OS页面空闲列表可以缩小或变得无序或加扰,并且所分发的页面可能变得更低效。随着时间的推移,所分发的页面更可能与当前分发的现有页面冲突,并且在以前的解决方案中,没有避免冲突的用于确定从OS页面空闲列表中分发的最高效页面的机制。
在一种配置中,OS页面分配器可以应用页面分配模式和策略,这可以用于确定存储器侧高速缓存的有效性和使用。页面分配模式和策略的应用可以是独立于应用的控制机制。但是,在先前的解决方案中,OS页面分配器与存储器侧高速缓存的静态和动态行为分离。在先前的解决方案中,OS页面分配器没有基于反馈或规范来调整空闲列表/页面分配策略的机制。另外,在以前的解决方案中,当在直接映射的存储器侧高速缓存中发生折叠到一小组存储器位置时,解决方案是静态配置随机页面分配策略,但是这种解决方案在减少折叠到存储器位置的小集合方面是无效的。
在本技术中,系统中的OS页面分配器可以从应用接收系统级别或每进程指导,或者从与存储器侧高速缓存相关联的存储器侧高速缓存监视单元接收反馈,并且指导和/或反馈可以使OS页面分配器能够动态调整页面分配模式和策略。例如,OS页面分配器可以从存储器侧高速缓存监视单元接收关于存储器地址折叠、存储器侧高速缓存使用、系统中的存储器填充、存储器侧高速缓存的大小和交织方案、应用的存储器存取模式等的提示和反馈。基于从存储器侧高速缓存监视单元接收的提示和反馈,OS页面分配器可以适当地调整其页面分配模式和策略。换句话说,OS页面分配器可以实现用于基于从存储器侧高速缓存监视单元接收的提示和反馈来修改页面分配模式和策略的动态方案,这可以减少折叠到直接映射的存储器侧高速缓存中的一小组存储器位置的可能性。因此,存储器侧高速缓存监视单元可以协调存储器侧高速缓存的使用与物理页面分配,这可以提高应用性能以及存储器侧高速缓存的使用和有效性。
图3示出了示例性计算设备300。计算设备300可以包括网络接口控制器(NIC),其实现计算设备300中的节点之间的通信。计算设备300可以包括一个或多个核或处理器,例如Core 0、Core I和Core 2。可以使用计算设备300中的一个或多个核或处理器来执行应用(例如,App B)。计算设备300可以包括高速缓存代理(CA)和最后级高速缓存(LLC)。高速缓存代理可以处理来自计算设备300中的核的存储器数据请求。计算设备300可以包括NVM和DDRx存储器。DDRx存储器可以包括高速缓存330,例如存储器侧高速缓存。高速缓存330可以利用直接映射来存储数据,以提供对高速缓存数据的快速存取。然而,如前所述,直接映射可能导致折叠到直接映射的高速缓存330中的一小组存储器位置,这可能导致由于在高速缓存330中存储器地址冲突而仅利用高速缓存330中的可用容量的一小部分。
在一种配置中,计算设备300可以包括高速缓存监视单元310,其通信地耦合到计算设备300中的高速缓存330。例如,高速缓存监视单元310可以是监视高速缓存330(例如,存储器侧高速缓存)的存储器侧高速缓存监视单元。高速缓存监视单元310还可以被称为智能逐出分配模块,其可以是计算设备300中的硬件单元。高速缓存监视单元310可以用于监视高速缓存330中的使用和活动,并且基于此监视,高速缓存监视单元310可以识别或接收来自高速缓存330的反馈。高速缓存监视单元310可以将反馈转发到计算设备300中的操作系统(OS)页面分配器320。OS页面分配器320可以基于从高速缓存监视单元310接收的反馈来动态地调整系统(例如,高速缓存330和/或NVM)的页面分配模式或策略。换句话说,OS页面分配器320可以基于从缓存监视单元310接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
在一个示例中,OS页面分配器320可以动态地改变页面分配模式,以获得具有减少数量的地址冲突的改进的存储器地址存取模式。对页面分配策略的调整可以防止折叠到高速缓存330中的减少的一组位置。物理页面可以具有地址,并且页面分配策略可以确定要使用哪些物理页面(或地址)。作为示例,物理页面X1、Y1、Z1可以具有地址100、200、300,并且这些地址可以在具有100个地址的高速缓存中折叠(例如,100mod 100等于200mod 100,其等于300mod 100)。在该示例中,可以向OS页面分配器320提供关于存储器地址折叠的反馈,并且然后OS页面分配器320可以分配一组新的物理页面。例如,OS页面分配器320可以分配具有地址120、140和160的页面X2、Y2和Z2。对于该一组新的物理页面,这些地址不会折叠,因为120mod 100不等于140mod 100等。因此,OS页面分配器320可以分配一组不同的物理页面,其可以针对存储器(例如,高速缓存330和/或NVM)中的一组不同的物理地址,从而导致在存储器中折叠减少和存储器地址冲突减少。结果,可以成功地利用高速缓存330的增加部分来存储数据。
在一个示例中,OS页面分配器320可以调整页面分配模式或策略以修改用于高速缓存330的存储器地址存取模式,这可以减少折叠到计算设备300的存储器(例如,高速缓存330和/或NVM)中的减少的一组存储器地址。换句话说,调整页面分配模式或策略可以修改由OS页面分配器320分配的物理页面,并且对页面分配模式或策略的调整可以用于修改存储器地址存取模式。物理页面可以与存储器地址相关联,并且存储器地址存取模式可以根据由OS页面分配器320分配的物理页面。此外,基于存储器中减少的折叠,可以减少计算设备300的存储器中存储器地址冲突的数量。
在一个示例中,高速缓存监视单元310可以识别来自高速缓存330的包括存储器地址折叠信息的反馈。存储器地址折叠信息可以识别与增加的存储器地址折叠量相关联的高速缓存330和/或NVM中的存储器地址范围和/或与增加数量的存储器地址冲突相关联的高速缓存330和/或NVM中的某些地址范围。高速缓存监视单元310可以将地址折叠信息(包括有问题的存储器地址范围)提供给OS页面分配器320。OS页面分配器320可以调整页面分配策略以分配如下的物理页面,所述物理页面避免与增加数量的存储器地址折叠和增加数量的存储器地址冲突相关联的存储器地址范围。例如,OS页面分配器320可以从高速缓存330和/或NVM中的不同区域分配或分发页面。换句话说,OS页面分配器320可以避免高速缓存330和/或NVM中的更有问题(即,具有增加的折叠和冲突)的区域。
在另一示例中,在高速缓存监视单元310处识别的反馈可包括高速缓存未命中信息。基于高速缓存未命中信息,高速缓存监视单元310可以识别导致高速缓存330中的增加数量的存储器地址折叠和存储器地址冲突的某些地址位。换句话说,高速缓存监视单元310可以识别问题地址位(例如,存储器地址范围的冲突的存储器地址中的3位),这导致增加数量的存储器地址折叠和存储器地址冲突。高速缓存监视单元310可以将该信息合并到反馈中,然后将反馈提供给OS页面分配器320。基于该反馈,OS页面分配器320可以识别导致增加的数量的存储器地址折叠和存储器地址冲突的特定地址位。OS页面分配器320可以在地址字段内对这些地址位进行混洗、散列或随机化,并且然后基于这些不同的地址位在高速缓存330和/或NVM中分配或分发物理页面。换句话说,通过修改地址位,OS页面分配器320可以从高速缓存330和/或NVM中的不同区域分配或分发物理页面,从而避免高速缓存330和/或NVM中的更有问题(即具有增加的折叠和冲突)的区域。
在一个示例中,可以修改基本输入输出系统(BIOS)以交织存储器地址,使得可以使用较高阶位和较低阶位的组合来确定高速缓存到远存储器映射分布,并且这些位可以暴露给分配物理地址页面的OS页面分配器320。
在一个示例中,高速缓存监视单元310可以观察到,在存储器地址折叠和冲突方面,向OS页面分配器310传递反馈并未改善高速缓存行为。在这种情况下,高速缓存监视单元310可以确定修改高速缓存330的属性,例如高速缓存330的关联性,以便改进高速缓存行为。
在一个示例中,在高速缓存监视单元310处识别的反馈可以包括高速缓存330的大小的指示,高速缓存330的交织方案,用于利用存储在高速缓存330中的数据的应用的存储器地址存取模式,与增加的优先级相关联的应用标识符(ID)或进程ID,高速缓存330的使用信息,和/或实时遥测信息。另外,高速缓存监视单元310可以识别系统模型特定的寄存器(MSR),其可以指定要提供给OS页面分配器320的特定类型的反馈。换句话说,系统MSR可以针对提供给OS页面分配器320的反馈提供一定级别的系统可配置性。高速缓存监视单元310可以向OS页面分配器320提供反馈(例如,高速缓存330的大小、交织方案、应用的存储器地址存取模式、应用ID、进程ID、使用信息、遥测数据等),并且OS页面分配器320可以基于该反馈来调整页面分配策略,所述页面分配策略定义由OS页面分配器320分配的物理页面。
在一个示例中,OS页面分配器320可以具有在存储器(例如,高速缓存330和/或NVM)中可用的若干资源池,以及基于这些资源池的页面分配策略。基于来自高速缓存监视单元310的输入,OS页面分配器320可以将页面分配策略调整为例如随机页面分配策略、大页面分配策略、范围页面分配策略等中之一。基于随机页面分配策略,OS页面分配器320可以以半随机方式分配物理页面以最大化扩展。基于大页面分配策略,OS页面分配器320可以利用XYZ比特折叠来分配增加大小的物理页面(例如,在兆字节(MB)或千兆字节(GB)的范围内而不是4千字节(KB))。基于范围页面分配策略,OS页面分配器320可以分配具有特定范围内的物理地址的物理页面。可替代地,OS页面分配器320可以根据不同的机制来调整页面分配策略。
图4示出了可操作以分配存储器的物理页面的系统400。系统400可以包括存储器侧高速缓存410。系统400可以包括耦合到存储器侧高速缓存410的存储器侧高速缓存监视单元420。系统400可以包括操作系统(OS)页面分配器430。OS页面分配器430可以从存储器侧高速缓存监视单元420接收反馈。OS页面分配器430可以基于从存储器侧高速缓存监视单元420接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器430分配的物理页面。
图5示出了可操作以分配存储器510的物理页面的存储器设备500。存储器设备500可以包括存储器510。存储器设备500可以包括存储器侧高速缓存520。存储器设备500可以包括耦合到存储器侧高速缓存520的存储器侧高速缓存监视单元530。存储器设备500可以包括操作系统(OS)页面分配器540。OS页面分配器540可以从存储器侧高速缓存监视单元530接收反馈。OS页面分配器540可以基于从存储器侧高速缓存监视单元530接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器540分配的物理页面。
另一示例提供了用于分配存储器的物理页面的方法600,如图6中的流程图所示。该方法可以作为机器上的指令来执行,其中指令包括在至少一个计算机可读介质或一个非暂时性机器可读存储介质上。该方法可以包括在存储器设备中的操作系统(OS)页面分配器处从存储器设备中的存储器侧高速缓存监视单元接收反馈的操作,其中存储器侧高速缓存监视单元耦合到存储器设备中的存储器侧高速缓存,如框610中所示。该方法可以包括在OS页面分配器处基于从存储器侧高速缓存监视单元接收的反馈来调整页面分配策略的操作,所述页面分配策略定义由所述OS页面分配器分配的物理页面,如框620中所示。
图7示出了可以在本技术中使用的通用计算系统或设备700。计算系统700可以包括与存储器704通信的处理器702。存储器704可以包括能够存储、存取、组织和/或检索数据的任何设备、设备组合、电路等。非限制性示例包括SAN(存储区域网络)、云存储网络、易失性或非易失性RAM、相变存储器、光学介质、硬盘驱动器类型介质等,包括其组合。
计算系统或设备700另外包括用于系统的各种组件之间的连接的本地通信接口706。例如,本地通信接口706可以根据需要是本地数据总线和/或任何相关地址或控制总线。
计算系统或设备700还可以包括I/O(输入/输出)接口708,用于控制系统的I/O功能,以及用于到计算系统700外部的设备的I/O连接。还可以包括网络接口710以用于网络连接。网络接口710可以控制系统内和系统外的网络通信。网络接口可以包括有线接口、无线接口、蓝牙接口、光学接口等,包括其适当的组合。此外,计算系统700还可以包括用户接口712、显示设备714、以及对这种系统有益的各种其他组件。
处理器702可以是单个或多个处理器,并且存储器704可以是单个或多个存储器。本地通信接口706可以用作促进任何有用组合中的任何单个处理器、多个处理器、单个存储器、多个存储器、各种接口等之间的通信的路径。
各种技术或其某些方面或部分可以采取体现在有形介质中的程序代码(即,指令)的形式,有形介质例如为软盘、CD-ROM、硬盘驱动器、非暂时性计算机可读存储介质、或者任何其他机器可读存储介质,其中,当程序代码被加载到诸如计算机之类的机器中并由其执行时,该机器成为用于实践各种技术的装置。电路可以包括硬件、固件、程序代码、可执行代码、计算机指令和/或软件。非暂时性计算机可读存储介质可以是不包括信号的计算机可读存储介质。在可编程计算机上执行程序代码的情况下,计算设备可以包括处理器、处理器可读的存储介质(包括易失性和NVM和/或存储元件)、至少一个输入设备和至少一个输出设备。易失性和NVM和/或存储元件可以是RAM、EPROM、闪存驱动器、光盘驱动器、磁性硬盘驱动器、固态驱动器或用于存储电子数据的其他介质。节点和无线设备还可以包括收发器模块、计数器模块、处理模块和/或时钟模块或定时器模块。可以实现或利用本文描述的各种技术的一个或多个程序可以使用应用编程接口(API)、可重用控件等。这些程序可以用高级过程或面向对象的编程语言实现,以与计算机系统进行通信。但是,如果需要,程序可以用汇编语言或机器语言实现。在任何情况下,语言都可以是编译或解释语言,并与硬件实现方式相结合。示例性系统或设备可包括但不限于膝上型计算机、平板计算机、台式计算机、智能电话、计算机终端和服务器、存储数据库以及利用电路和可编程存储器的其他电子设备,例如家用电器、智能电视、数字视频盘(DVD)播放器、加热、通风和空调(HVAC)控制器、灯开关等。
示例
以下示例涉及具体的发明实施例,并指出可在实现这些实施例中使用或以其他方式组合的具体特征、元件或步骤。
在一个示例中,提供了一种用于分配存储器的物理页面的设备。该设备可以包括操作系统(OS)页面分配器和通信接口,通信接口用于将OS页面分配器耦合到存储器侧高速缓存和耦合到存储器侧高速缓存的存储器侧高速缓存监视单元。OS页面分配器可操作用于从存储器侧高速缓存监视单元接收反馈,并基于从存储器侧高速缓存监视单元接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
在该设备的一个示例中,OS页面分配器可操作用于调整页面分配策略以分配如下的物理页面,所述物理页面避免与增加数量的存储器地址折叠相关联的存储器地址范围,其中在从所述存储器侧高速缓存监视单元接收的反馈中包括的存储器地址折叠信息中识别所述存储器地址范围。
在该设备的一个示例中,OS页面分配器可操作用于调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,从而减少折叠到存储器侧高速缓存中的减少的一组存储器地址以及导致的存储器侧高速缓存中的存储器地址冲突。
在设备的一个示例中,OS页面分配器可操作用于调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,其中所述物理页面与存储器地址相关联,并且存储器地址存取模式是根据OS页面分配器分配的物理页面的。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括存储器侧高速缓存的大小的指示和用于存储器侧高速缓存的交织方案。
在该设备的一个示例中,存储器侧高速缓存监视单元被配置为当存储器侧高速缓存中的存储器地址折叠量或存储器侧高速缓存中的存储器地址冲突数量中的一个或多个超过定义的阈值时,确定修改所述存储器侧高速缓存的一个或多个属性,其中所述存储器侧高速缓存的一个或多个属性包括所述存储器侧高速缓存的关联属性。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括用于利用存储在存储器侧高速缓存中的数据的应用的存储器地址存取模式。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括与增加的优先级相关联的应用标识符(ID)或进程ID。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括以下中的一个或多个:用于存储器侧高速缓存的使用信息或实时遥测信息。
在设备的一个示例中,OS页面分配器可操作以用于将页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
在设备的一个示例中,非易失性存储器(NVM)通信地耦合到存储器侧高速缓存。
在一个示例中,提供了一种可操作以用于分配存储器的物理页面的存储器系统。存储器系统可以包括NVM。存储器系统可以包括存储器侧高速缓存。存储器系统可以包括耦合到存储器侧高速缓存的存储器侧高速缓存监视单元。存储器系统可以包括操作系统(OS)页面分配器。OS页面分配器可以从存储器侧高速缓存监视单元接收反馈。OS页面分配器可以基于从存储器侧高速缓存监视单元接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
在存储器系统的一个示例中,OS页面分配器可操作用于调整页面分配策略以分配如下的物理页面,所述物理页面避免与增加量的存储器地址折叠相关联的存储器地址范围,其中在从所述存储器侧高速缓存监视单元接收的反馈中包括的存储器地址折叠信息中识别所述存储器地址范围。
在存储器系统的一个示例中,OS页面分配器可操作用于调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,从而减少折叠到存储器侧高速缓存中的减少的一组存储器地址以及导致的存储器侧高速缓存中的存储器地址冲突。
在存储器系统的一个示例中,OS页面分配器可操作用于调整页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,其中所述物理页面与存储器地址相关联,并且所述存储器地址存取模式是根据所述OS页面分配器分配的物理页面的。
在存储器系统的一个示例中,OS页面分配器可操作用于调整页面分配策略以定义在以下中的一个或多个中分配的物理页面:NVM或存储器侧高速缓存。
在存储器系统的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括存储器侧高速缓存的大小的指示和用于存储器侧高速缓存的交织方案。
在存储器系统的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括用于利用存储在存储器侧高速缓存中的数据的应用的存储器地址存取模式。
在存储器系统的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括与增加的优先级相关联的应用标识符(ID)或进程ID。
在存储器系统的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括以下中的一个或多个:用于存储器侧高速缓存的使用信息或实时遥测信息。
在存储器系统的一个示例中,OS页面分配器可操作用于将页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
在存储器系统的一个示例中,存储器侧高速缓存利用直接映射来将数据存储在存储器侧高速缓存中。
在存储器系统的一个示例中,NVM和存储器侧高速缓存位于同一双列直插式存储器模块(DIMM)上。
在一个示例中,提供了一种用于分配存储器的物理页面的方法。该方法可以包括在操作系统(OS)页面分配器处从存储器设备中的存储器侧高速缓存监视单元接收反馈,其中存储器侧高速缓存监视单元耦合到存储器设备中的存储器侧高速缓存。该方法可以包括在OS页面分配器处基于从存储器侧高速缓存监视单元接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
在用于分配存储器的物理页面的方法的一个示例中,该方法可以进一步包括调整页面分配策略以分配如下的物理页面,所述物理页面避免与增加量的存储器地址折叠相关联的存储器地址范围,其中在从所述存储器侧高速缓存监视单元接收的反馈中包括的存储器地址折叠信息中识别所述存储器地址范围。
在用于分配存储器的物理页面的方法的一个示例中,该方法可以进一步包括调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,从而减少折叠到存储器侧高速缓存中的减少的一组存储器地址以及导致的存储器侧高速缓存中的存储器地址冲突。
在用于分配存储器的物理页面的方法的一个示例中,该方法可以进一步包括调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,其中物理页面与存储器地址相关联,并且存储器地址存取模式是根据OS页面分配器分配的物理页面的。
在用于分配存储器的物理页面的方法的一个示例中,该方法还可以包括将页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
在用于分配存储器的物理页面的方法的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括以下中的一个或多个:存储器侧高速缓存的大小的指示;用于存储器侧高速缓存的交织方案;用于利用存储在存储器侧高速缓存中的数据的应用的存储器地址存取模式;与增加的优先级相关联的应用标识符(ID)或进程ID;存储器侧高速缓存的使用信息;或实时遥测信息。
在一个示例中,提供了一种可操作用于分配存储器的物理页面的设备。该设备可以包括存储器侧高速缓存。该设备可以包括耦合到存储器侧高速缓存的存储器侧高速缓存监视单元。该设备可以包括操作设备(OS)页面分配器。OS页面分配器可以从存储器侧高速缓存监视单元接收反馈。OS页面分配器可以基于从存储器侧高速缓存监视单元接收的反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
在设备的一个示例中,OS页面分配器可操作用于调整页面分配策略以分配如下的物理页面,所述物理页面避免与增加量的存储器地址折叠相关联的存储器地址范围,其中在从所述存储器侧高速缓存监视单元接收的反馈中包括的存储器地址折叠信息中识别所述存储器地址范围。
在设备的一个示例中,OS页面分配器可操作以调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,从而减少折叠到存储器侧高速缓存中的减少的一组存储器地址以及导致的存储器侧高速缓存中的存储器地址冲突。
在设备的一个示例中,OS页面分配器可操作用于调整页面分配策略以修改用于存储器侧高速缓存的存储器地址存取模式,其中物理页面与存储器地址相关联,并且存储器地址存取模式是根据OS页面分配器分配的物理页面的。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括存储器侧高速缓存的大小的指示和用于存储器侧高速缓存的交织方案。
在设备的一个示例中,存储器侧高速缓存监视单元被配置为当存储器侧高速缓存中的存储器地址折叠量或存储器侧高速缓存中的存储器地址冲突数量中的一个或多个超过定义的阈值时,确定修改所述存储器侧高速缓存的一个或多个属性,其中所述存储器侧高速缓存的一个或多个属性包括所述存储器侧高速缓存的关联属性。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括用于利用存储在存储器侧高速缓存中的数据的应用的存储器地址存取模式。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括与增加的优先级相关联的应用标识符(ID)或进程ID。
在设备的一个示例中,从存储器侧高速缓存监视单元接收的反馈包括以下中的一个或多个:用于存储器侧高速缓存的使用信息或实时遥测信息。
在设备的一个示例中,OS页面分配器可操作用于将页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
在该设备的一个示例中,非易失性存储器(NVM)通信地耦合到存储器侧高速缓存。
虽然前述示例在一个或多个特定应用中说明了本发明实施例的原理,但是对于本领域普通技术人员来说显而易见的是,可以在不运用发明能力并且不脱离本公开的原理和概念的情况下对实施的形式、使用和细节进行若干修改。

Claims (25)

1.一种用于分配存储器的物理页面的设备,包括:
操作系统(OS)页面分配器;以及
通信接口,其用于将所述OS页面分配器耦合到存储器侧高速缓存并且耦合到与所述存储器侧高速缓存耦合的存储器侧高速缓存监视单元;
其中,所述OS页面分配器能够操作用于;
从所述存储器侧高速缓存监视单元接收反馈;以及
基于从所述存储器侧高速缓存监视单元接收的所述反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
2.如权利要求1所述的设备,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以分配如下的物理页面,所述物理页面避免与增加量的存储器地址折叠相关联的存储器地址范围,其中,所述存储器地址范围是在从所述存储器侧高速缓存监视单元接收的所述反馈中包括的存储器地址折叠信息中识别的。
3.如权利要求1所述的设备,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,从而减少折叠到所述存储器侧高速缓存中的减少的一组存储器地址以及导致的所述存储器侧高速缓存中的存储器地址冲突。
4.如权利要求1所述的设备,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,其中,所述物理页面与存储器地址相关联,并且所述存储器地址存取模式是根据由所述OS页面分配器分配的物理页面的。
5.如权利要求1所述的设备,其中,所述存储器侧高速缓存监视单元被配置为当所述存储器侧高速缓存中的存储器地址折叠量或所述存储器侧高速缓存中的存储器地址冲突数量中的一个或多个超过定义的阈值时,确定修改所述存储器侧高速缓存的一个或多个属性,其中,所述存储器侧高速缓存的一个或多个属性包括所述存储器侧高速缓存的关联属性。
6.如权利要求1所述的设备,其中,从所述存储器侧高速缓存监视单元接收的所述反馈包括所述存储器侧高速缓存的大小的指示和用于所述存储器侧高速缓存的交织方案。
7.如权利要求1所述的设备,其中,从所述存储器侧高速缓存监视单元接收的所述反馈包括用于利用存储在所述存储器侧高速缓存中的数据的应用的存储器地址存取模式。
8.如权利要求1所述的设备,其中,从所述存储器侧高速缓存监视单元接收的所述反馈包括与增加的优先级相关联的应用标识符(ID)或进程ID。
9.如权利要求1所述的设备,其中,从所述存储器侧高速缓存监视单元接收的所述反馈包括以下中的一个或多个:用于所述存储器侧高速缓存的使用信息或实时遥测信息。
10.如权利要求1所述的设备,其中,所述OS页面分配器能够操作用于将所述页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
11.如权利要求1所述的设备,还包括通信地耦合到所述存储器侧高速缓存的非易失性存储器(NVM)。
12.一种能够操作以分配存储器的物理页面的存储器系统,包括:
非易失性存储器(NVM);
通信地耦合到所述NVM的存储器侧高速缓存;
通信地耦合到所述存储器侧高速缓存的存储器侧高速缓存监视单元;以及
操作系统(OS)页面分配器,其能够操作用于:
从所述存储器侧高速缓存监控单元接收反馈;以及
基于从所述存储器侧高速缓存监视单元接收的所述反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
13.如权利要求12所述的系统,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以分配如下的物理页面,所述物理页面避免与增加量的存储器地址折叠相关联的存储器地址范围,其中,所述存储器地址范围是在从所述存储器侧高速缓存监视单元接收的所述反馈中包括的存储器地址折叠信息中识别的。
14.如权利要求12所述的系统,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,从而减少折叠到所述存储器侧高速缓存中的减少的一组存储器地址以及导致的所述存储器侧高速缓存中的存储器地址冲突。
15.如权利要求12所述的系统,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,其中,所述物理页面与存储器地址相关联,并且所述存储器地址存取模式是根据由所述OS页面分配器分配的物理页面的。
16.如权利要求12所述的系统,其中,所述OS页面分配器能够操作用于调整所述页面分配策略以定义在以下一个或多个中分配的物理页面:所述NVM或所述存储器侧高速缓存。
17.如权利要求12所述的系统,其中,从所述存储器侧高速缓存监视单元接收的所述反馈包括用于利用存储在所述存储器侧高速缓存中的数据的应用的存储器地址存取模式。
18.如权利要求12所述的系统,其中,所述OS页面分配器能够操作用于将所述页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
19.如权利要求12所述的系统,其中,所述NVM和所述存储器侧高速缓存位于所述存储器设备中的同一双列直插式存储器模块(DIMM)中。
20.一种用于分配存储器的物理页面的方法,所述方法包括:
在存储器设备中的操作系统(OS)页面分配器处从所述存储器设备中的存储器侧高速缓存监视单元接收反馈,其中,所述存储器侧高速缓存监视单元耦合到所述存储器设备中的存储器侧高速缓存;以及
在所述OS页面分配器处基于从所述存储器侧高速缓存监视单元接收的所述反馈来调整页面分配策略,所述页面分配策略定义由所述OS页面分配器分配的物理页面。
21.如权利要求20所述的方法,还包括:调整所述页面分配策略以分配如下的物理页面,所述物理页面避免与增加量的存储器地址折叠相关联的存储器地址范围,其中,所述存储器地址范围是在从所述存储器侧高速缓存监视单元接收的所述反馈中包括的存储器地址折叠信息中识别的。
22.如权利要求20所述的方法,还包括:调整所述页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,从而减少折叠到所述存储器侧高速缓存中的减少的一组存储器地址以及导致的所述存储器侧高速缓存中的存储器地址冲突。
23.如权利要求20所述的方法,还包括:调整所述页面分配策略以修改用于所述存储器侧高速缓存的存储器地址存取模式,其中,所述物理页面与存储器地址相关联,并且所述存储器地址存取模式是根据由所述OS页面分配器分配的物理页面的。
24.如权利要求20所述的方法,还包括:将所述页面分配策略调整为以下中的一个:随机页面分配策略、大页面分配策略或范围页面分配策略。
25.如权利要求20所述的方法,其中,从所述存储器侧高速缓存监视单元接收的所述反馈包括以下中的一个或多个:
所述存储器侧高速缓存的大小的指示;
用于所述存储器侧高速缓存的交织方案;
用于利用存储在所述存储器侧高速缓存中的数据的应用的存储器地址存取模式;
与增加的优先级相关联的应用标识符(ID)或进程ID;
所述存储器侧高速缓存的使用信息;或
实时遥测信息。
CN201810982166.6A 2017-09-27 2018-08-27 存储器中的动态页面分配 Pending CN109558338A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/717,825 US20190095329A1 (en) 2017-09-27 2017-09-27 Dynamic page allocation in memory
US15/717,825 2017-09-27

Publications (1)

Publication Number Publication Date
CN109558338A true CN109558338A (zh) 2019-04-02

Family

ID=63350465

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810982166.6A Pending CN109558338A (zh) 2017-09-27 2018-08-27 存储器中的动态页面分配

Country Status (3)

Country Link
US (1) US20190095329A1 (zh)
EP (1) EP3462320B1 (zh)
CN (1) CN109558338A (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
US11650742B2 (en) 2019-09-17 2023-05-16 Micron Technology, Inc. Accessing stored metadata to identify memory devices in which data is stored
US10963396B1 (en) 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11200167B2 (en) * 2019-12-10 2021-12-14 Pony Ai Inc. Dynamic memory address encoding
US20200125495A1 (en) * 2019-12-19 2020-04-23 Intel Corporation Multi-level memory with improved memory side cache implementation
US20220206946A1 (en) * 2020-12-28 2022-06-30 Advanced Micro Devices, Inc. Method and apparatus for managing a cache directory
US20230061948A1 (en) * 2021-08-26 2023-03-02 EMC IP Holding Company LLC Based on io pattern influence nfit table for persistence for scm firmware

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7822891B2 (en) * 2006-06-13 2010-10-26 Broadcom Corporation System and method for transferring a multidimensional array of data to a non-contiguous buffer
US7882319B2 (en) * 2007-09-27 2011-02-01 Oracle America Inc. Method and system for memory management
US7844785B2 (en) * 2007-10-22 2010-11-30 Qimonda Ag Method and apparatus for memory access optimization
US20110035540A1 (en) * 2009-08-10 2011-02-10 Adtron, Inc. Flash blade system architecture and method
US9477603B2 (en) * 2013-09-05 2016-10-25 Facebook, Inc. System and method for partitioning of memory units into non-conflicting sets
CN104572493A (zh) * 2013-10-23 2015-04-29 华为技术有限公司 一种存储器资源优化方法和装置
GB2526849B (en) * 2014-06-05 2021-04-14 Advanced Risc Mach Ltd Dynamic cache allocation policy adaptation in a data processing apparatus
US10073787B2 (en) * 2016-04-18 2018-09-11 Via Alliance Semiconductor Co., Ltd. Dynamic powering of cache memory by ways within multiple set groups based on utilization trends

Also Published As

Publication number Publication date
US20190095329A1 (en) 2019-03-28
EP3462320B1 (en) 2023-11-29
EP3462320A1 (en) 2019-04-03

Similar Documents

Publication Publication Date Title
CN109558338A (zh) 存储器中的动态页面分配
US11275696B2 (en) Isolated performance domains in a memory system
TWI614752B (zh) 經由記憶體通道關閉之節電技術
CN103999161B (zh) 用于相变存储器漂移管理的设备和方法
US11868268B2 (en) Mapping non-typed memory access to typed memory access
US10915791B2 (en) Storing and retrieving training data for models in a data center
US11650742B2 (en) Accessing stored metadata to identify memory devices in which data is stored
US11494311B2 (en) Page table hooks to memory types
US10997082B2 (en) Memory system, computing system, and methods thereof for cache invalidation with dummy address space
US10541009B2 (en) Write data mask for power reduction
US11934319B2 (en) Memory system for binding data to a memory namespace
EP3506116A1 (en) Shared memory controller in a data center
EP3534265A1 (en) Memory access technique
CN110322914A (zh) 非易失性文件更新介质
CN110597742A (zh) 用于具有持久系统存储器的计算机系统的改进存储模型
US11216386B2 (en) Techniques for setting a 2-level auto-close timer to access a memory device
WO2016180063A1 (zh) 写请求的处理方法和内存控制器
US20190042137A1 (en) Memory device with separate memory controllers for program/erase and read operations

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