CN115203080A - 避免在低功率下存取相干存储器设备时处理器停止 - Google Patents

避免在低功率下存取相干存储器设备时处理器停止 Download PDF

Info

Publication number
CN115203080A
CN115203080A CN202210226089.8A CN202210226089A CN115203080A CN 115203080 A CN115203080 A CN 115203080A CN 202210226089 A CN202210226089 A CN 202210226089A CN 115203080 A CN115203080 A CN 115203080A
Authority
CN
China
Prior art keywords
memory
memory device
page table
low power
interface
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
CN202210226089.8A
Other languages
English (en)
Inventor
J·A·博伊德
C·E·考克斯
N·塔尔帕里卡
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 CN115203080A publication Critical patent/CN115203080A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F1/00Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
    • G06F1/26Power supply means, e.g. regulation thereof
    • G06F1/32Means for saving power
    • G06F1/3203Power management, i.e. event-based initiation of a power-saving mode
    • G06F1/3234Power saving characterised by the action undertaken
    • G06F1/325Power saving in peripheral device
    • G06F1/3275Power saving in memory, e.g. RAM, cache
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3058Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations
    • G06F11/3062Monitoring arrangements for monitoring environmental properties or parameters of the computing system or of the computing system component, e.g. monitoring of power, currents, temperature, humidity, position, vibrations where the monitored property is the power consumption
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/32Monitoring with visual or acoustical indication of the functioning of the machine
    • G06F11/324Display of status information
    • 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
    • G06F12/0882Page 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/0891Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches using clearing, invalidating or resetting 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/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1027Address translation using associative or pseudo-associative address translation means, e.g. translation look-aside buffer [TLB]
    • 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/1081Address translation for peripheral access to main memory, e.g. direct memory access [DMA]
    • 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
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash 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/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/68Details of translation look-aside buffer [TLB]
    • G06F2212/683Invalidation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • 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)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

具有利用相干存取管理的存储器的存储器子系统可以管理页表条目以使得能够将存储器置于低功率状态。存储器控件可以在触发存储器进入低功率状态之前改变存储器的页表条目。对页表条目的改变将导致对存储器的后续存取的页故障。页故障将触发利用故障例程处理对存储器的存取,从而避免正常存取时会发生的存储器同步延迟。

Description

避免在低功率下存取相干存储器设备时处理器停止
技术领域
描述总体上涉及计算机系统,并且更具体地,描述涉及避免在存取相干存储器设备时使处理器停止。
背景技术
通过PCIe(快速外围组件互连)或NVMe(快速非易失性存储器)连接的设备具有低功率链路状态,并且可以在系统活动时进入低功率状态。PCIe传统上是非相干的并由主机驱动器管理,其中设备驱动器可以在断电时处理发送给设备驱动器的I/O(输入/输出)动作。可替代地,I/O动作可以由总线在硬件中自动转换回来进行处理。退出低功率状态(无论是链路状态还是设备状态)典型地会导致延时,但延时在传统上不会影响主机处理器在存储器非相干时处理其他活动或处理中断。链路的非相干性质使动作能够异步或以非阻塞方式处理。
相干存储器从低功率状态唤醒以处理I/O动作将导致主机处理器处的停止。CXL(快速计算链路)是一种基于PCIe的协议,并且定义了CXL.mem接口用于相干存储器连接。利用CXL.mem或另一相干存储器互连,存储器接口是相干的。主机处理器等待对相干存储器的I/O动作的完成。
如果允许相干存储器进入低功率状态,则这可能使主机处理器停止,这可能使系统性能恶化。减少延时的一种机制是不允许存储器进入可能导致主机处理器停止的低功率状态。然而,防止相干存储器进入低功率状态可以降低延时影响,但代价是增加能量使用。相干存储器的“永远在线”性质会浪费大量能量,从而导致较低的系统电池寿命。浪费的能量还可能导致无法满足能量合规规定。
附图说明
以下描述包括对附图的讨论,这些附图具有通过实现方式示例的方式给出的说明。应通过示例而非限制性的方式理解附图。如本文所使用的,对一个或多个示例的引用将被理解为描述被包括在本发明的至少一种实现方式中的特定特征、结构或特性。本文出现的诸如“在一个示例中”或“在替代示例中”之类的短语提供了本发明的实现方式的示例,并且不一定全部指代相同的实现方式。然而,这些短语也不一定是相互排斥的。
图1是具有相干存储器的多级存储器系统的示例的框图,该相干存储器可以被置于低功率状态而不会使主机处理器停止。
图2是可以在将相干存储器置于低功率状态之前改变页表条目的系统的示例的框图。
图3是用于将相干存储器置于低功率的过程的示例的流程图。
图4是用于从低功率唤醒相干存储器的过程的示例的流程图。
图5是其中可以实现相干低功率状态管理的存储器子系统的示例的框图。
图6是其中可以实现相干低功率状态管理的计算系统的示例的框图。
图7是其中可以实现相干低功率状态管理的移动设备的示例的框图。
以下是对某些细节和实现方式的描述,包括对附图的非限制性描述,这些描述可以描绘一些或所有示例,以及其他潜在的实现方式。
具体实施方式
如本文所描述的,存储器子系统可以管理页表条目以使得能够将存储器置于低功率状态,该存储器子系统具有利用相干存取管理的存储器。存储器控件可以在触发存储器进入低功率状态之前改变存储器的页表条目。存储器控件可以包括主机操作系统(OS)的存储器管理器和存储器驱动器。对页表条目的改变将导致对存储器的后续存取的页故障。页故障将触发利用故障例程处理对存储器的存取,从而避免正常存取时会发生的存储器同步延迟。
包括相干存储器的系统通常是辅助存储器或补充存储器,而不是主系统存储器。因此,如果相干存储器是多级存储器(MLM)系统中的第二层存储器,或者是用于NUMA(非统一存储器存取)架构节点的远程存储器,则很可能有时系统正在存取主存储器且相干存储器设备未被利用。因此,可能存在触发设备进入低功率状态是有意义的时段。MLM系统指代具有主要存储器作为近存储器和辅助存储器作为远存储器的系统,其中近存储器存取比远存储器存取更快(具有较低延时)。NUMA架构指代具有多于一个存储器总线的系统,并且到远程存储器的跳跃涉及跨存储器总线边界。因此,远程存储器比本地存储器具有更高的延时(更慢的存取)。
在任一种情况下,在给定工作负载需求的情况下,可能并不总是利用相干存储器,从而允许相干存储器有机会进入低功率模式。对相干存储器页表条目的管理可以允许相干存储器进入低功率状态而不影响系统性能。如本文所描述的,当主机不使用相干存储器地址范围时,系统可以在系统活动时降低设备功率。在一个示例中,OS可以例如通过存储器管理器或操作系统的驱动器在页表条目的无效之后使相干存储器进入低功率状态。在页表条目无效的情况下,系统将触发页故障例程,而不是使处理器停止以等待设备从低功率状态唤醒。处理器的停止可能以其他方式导致CPU(中央处理单元)超时、硬件错误、OS崩溃或其他系统错误情况。
与等待设备唤醒相反,主机处理器可以继续处理其他线程或其他进程或中断,如果等待相干存储器存取完成,则主机处理器将无法执行这些操作。在主机处理器执行其他任务期间,相干存储器可以从低功率状态唤醒并处理来自主机处理器的存储器I/O动作。
因此,相干存储器可以利用低功率状态而不直接影响主机处理器。允许低功率状态的能力可以提供能耗的显著降低,这可以延长设备的电池寿命。使用低功率状态的能力可以使得能够在具有严格规章要求的平台上支持CXL(快速计算链路,由CXL联盟注册商标),否则该平台可能无法支持CXL。CXL可以指代最初由CXL联盟于2020年11月发布的CXL2.0规范,或者目前正在讨论中的CXL 3.0规范。
利用在将存储器设备置于低功率状态之前改变页表的能力,系统例如通过OS具有对诸如具有CXL.mem接口的存储器之类的相干设备进行功率管理的能力。在一个示例中,对页表的改变是使页表内的引用无效而不从页表中移除该引用。对休眠的相干设备的请求将导致故障,这将触发故障例程以获得无效参考。
图1是具有相干存储器的多级存储器系统的示例的框图,该相干存储器可以被置于低功率状态而不使主机处理器停止。系统100具体示出了可以执行相干设备的功率管理的多级存储器系统。
SOC 110表示处理器管芯或处理器SOC封装的示例。SOC 110包括处理器112,该处理器112可以包括用于执行指令的完成的一个或多个核心120(即,单核心处理器或多核心处理器)。在一个示例中,核心120包括处理器侧高速缓存122,该处理器侧高速缓存122包括高速缓存控制电路和高速缓存数据存储装置。高速缓存122可以表示处理器侧的任何类型的高速缓存。在一个示例中,单个核心120包括不与其他核心共享的本地高速缓存资源122。在一个示例中,多个核心120共享高速缓存资源122。
在一个示例中,SOC 110包括用于互连处理器系统的组件的系统结构130。系统结构130可以是或包括在处理器112、外围控件132、一个或多个存储器控制器(例如,用于管理对主存储器190的存取的集成存储器控制器(iMC)150和用于管理对辅助存储器170的存取的iMC 140)、I/O控件(未具体示出)、图形子系统(未具体示出)或其他组件之间的互连。系统结构130使得能够在组件之间交换数据信号。虽然系统结构130通常被示为连接组件,但是将理解的是,系统100不一定示出所有组件互连。系统结构130可以表示一个或多个网格连接、中央交换机构、环形连接、结构层级或其他互连拓扑。
在一个示例中,SOC 110包括用于连接到在SOC 110外部的外围组件或设备的一个或多个外围控件132。在一个示例中,外围控件132表示到平台控制器160的硬件接口,该硬件接口包括一个或多个组件或电路,这些组件或电路用于控制硬件平台或系统100的系统板或母板中的互连以将外围设备互连到处理器112。外围设备由组件162表示。组件162表示经由平台控制器160耦合到处理器112的任何类型的芯片或接口或硬件元件。
在一个示例中,SOC 110具有其上设置有SOC的组件的公共基板或板。例如,SOC110的组件可以是或包括安装在公共板或基板上的分立组件。在一个示例中,SOC 110的组件可以是或包括构造在同一半导体基板上的电路。在一个示例中,SOC 110的组件可以包括公共半导体基板上的多个组件,以及安装到半导体基板上或与公共板上的公共半导体基板一起安装的一个或多个附加组件。
在一个示例中,SOC 110包括iMC 150,该iMC 150表示用于连接到主存储器190并管理对主存储器190的存取的控制逻辑。iMC 150可以包括硬件电路和软件或固件控制逻辑。在一个示例中,SOC 110包括iMC 140,该iMC 140表示用于连接和控制对辅助存储器170的存取的控制逻辑。辅助存储器170表示与主存储器190相比具有更长的存取延时的一个或多个存储器设备。辅助存储器170可以可替代地称为后备存储器。iMC 140可以包括硬件电路和软件或固件控制逻辑。在一个示例中,iMC 140可以集成到处理器112中。在一个示例中,iMC 150可以集成到处理器112中。在一个示例中,iMC 140是由iMC 150表示的存储器控制器的控制逻辑的一部分或子集。
在一个示例中,系统100包括经由平台控制器160耦合到SOC 110的NVM(非易失性介质)180。NVM 180表示非易失性存储器,该NVM 180包括介质182(其为NVM介质)和用于控制对介质182的存取的控制器184。在一个示例中,NVM 180是通过外围连接(例如,PCIe(快速外围组件互连)或NVMe(快速非易失性存储器))耦合到SOC 110的存储器设备。PCIe可以符合最初由PCI-SIG于2017年10月发布的PCI Express Base Specification Revision4.0、最初由PCI-SIG于2019年5月发布的PCI Express Base Specification Revision 5.0或其变型。NVMe可以符合最初由NVM Express公司于2019年6月发布的NVMe Express BaseSpecification或其变型。
在一个示例中,系统100包括提供主要系统存储器的主存储器190。主存储器190典型地包括以易失性方式存储数据的易失性介质196。在一个示例中,主存储器190包括NVM介质192和控制器194,该控制器194用于控制对NVM介质192或易失性介质196的存取或者用于控制对NVM介质192和易失性介质196两者的存取。控制器194表示存储器侧的控制器,其用于响应于接收到命令或I/O(输入/输出)操作而管理存储器上的操作。
在一个示例中,辅助存储器170包括由相干接口管理的字节可寻址非易失性存储器。在一个示例中,iMC 140经由CXL.mem接口(例如,CXL高速缓存/存储器协议接口(CPI)标准(例如,CXL 2.0或CXL 3.0))连接到辅助存储器170。介质172表示辅助存储器170的存储介质。控制器174表示存储器侧的控制器,其用于响应于接收到命令或I/O操作而管理存储器上的操作。
系统100的多级存储器系统可以以多种方式中的任一种来配置,这取决于包括哪些存储器资源以及这些存储器资源如何被使用。并非系统100的每一种实现方式都将包括所示出的所有存储器类型。系统100示出了可以在多级系统中使用的存储器的不同的可能变型。
在一个示例中,对NVM介质引用可以指代块可寻址存储器设备或字节可寻址存储器设备,例如,三维交叉点存储器设备、其他非易失性存储器设备。在一个示例中,NVM介质可以包括基于存储器单元的电阻状态或存储器单元的相位来存储数据的非易失性、块可寻址或字节可寻址的介质。在一个示例中,存储器设备可以使用硫属化物相变材料(例如,硫属化物玻璃)。在一个示例中,存储器设备可以是或包括单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)存储器、或自旋转移矩(STT)-MRAM,或上述存储器中的任一种的组合,或其他存储器。
通常,当系统100中的辅助存储器170用作上级存储器或二级存储器(例如,2LM实现方式)时,系统100主要将数据存储在主存储器190中,并且辅助存储器170可以用于扩展系统存储器的存储容量,这与主存储器190相比,可能具有较慢的存取时间或较长的延时。
在一个示例中,辅助存储器170表示NVDIMM(非易失性双列直插式存储器模块),该NVDIMM包括与系统存储器总线接合的非易失性介质。NVDIMM可以包括任何类型的字节可寻址或块可寻址介质。在一个示例中,辅助存储器170表示三维交叉点(3DXP)存储器设备。在一个示例中,辅助存储器170表示OPTANE DIMM。Optane是Intel公司的注册商标。Optane包括可以在系统总线上作为字节可寻址存储器被存取的存储器。
如上面所陈述的,在一个示例中,辅助存储器170可以通过相干CXL.mem接口或其他相干接口与SOC 110接合。处理器112可以表示计算设备的CPU(中央处理单元)。CPU MOV指令或SFENCE将导致处理器等待来自相干CXL.mem设备的数据或数据提交。在等待这些指令的完成时,CPU核心120不能处理中断。因此,如果处理器112将负载或SFENCE发出给辅助存储器170(其作为处于低链路状态(例如,具有高退出延时的链路状态)、低设备功率状态(包括D3状态或其他低功率状态)的相干设备),则处理器112将传统上停止或遇到运行时错误。较浅的设备状态(例如,具有低延时退出的状态)不会导致由处理器112进行的同步存取的停止,并且将保持或唤醒以处理来自处理器112的请求。
在一个示例中,处理器112执行存储器管理器(MEM MGR)128作为主机OS的一部分。在一个示例中,处理器112执行存储器驱动器(MEM DRVR)124。存储器管理器128和存储器驱动器124提供针对相干存储器设备的存储器控件。存储器驱动器124表示由处理器112执行以管理存储器的硬件接口的驱动器或软件。在一个示例中,存储器驱动器124包括用于与作为相干存储器设备的辅助存储器170接合的控制逻辑。处理器112包括驱动器(DRVR)126,该驱动器126表示由处理器112执行的一个或多个其他设备驱动器。驱动器126可以表示针对系统100中另一相干设备的驱动器。
在一个示例中,存储器管理器128和存储器驱动器124管理相干设备或相干设备链路的低功率状态。更具体地,存储器控件可以改变用于辅助存储器170(或系统100的其他相干存储器)的地址空间的页表条目。改变页表条目可以触发页故障,处理器112对针对辅助存储器170的后续请求进行故障处理。与同步等待辅助存储器170唤醒和处理请求相反,处理器112可以基于故障处理来异步等待辅助存储器170唤醒。这种操作可以在辅助存储器170唤醒时释放处理器112以执行其他操作,这将避免使处理器停止。
在一个示例中,存储器管理器128可以确定相干辅助存储器170的低功率状态的预期延时。在一个示例中,存储器管理器128确定唤醒延时是否超过可配置阈值。在一个示例中,对于唤醒延时小于阈值的状态,存储器管理器128可以允许辅助存储器170正常进入和退出低功率状态。如果唤醒延时超过阈值,则存储器管理器128可以通过触发用于唤醒设备的页故障来对低功率状态进行功率管理。
图2是可以在将相干存储器置于低功率状态之前改变页表条目的系统的示例的框图。系统200表示根据系统100的示例的系统。系统200示出了标记为CPU 210的多个CPU核心。CPU或CPU核心对存储器240进行存取,该存储器240表示具有用于存取的相干接口的存储器。
仅示出了一个CPU 210的细节。其他CPU可以具有与该一个CPU的详细视图中所示的相同或相似的组件。在一个示例中,CPU 210执行一个或多个应用(APP)实例212。应用实例212可以包括生成针对存储在存储器240上的数据的请求的任何应用。应用实例212可以通过API(应用编程接口)214进行资源请求,例如,对存储器240进行存取的请求。
在一个示例中,由应用实例212利用API 214进行的请求导致驱动器216的一个或多个实例。驱动器216可以包括用于用户数据的用户模式驱动器和用于系统信息的内核模式驱动器。驱动器216可以管理对存储器240的存取,包括从低功率设备状态或低功率链路状态存取。CPU 210可以通过总线230通信地耦合到存储器240。总线230表示在CPU 210与存储器240之间的高速通信连接。
存储器240可以存储用于应用实例212或者用于操作系统(OS)220或者OS的组件或代理的数据。存储器240可以存储用于在CPU 210内执行操作的操作代码和数据资源。操作代码和数据资源指代CPU 210需要访问以执行应用或OS 220的数据和代码。OS 220提供包括系统硬件接口管理和驱动器的软件平台,以允许在OS下运行的应用访问计算环境的硬件资源。驱动器216表示在OS下执行的驱动器。在一个示例中,OS 220包括存储器管理器(MGR)222,该存储器管理器222用于管理存储器240的状态。存储器管理器222可以通过处理接口来确定对存储器240的存取何时可以进入低功率状态以防止CPU 210的停止。
在一个示例中,存储器240包括存储器接口242。在一个示例中,存储器接口242是CXL.mem接口。作为相干存储器设备,CPU 210将在执行其他操作之前等待存储器完成I/O操作。存储器240的控制器244表示存储器设备的控制器,其用于管理存储器设备本地的操作。阵列246表示存储器240的存储阵列。在一个示例中,阵列246提供字节可寻址存储器。在一个示例中,阵列246表示易失性存储器。在一个示例中,阵列246表示非易失性存储器。
CPU 210的页表224表示由OS 220管理(例如,由文件系统或存储器管理器222管理)的信息,以指示存储在存储器中的数据和代码的位置。更具体地,页表224指示存储器中的数据的状态。页表可以指示对数据的引用是否可用以及数据是否可用或者是否需要针对数据刷新存取描述符。
TLB(转换后备缓冲器)226表示用于为OS和CPU 210的应用提供地址转换的逻辑。转换可以指示针对OS中的数据的处理如何映射到存储器240的地址空间。在一个示例中,转换可以包括到所请求数据的物理地址的映射。TLB 226可以执行针对虚拟存储器引用的转换。
在一个示例中,驱动器216包括用于管理对相干存储器240的存取的存储器驱动器。在一个示例中,在触发存储器240进入低功率状态之前,存储器管理器222可以改变页表224。在一个示例中,在存储器管理器222没有首先确定是否需要修改页表的情况下,驱动器216不会将存储器240置于低功率状态。
对于以下示例,CXL.mem将用作相干存储器接口的示例。应当理解,这些示例仅用于说明的目的,并且相干接口不限于CXL.mem。在一个示例中,OS 220通过存储器管理器222和驱动器216可以确定是否需要管理CX1.mem低功率状态。
在一个示例中,存储器管理器222确定低功率状态是否满足给定的退出延时标准。如果低功率状态满足延时标准,则存储器管理器222可以允许存储器240正常进入和退出该状态。因此,存储器240将经由PCIe/CXL存取唤醒,而不对页表224进行任何改变。
在一个示例中,存储器管理器222确定低功率状态是否具有系统200不可接受的退出延时,因为这可能导致CPU 210的停止。在一个示例中,对于D3状态或其他“关闭”状态,存储器管理器222总是确定退出延时是不可接受的。对于导致不希望的CPU延迟的这种设备状态,存储器管理器222可以在将存储器240置于低功率状态之前改变页表224中的条目。
通常,对页表224的改变可以被认为做出这样的改变:该改变将响应于对存储器240的后续存取而触发或生成故障。在一个示例中,存储器管理器222使页表224中的条目无效,然后将存储器240置于低功率状态。在条目无效的情况下,将不会对存储器240的地址范围进行转换,从而触发页故障。存储器管理器222然后可以调用页故障处理程序,从而允许同步接口的异步操作。可以在不从页表224中移除条目的情况下执行使页表224中的条目的无效。
在一个示例中,存储器管理器222确定存储器240已经空闲了至少阈值时段,并且确定使存储器240进入低功率状态。阈值时段可以是由OS策略设置的时段。在一个示例中,时段是可配置的。对于不同的设备和系统配置,时段可以不同。典型地,软件或驱动器看不到存储器业务。在一个示例中,驱动器216经由管理接口周期性地轮询或查询存储器240(例如,设备报告自上次存储器存取以来的时间)以确定存储器已经空闲了多长时间。
在一个示例中,存储器管理器222检查CXL.mem HPA(主机物理地址)范围中的任何页是否被锁定。例如,出于DMA(直接存储器存取)或其他目的,这些页可以被锁定。在一个示例中,如果任何页被锁定,则存储器管理器222将中止低功率进入并使设备处于较高功率状态。在这种情况下,可以允许较浅的低功率状态,而不允许较深的低功率状态。
在一个示例中,存储器管理器222使页表224中的CXL.mem HPA页表无效。在一个示例中,存储器管理器222仅使条目无效而不破坏这些条目。在一个示例中,存储器管理器222针对与TLB226中的无效地址相对应的地址执行TLB击落。在一个示例中,系统200在系统存储器中维护第一层或第一级页表条目。在一个示例中,OS通过存储器管理器222清除表中的当前位。通过清除“当前”位,如果存储器地址空间被引用,则系统会强制故障。该引用与CPU210对存储器240的地址空间的后续存取请求一起发生。
在一个示例中,存储器管理器222编辑一个或多个页表条目(PTE)。在一个示例中,页表224表示页表层级的最后一级,该最后一级给出最终物理地址和用于存储器存取的地址的标志。例如,标志可以包括用于有效位的标志。使PTE无效可以允许地址保留在页表224中,从而维持页的物理地址映射。使页无效不会移除映射和要求生成映射,而只是使映射无效,这可以在设备从低功率唤醒后再次使其有效以允许存取。
OS存储器管理器可以具有显式策略(例如,从系统启动)来管理多级存储器的第一层存储器中的CXL.mem的所有页表的第一级。因此,例如,系统可以在系统存储器(例如,系统100的系统存储器190)中维护页表224。主机存储器中的第一级可以确保不存取存储器240,以检查表导致存取CXL.mem HPA。在改变页表224之后,存储器管理器222可以指示存储器240进入低功率(例如,链路状态、设备状态、D3)。在一个示例中,OS 220将CXL.mem对象的状态保存为处于低功率以供将来引用。
在一个示例中,为了在对存储器地址范围进行后续存取或下一次存取时将存储器240从低功率状态唤醒,驱动器216可以引用在低功率状态下映射到存储器240的HPA的CXL.mem虚拟地址。在没有对HPA进行有效转换的情况下,引用将导致故障。在一个示例中,清除第一级页表条目的当前位将使得对地址范围的引用导致故障。在一个示例中,无转换和清除或重置当前位的组合将触发故障。该故障将在指令在CPU 210上执行之前发生,这将防止CPU 210停止。导致故障的地址将不会被执行,直到故障被处理为止。因此,CPU 210可以继续其他工作或处理中断。在一个示例中,CPU 210对具有故障处理的其他操作进行时间切片。
在一个示例中,故障处理程序检查低功率状态标志。状态标志可以由OS存储器管理器保存,从而保存标志并管理在系统存储器的第一层中的数据。在一个示例中,如果设备未处于低功率,则存储器管理器可以为页表224提供页表更新服务。这样的过程可以根据正常的页表服务操作来执行。
在一个示例中,如果设备处于低功率状态,则存储器管理器222的故障处理程序请求驱动器216唤醒存储器240。在一个示例中,如果存储器240处于D3状态或其他断电状态,则驱动器216(CXL.mem驱动器或总线驱动器(针对总线230的驱动器))调用ACPI(高级配置和电源接口)方法以使平台恢复对存储器240的电力。在恢复对存储器240的电力之后,存储器管理器222将PMCSR(功率管理控制和状态寄存器)设置为活动状态。在一个示例中,结合将存储器240设置为活动状态,存储器管理器222可以将断电状态的设备重新枚举为活动状态(例如,D3到D0转换)。一旦完全通电,在解码器和接口硬件重新初始化的情况下,系统可以向CPU 210通知故障,以允许CPU 210执行故障异常处理。
在一个示例中,如果存储器240处于非常低功率链路状态或非常低功率设备状态但没有断电,则驱动器216可以发出显式管理唤醒命令。例如,驱动器216可以发出无操作或导致中断完成的任何管理命令。故障处理或其他管理被理解为异步管理接口。
异步管理接口的触发使操作脱离相干接口的预期同步行为。异步管理接口的示例可以是启用MSI-X(消息信号中断扩展)的CXL管理处理。利用异步管理命令接口,故障处理程序(例如,经由CXL驱动器)可以请求管理命令并让渡控制,直到经由中断通知操作完成为止。中断可以触发CPU再次对存储器240进行存取。
响应于中断,存储器240将被假定为完全唤醒、具有活动链路、活动设备电源、活动接口等。然后存储器240将准备好服务请求。在一个示例中,故障处理事件被设置,并且存储器管理器故障处理的其余部分发生。在一个示例中,驱动器216向CPU 210指示故障异常已经被处理并且CPU可以继续处理存储器存取。
上面提到了针对DMA锁定的页。应当理解,当CPU 210生成存取时,引用触发异步操作的故障处理起作用。然而,DMA通常不生成故障。因此,在一个示例中,如果页被映射到针对CXL设备的DMA,则系统200不允许CXL设备进入低功率状态。系统200可以禁止对CXL设备的DMA存取,或者可以允许针对CXL设备的DMA,但不允许将CXL设备置于低功率状态。
DMA引擎典型地使得设备自然唤醒,并且在DMA引擎内存在超时。如果花费太长时间唤醒,则退出延时过长的设备可能会导致DMA失败。DMA动作不是CPU阻塞事件;因此,DMA动作将增加延时,而不会在DMA引擎超时窗口内的退出延时期间使CPU停止。在典型的CXL操作中,OS完全控制对CXL.mem HPA范围的存取,其中OS隐藏CXL.mem以供专有用途以使整个系统受益。因此,去往和来自地址范围的内容可以由OS和存储器管理器自行决定。
图3是用于将相干存储器置于低功率的过程的示例的流程图。过程300表示将存储器或其他相干设备置于低功率状态的过程。过程300表示可以由根据系统200的系统执行的过程。
操作被示为由存储器管理器或主机操作系统的其他组件、驱动器和存储器设备执行。在一个示例中,存储器管理器可以被分成不同的组件,其中不同的操作可以由存储器管理器内的不同的组件来执行。在一个示例中,针对存储器管理器示出的一个或多个组件可以由驱动器或其他系统组件执行。
在一个示例中,存储器管理器在302处确定存储器是否已经达到空闲阈值。在一个示例中,如果尚未达到空闲阈值,则在304处的否分支,操作可以在306处返回到开始,进行到处理操作的结束。在一个示例中,如果已经达到阈值,则在304处的是分支,存储器管理器在308处确定存储器的任何页是否被锁定。
在一个示例中,如果存在锁定页,则在310处的是分支,存储器管理器可以在312处返回到开始,进行到处理操作的结束。在一个示例中,如果没有页被锁定,则在310处的否分支,存储器管理器在314处改变页表条目以使条目无效。然后在316处,驱动器可以向存储器设备发送命令以进入低功率状态。
主机(存储器管理器和驱动器)将完成用于将存储器置于低功率状态的操作。在318处,存储器从驱动器接收断电或低功率命令。然后在320处,存储器可以根据该命令进入低功率状态。
图4是用于从低功率唤醒相干存储器的过程的示例的流程图。过程400表示将存储器或其他相干设备从低功率状态唤醒的过程。过程400表示可以由根据系统200的系统执行的过程。
操作被示为由存储器管理器或主机操作系统的其他组件、驱动器和存储器设备执行。在一个示例中,存储器管理器可以被分成不同的组件,其中不同的操作可以由存储器管理器内的不同的组件来执行。在一个示例中,针对存储器管理器示出的一个或多个组件可以由驱动器或其他系统组件执行。
在一个示例中,存储器管理器在402处从主机处理器接收用于存取处于低功率状态的相干存储器的请求。在一个示例中,如果存取没有导致页故障,则在404处的否分支,在一个示例中,存储器管理器可以在406处返回到开始,进行到处理操作的结束。如果存取导致页故障,则在404处的是分支,在一个示例中,存储器管理器可以在408处检查设备状态。
如果设备状态是活动状态,则在410处的是分支,在一个示例中,存储器管理器在412处执行正常故障处理以解决故障。正常故障处理然后可以执行其操作并进行到处理的结束。如果存储器设备不处于活动状态,则在410处的否分支,在一个示例中,存储器管理器确定该设备是否处于非常低功率状态或仅处于低功率状态。
如果设备不处于非常低功率状态(意味着该设备仅处于低功率状态),则在414处的否分支,在一个示例中,驱动器在416处发出导致中断完成的命令。中断完成指代利用故障处理程序处理存取,这允许设备有足够的时间从低功率状态唤醒。然后处理可以在412进行到正常故障处理。
如果设备处于非常低功率状态,则在414处的是分支,在一个示例中,驱动器在418处执行功率管理操作以将存储器从断电或非常低功率状态唤醒。在一个示例中,驱动器在420处向存储器发出命令,存储器接收该命令以从低功率状态唤醒。当驱动器已经向存储器发出命令时,处理可以在412进行到正常故障处理。
图5是其中可以实现相干低功率状态管理的存储器子系统的示例的框图。系统500包括处理器和计算设备中的存储器子系统的元件。系统500是根据系统100或系统200的示例的系统的示例。
在一个示例中,系统500包括CXL控件590,该CXL控件590表示存储器设备540的相干实现方式的功率管理控件。CXL控件590可以表示根据上面描述的任何示例的存储器管理器和存储器驱动器。CXL控件590可以管理页表以引起对存储器设备540的后续存取以触发页故障。因此,可以通过故障例程来处理存储器存取。根据本文中的任何示例,在改变页表之后,CXL控件590可以触发存储器设备540进入低功率状态。
处理器510表示可以执行操作系统(OS)和应用的计算平台的处理单元,其可以统称为主机或存储器的用户。OS和应用执行导致存储器存取的操作。处理器510可以包括一个或多个单独的处理器。每个单独的处理器可以包括单个处理单元、多核心处理单元或其组合。处理单元可以是诸如CPU(中央处理单元)之类的主要处理器、诸如GPU(图形处理单元)之类的外围处理器或其组合。存储器存取也可以由诸如网络控制器或硬盘控制器之类的设备发起。此类设备可以与一些系统中的处理器集成,或经由总线(例如,快速PCI)附接到处理器,或其组合。系统500可以被实现为SOC(片上系统),或利用独立组件实现。
对存储器设备的引用可以应用于不同的存储器类型。存储器设备通常指代易失性存储器技术。易失性存储器是一种这样的存储器:如果到设备的电力被中断,则其状态(以及因此存储在其中的数据)是不确定的。非易失性设备指代一种这样的存储器:即使到设备的电力被中断,其状态也是确定的。动态易失性存储器要求刷新存储在设备中的数据以维持状态。动态易失性存储器的一个示例包括DRAM(动态随机存取存储器)或诸如同步DRAM(SDRAM)之类的一些变型。如本文所描述的存储器子系统可以与多种存储器技术兼容,例如,DDR4(双倍数据速率版本4,JESD79-4,最初由JEDEC(联合电子器件工程委员会,现为JEDEC固态技术协会)于2012年9月发布)、LPDDR4(低功率DDR版本4,JESD209-4,最初由JEDEC于2014年8月发布)、WIO2(宽IO2)、JESD229-2(最初由JEDEC于2014年8月发布)、HBM(高带宽存储器DRAM,JESD235A,最初由JEDEC于2015年11月发布)、DDR5(DDR版本5,最初由JEDEC于2020年7月发布)、LPDDR5(LPDDR版本5,JESD209-5,最初由JEDEC于2019年2月发布)、HBM2(HBM版本2,JESD235C,最初由JEDEC于2020年1月发布)或HBM3(HBM版本3,当前由JEDEC正在讨论),或其他存储器技术或这些存储器技术的组合,以及基于这样的规范的派生物或扩展的技术。
除了易失性存储器或作为易失性存储器的替代,在一个示例中,存储器模块可以是持久存储器DIMM或非易失性系统存储器,指代连接到系统存储器总线的非易失性存储器。这样的存储器设备可以包括三维交叉点(3DXP)存储器设备。3DXP可以作为字节可寻址非易失性存储器设备或块可寻址非易失性存储器设备操作。存储器设备可以包括基于存储器单元的电阻状态或存储器单元的相位来存储数据的非易失性、字节可寻址介质或块可寻址介质。在一个示例中,存储器设备可以使用硫属化物相变材料(例如,硫属化物玻璃)。在一个示例中,存储器设备可以是或包括用于持久随机存取存储器的NAND闪速存储器、用于持久随机存取存储器的NOR闪速存储器、单级或多级相变存储器(PCM)或具有开关的相变存储器(PCMS)、电阻式存储器、纳米线存储器、铁电晶体管随机存取存储器(FeTRAM)、结合忆阻器技术的磁阻随机存取存储器(MRAM)存储器、或自旋转移矩(STT)-MRAM,或上述存储器中的任一种的组合,或其他存储器。
存储器控制器520表示用于系统500的一个或多个存储器控制器电路或设备。存储器控制器520表示响应于处理器510执行操作而生成存储器存取命令的控制逻辑。存储器控制器520存取一个或多个存储器设备540。存储器设备540可以是根据上面引用的任何内容的DRAM设备。在一个示例中,存储器设备540被组织和管理为不同的通道,其中每个通道耦合到总线和信号线,总线和信号线并行耦合到多个存储器设备。每个通道可独立操作。因此,每个通道都是独立存取和控制的,并且针对每个通道的时序、数据传送、命令和地址交换以及其他操作都是独立的。耦合可以指代电耦合、通信耦合、物理耦合或这些耦合的组合。物理耦合可以包括直接接触。电耦合包括接口或互连,接口或互连允许组件之间的电气流动,或允许组件之间的信号传输,或允许这两者。通信耦合包括使组件能够交换数据的连接,包括有线或无线连接。
在一个示例中,针对每个通道的设置由单独的模式寄存器或其他寄存器设置控制。在一个示例中,每个存储器控制器520管理单独的存储器通道,但是系统500可以被配置为具有由单个控制器管理的多个通道,或者在单个通道上具有多个控制器。在一个示例中,存储器控制器520是主机处理器510的一部分,例如,在与处理器相同的管芯上实现或在与处理器相同的封装空间中实现的逻辑。
存储器控制器520包括用于耦合到存储器总线(例如,如上面所引用的存储器通道)的I/O接口逻辑522。I/O接口逻辑522(以及存储器设备540的I/O接口逻辑542)可以包括引脚、焊盘、连接器、信号线、迹线或电线,或用于连接设备的其他硬件,或其组合。I/O接口逻辑522可以包括硬件接口。如所示的,I/O接口逻辑522至少包括用于信号线的驱动器/收发机。通常,在集成电路接口内的电线与焊盘、引脚或连接器耦合,以接合在设备之间的信号线或迹线或其他电线。I/O接口逻辑522可以包括驱动器、接收机、收发机或终端,或其他电路装置或电路装置的组合,以在设备之间的信号线上交换信号。信号交换包括发送或接收中的至少一种。虽然示为将I/O 522从存储器控制器520耦合到存储器设备540的I/O542,但应理解,在并行存取存储器设备540的组的系统500的实现方式中,多个存储器设备可以包括I/O接口,该I/O接口到存储器控制器520的相同接口。在包括一个或多个存储器模块570的系统500的实现方式中,I/O 542除了存储器设备本身上的接口硬件之外还可以包括存储器模块的接口硬件。其他存储器控制器520将包括到其他存储器设备540的单独接口。
在存储器控制器520与存储器设备540之间的总线可以被实现作为将存储器控制器520耦合到存储器设备540的多条信号线。总线典型地可以至少包括时钟(CLK)532、命令/地址(CMD)534以及写入数据(DQ)和读取数据(DQ)536,以及零条或多条其他信号线538。在一个示例中,在存储器控制器520与存储器之间的总线或连接可以称为存储器总线。在一个示例中,存储器总线是多点总线。用于CMD的信号线可以称为“C/A总线”(或ADD/CMD总线,或指示传送命令(C或CMD)和地址(A或ADD)信息的某种其他名称),并且用于写入和读取DQ的信号线可以称为“数据总线”。在一个示例中,独立通道具有不同的时钟信号、C/A总线、数据总线和其他信号线。因此,系统500可以被认为具有多条“总线”,因为独立的接口路径可以被认为是单独的总线。应当理解,除了明确示出的线之外,总线还可以包括选通信令线、警报线、后备线或其他信号线中的至少一种或其组合。还应当理解,串行总线技术可以用于在存储器控制器520与存储器设备540之间的连接。串行总线技术的示例是5B10B编码,以及在每个方向上通过单个差分信号对以嵌入式时钟传输高速数据。在一个示例中,CMD 534表示与多个存储器设备并行共享的信号线。在一个示例中,多个存储器设备共享CMD 534的编码命令信号线,并且每个具有单独的芯片选择(CS_n)信号线以选择单个存储器设备。
应当理解,在系统500的示例中,在存储器控制器520与存储器设备540之间的总线包括附属命令总线CMD 534和用于承载写入和读取数据的附属总线DQ 536。在一个示例中,数据总线可以包括用于读取数据和用于写入/命令数据的双向线。在另一示例中,附属总线DQ 536可以包括用于从主机向存储器写入数据的单向写入信号线,并且可以包括用于从存储器向主机读取数据的单向线。根据所选择的存储器技术和系统设计,其他信号538可以伴随总线或子总线,例如,选通线DQS。基于系统500的设计,或者当设计支持多个实现方式时基于实现方式,数据总线可以具有每个存储器设备540更多或更少的带宽。例如,数据总线可以支持具有x4接口、x8接口、x16接口或其他接口的存储器设备。约定“xW”(其中W是指代存储器设备540的接口的接口大小或宽度的整数)表示与存储器控制器520交换数据的信号线的数量。存储器设备的接口大小是系统500中每个通道可以同时使用多少个存储器设备或多少个存储器设备可以并行耦合到相同信号线的控制因素。在一个示例中,高带宽存储器设备、宽接口设备或堆叠式存储器配置或其组合可以实现更宽的接口,例如,x128接口、x256接口、x512接口、x1024接口或其他数据总线接口宽度。
在一个示例中,存储器设备540和存储器控制器520在数据总线上以突发或连续数据传送序列交换数据。突发对应于多个传送周期,这涉及总线频率。在一个示例中,传送周期可以是用于在相同时钟或选通信号沿(例如,在上升沿)上发生的传送的整个时钟周期。在一个示例中,每个时钟周期(其指代系统时钟的周期)被分成多个单位间隔(UI),其中每个UI是一个传送周期。例如,双倍数据速率传送在时钟信号的两个沿(例如,上升沿和下降沿)上触发。突发可以持续配置数量的UI,这可以是存储在寄存器中的配置或被实时触发。例如,八个连续传送时段的序列可以被认为是长度为八的突发(BL8),并且每个存储器设备540可以在每个UI上传送数据。因此,在BL8上操作的x8存储器设备可以传送64位数据(8条数据信号线乘以突发中每条线传送的8个数据位)。应当理解,这个简单的示例仅仅是说明性的,而不是限制性的。
存储器设备540表示用于系统500的存储器资源。在一个示例中,每个存储器设备540是单独的存储器管芯。在一个示例中,每个存储器设备540可以与每个设备或管芯的多个(例如,2个)通道接合。每个存储器设备540包括I/O接口逻辑542,该I/O接口逻辑542具有由设备的实现方式确定的带宽(例如,x16或x8或某种其他接口带宽)。I/O接口逻辑542使存储器设备能够与存储器控制器520接合。I/O接口逻辑542可以包括硬件接口,并且可以与存储器控制器的I/O 522一致,但是该I/O接口逻辑542在存储器设备端。在一个示例中,多个存储器设备540并行连接到相同的命令和数据总线。在另一示例中,多个存储器设备540并行连接到相同的命令总线,并且连接到不同的数据总线。例如,系统500可以被配置有并行耦合的多个存储器设备540,其中每个存储器设备响应命令,并对每个存储器设备内部的存储器资源560进行存取。对于写入操作,单个存储器设备540可以写入全部数据字的一部分;并且对于读取操作,单个存储器设备540可以取得全部数据字的一部分。该字的其余位将由其他存储设备并行提供或接收。
在一个示例中,存储器设备540直接设置在计算设备的母板或主机系统平台(例如,其上设置有处理器510的PCB(印刷电路板))上。在一个示例中,存储器设备540可以被组织成存储器模块570。在一个示例中,存储器模块570表示双列直插式存储器模块(DIMM)。在一个示例中,存储器模块570表示多个存储器设备共享存取或控制电路装置的至少一部分的其他组织,该存取或控制电路装置可以是独立的电路、独立的设备或独立于主机系统平台的板。存储器模块570可以包括多个存储器设备540,并且存储器模块可以包括对设置在其上的所包括的存储器设备的多个单独通道的支持。在另一示例中,存储器设备540可以例如通过诸如多芯片模块(MCM)、封装上封装、硅通孔(TSV)之类的技术或其他技术或技术的组合并入到与存储器控制器520相同的封装中。类似地,在一个示例中,可以将多个存储器设备540并入到存储器模块570中,该存储器模块570本身可以并入到与存储器控制器520相同的封装中。将认识到的是,对于这些和其他实现方式,存储器控制器520可以是主机处理器510的一部分。
存储器设备540各自包括一个或多个存储器阵列560。存储器阵列560表示数据的可寻址存储器位置或存储位置。典型地,存储器阵列560作为数据行来管理,经由字线(行)和位线(行内的各个位)控制来进行存取。存储器阵列560可以被组织为存储器的单独的通道、列(rank)和存储体(bank)。通道可以指代到存储器设备540内的存储位置的独立控制路径。列可以指代并行跨多个存储器设备(例如,不同设备内的相同行地址)的公共位置。存储体可以指代存储器设备540内的存储器位置的子阵列。在一个示例中,存储器的存储体被划分为子存储体,其中共享电路装置(例如,驱动器、信号线、控制逻辑)的至少一部分用于子存储体,从而允许单独的寻址和存取。将理解的是,存储器位置的通道、列、存储体、子存储体、存储体组或其他组织以及这些组织的组合可以在其对物理资源的应用中重叠。例如,可以通过作为特定存储体(其也可以属于列)的特定通道来存取相同的物理存储器位置。因此,将以包含而不是排他的方式理解存储器资源的组织。
在一个示例中,存储器设备540包括一个或多个寄存器544。寄存器544表示一个或多个存储设备或存储位置,这些存储设备或存储位置提供用于存储器设备的操作的配置或设置。在一个示例中,寄存器544可以为存储器设备540提供存储位置,以存储数据以供存储器控制器520存取作为控制或管理操作的一部分。在一个示例中,寄存器544包括一个或多个模式寄存器。在一个示例中,寄存器544包括一个或多个多用途寄存器。在寄存器544内的位置的配置可以将存储器设备540配置为以不同的“模式”操作,其中命令信息可以基于该模式来触发存储器设备540内的不同操作。另外地或在替代方案中,取决于模式,不同的模式还可以根据地址信息或其他信号线触发不同的操作。寄存器544的设置可以指示用于I/O设置的配置(例如,时序、终止或ODT(管芯上终止)546、驱动器配置或其他I/O设置)。
在一个示例中,存储器设备540包括ODT 546作为与I/O 542相关联的接口硬件的一部分。ODT 546可以被如上面所提到的进行配置,并且提供用于将阻抗应用于到指定信号线的接口的设置。在一个示例中,ODT 546被应用于DQ信号线。在一个示例中,ODT 546被应用于命令信号线。在一个示例中,ODT 546被应用于地址信号线。在一个示例中,ODT 546可以被应用于前述信号线的任何组合。可以基于存储器设备是存取操作的选定的目标还是非目标设备来改变ODT设置。ODT546设置可以影响终止的线上的信令的时序和反射。对ODT546的仔细控制可以实现具有应用的阻抗和负载的改进的匹配的更高速度的操作。ODT 546可以被应用于I/O接口542、522的指定信号线(例如,ODT用于DQ线或者ODT用于CA线),并且不一定被应用于所有信号线。
存储器设备540包括控制器550,该控制器550表示在存储器设备内的用于控制存储器设备内的内部操作的控制逻辑。例如,控制器550对由存储器控制器520发送的命令进行解码,并且生成内部操作以执行或满足该命令。控制器550可以被称为内部控制器,并且与主机的存储器控制器520分离。控制器550可以基于寄存器544来确定选择哪种模式,并且基于所选定的模式来配置对用于存取存储器资源560的操作或其他操作的内部执行。控制器550生成控制信号以控制存储器设备540内的位的路由,以提供针对所选定的模式的适当接口,并且将命令引导至适当的存储器位置或地址。控制器550包括命令逻辑552,该命令逻辑552可以对在命令和地址信号线上接收到的命令编码进行解码。因此,命令逻辑552可以是或包括命令解码器。利用命令逻辑552,存储器设备可以识别命令并生成内部操作以执行所请求的命令。
再次参考存储器控制器520,存储器控制器520包括命令(CMD)逻辑524,该CMD逻辑524表示用于生成要发送到存储器设备540的命令的逻辑或电路装置。命令的生成可以指代在调度之前的命令,或对准备好要被发送的排队的命令的准备。通常,存储器子系统中的信令包括在命令内或伴随命令的地址信息,以指示或选择存储器设备应在其中执行命令的一个或多个存储器位置。响应于针对存储器设备540的事务的调度,存储器控制器520可以经由I/O 522发出命令以使得存储器设备540执行命令。在一个示例中,存储器设备540的控制器550接收并解码经由I/O 542从存储器控制器520接收到的命令和地址信息。基于接收到的命令和地址信息,控制器550可以控制存储器设备540内的逻辑和电路装置的操作的时序以执行命令。控制器550负责遵守存储器设备540内的标准或规范,例如,时序和信令要求。存储器控制器520可以通过存取调度和控制来实现对标准或规范的遵守。
存储器控制器520包括调度器530,该调度器530表示用于生成要发送到存储器设备540的事务并对其排序的逻辑或电路装置。从一个角度看,可以认为存储器控制器520的主要功能是调度存储器存取和对存储器设备540的其他事务。这样的调度可以包括生成事务本身,以实现处理器510针对数据的请求并维持数据的完整性(例如,利用与刷新相关的命令)。事务可以包括一个或多个命令,并导致在一个或多个时序周期(例如,时钟周期或单位间隔)上传送命令或数据或两者。事务可以用于存取(例如,读取或写入或相关的命令或组合),并且其他事务可以包括用于配置、设置、数据完整性的存储器管理命令,或其他命令或组合。
存储器控制器520典型地包括诸如调度器530之类的逻辑,以允许对事务的选择和排序以改进系统500的性能。因此,存储器控制器520可以选择未完成的事务中的那些事务应以哪个次序发送到存储器设备540,这典型地是利用比简单的先入先出算法复杂得多的逻辑来实现的。存储器控制器520管理到存储器设备540的事务的传输,并且管理与事务相关联的时序。在一个示例中,事务具有确定性时序,该确定性时序可以由存储器控制器520管理并且用于确定如何利用调度器530来调度事务。
在一个示例中,存储器控制器520包括刷新(REF)逻辑526。刷新逻辑526可以用于易失性的并且需要被刷新以保持确定性状态的存储器资源。在一个示例中,刷新逻辑526指示用于刷新的位置以及要执行的刷新的类型。刷新逻辑526可以触发存储器设备540内的自刷新,或通过发送刷新命令来执行外部刷新(其可以被称为自动刷新命令)或其组合。在一个示例中,存储器设备540内的控制器550包括刷新逻辑554以在存储器设备540内应用刷新。在一个示例中,刷新逻辑554生成内部操作,以根据从存储器控制器520接收到的外部刷新来执行刷新。刷新逻辑554可以确定是否将刷新定向到存储器设备540,以及响应于命令来确定要刷新什么存储器资源560。
图6是其中可以实现相干低功率状态管理的计算系统的示例的框图。系统600表示根据本文任何示例的计算设备,并且可以是膝上型计算机、台式计算机、平板计算机、服务器、游戏或娱乐控制系统、嵌入式计算设备或其他电子设备。
系统600表示根据系统100或系统200的示例的系统。在一个示例中,系统600包括CXL控件690,该CXL控件690表示存储器630的相干实现方式的功率管理控件。CXL控件690可以表示根据上面描述的任何示例的存储器管理器和存储器驱动器。CXL控件690可以管理页表以导致对存储器630的后续存取以触发页故障。因此,可以通过故障例程处理存储器存取。根据本文中的任何示例,在改变页表之后,CXL控件690可以触发存储器630进入低功率状态。
系统600包括处理器610,该处理器610可以包括任何类型的微处理器、中央处理单元(CPU)、图形处理单元(GPU)、处理核心或其他处理硬件或组合,以提供对系统600的指令的处理或执行。处理器610可以是主机处理器设备。处理器610控制系统600的总体操作,并且可以是或包括一个或多个可编程的通用或专用微处理器、数字信号处理器(DSP)、可编程控制器、专用集成电路(ASIC)、可编程逻辑器件(PLD)或这些设备的组合。
系统600包括引导/配置616,该引导/配置616表示存储引导代码(例如,基本输入/输出系统(BIOS))、配置设置、安全硬件(例如,可信任平台模块(TPM))或在主机OS外部操作的其他系统级硬件的存储装置。引导/配置616可以包括非易失性存储设备,例如,只读存储器(ROM)、闪速存储器或其他存储设备。
在一个示例中,系统600包括耦合到处理器610的接口612,该接口612可以表示用于需要较高带宽连接的系统组件(例如,存储器子系统620或图形接口组件640)的较高速度接口或高吞吐量接口。接口612表示接口电路,其可以是独立组件或集成到处理器管芯上。接口612可以作为电路集成到处理器管芯上,或者作为组件集成到片上系统上。在存在图形接口640的情况下,图形接口640与图形组件接合,以向系统600的用户提供视觉显示。图形接口640可以是独立组件或集成到处理器管芯或片上系统上。在一个示例中,图形接口640可以驱动向用户提供输出的高清晰度(HD)显示器或超高清晰度(UHD)显示器。在一个示例中,显示器可以包括触摸屏显示器。在一个示例中,图形接口640基于存储在存储器630中的数据或基于由处理器610执行的操作或基于两者来生成显示。
存储器子系统620表示系统600的主存储器,并且为要由处理器610执行的代码或要在执行例程中使用的数据值提供存储。存储器子系统620可以包括一个或多个存储器设备630,例如,只读存储器(ROM)、闪速存储器、随机存取存储器(RAM)的一种或多种变型(例如,DRAM)、3DXP(三维交叉点),或其他存储器设备,或这些设备的组合。存储器630存储并托管操作系统(OS)632以及其他事物,以提供用于对在系统600中的指令的执行的软件平台。另外地,应用634可以从存储器630在OS 632的软件平台上执行。应用634表示具有其自己的操作逻辑以执行对一个或多个功能的执行的程序。进程636表示向OS 632或一个或多个应用634或其组合提供备用功能的代理或例程。OS 632、应用634和进程636提供软件逻辑以提供用于系统600的功能。在一个示例中,存储器子系统620包括存储器控制器622,该存储器控制器622是用于生成命令并将命令发出到存储器630的存储器控制器。将理解的是,存储器控制器622可以是处理器610的物理部分或接口612的物理部分。例如,存储器控制器622可以是集成到具有处理器610的电路上(例如,集成到处理器管芯或片上系统上)的集成存储器控制器。
尽管没有具体示出,但是将理解的是,系统600可以包括设备之间的一条或多条总线或一个或多个总线系统,例如,存储器总线、图形总线、接口总线等。总线或其他信号线可以将组件通信地或电气地耦合在一起,或者将组件通信地且电气地耦合。总线可以包括物理通信线路、点对点连接、桥、适配器、控制器或其他电路装置或组合。总线可以包括例如系统总线、外围组件互连(PCI)总线、超传输或行业标准架构(ISA)总线、小型计算机系统接口(SCSI)总线、通用串行总线(USB)或其他总线中的一个或多个或其组合。
在一个示例中,系统600包括接口614,该接口614可以耦合到接口612。接口614与接口612相比可以是较低速度接口。在一个示例中,接口614表示接口电路,该接口电路可以包括独立组件和集成电路装置。在一个示例中,多个用户界面组件或外围组件或两者耦合到接口614。网络接口650向系统600提供通过一个或多个网络与远程设备(例如,服务器或其他计算设备)通信的能力。网络接口650可以包括以太网适配器、无线互连组件、蜂窝网络互连组件、USB(通用串行总线)、或基于有线标准或无线标准的其他接口或专有接口。网络接口650可以与远程设备交换数据,这可以包括发送存储在存储器中的数据或接收要存储在存储器中的数据。
在一个示例中,系统600包括一个或多个输入/输出(I/O)接口660。I/O接口660可以包括用户通过其与系统600交互(例如,音频、字母数字、触觉/触摸或其他接合)的一个或多个接口组件。外围接口670可以包括上面未具体提到的任何硬件接口。外围设备通常指代依赖地连接到系统600的设备。依赖连接是其中系统600提供在其上执行操作并且用户与其进行交互的软件平台或硬件平台或两者的一种连接。
在一个示例中,系统600包括用于以非易失性方式存储数据的存储子系统680。在一个示例中,在某些系统实现方式中,存储装置680的至少某些组件可以与存储器子系统620的组件重叠。存储子系统680包括(多个)存储设备684,这些存储设备684可以是或包括用于以非易失性方式存储大量数据的任何常规介质,例如,一个或多个基于磁性、固态、3DXP或光学的盘或其组合。存储装置684以持久状态保存代码或指令以及数据686(即,尽管到系统600的电力被中断,但该值仍被保留)。存储装置684通常可以被认为是“存储器”,但是存储器630典型地是用于向处理器610提供指令的执行或操作存储器。尽管存储装置684是非易失性的,但是存储器630可以包括易失性存储器(即,如果到系统600的电力被中断,则数据的值或状态是不确定的)。在一个示例中,存储子系统680包括用于与存储装置684接合的控制器682。在一个示例中,控制器682是接口614或处理器610的物理部分,或者可以包括处理器610和接口614两者中的电路或逻辑。
电源602向系统600的组件提供电力。更具体地,电源602典型地与系统600中的一个或多个电力供应604接合,以向系统600的组件提供电力。在一个示例中,电力供应604包括用于插入壁式插座的AC到DC(交流电到直流电)适配器。这样的AC电力可以是可再生能源(例如,太阳能)电源602。在一个示例中,电源602包括DC电源,例如,外部AC到DC转换器。在一个示例中,电源602或电力供应604包括无线充电硬件,以经由与充电场的接近度来充电。在一个示例中,电源602可以包括内部电池或燃料电池源。
图7是其中可以实现相干低功率状态管理的移动设备的示例的框图。系统700表示移动计算设备,例如,计算平板计算机、移动电话或智能电话、可穿戴计算设备或其他移动设备,或嵌入式计算设备。应当理解,组件中的某些组件被一般性地示出,并且并非此类设备的所有组件都在系统700中示出。系统700是可以结合与系统100或系统200兼容的系统的系统的一个示例。
在一个示例中,存储器子系统760包括存储器762,该存储器762可以包括一个或多个相干存储器资源,这些相干存储器资源被标识为相干存储器792。在一个示例中,系统700包括具有CXL控件794的OS 790,该CXL控件794表示相干存储器792的功率管理控件。CXL控件794可以表示根据上面描述的任何示例的存储器管理器和存储器驱动器。CXL控件794可以管理页表以导致对相干存储器792的后续存取以触发页故障。因此,可以通过故障例程处理存储器存取。根据本文中的任何示例,在改变页表之后,CXL控件794可以触发相干存储器792进入低功率状态。
系统700包括处理器710,该处理器710执行系统700的主要处理操作。处理器710可以包括一个或多个物理设备,例如,微处理器、应用处理器、微控制器、可编程逻辑器件或其他处理模块。由处理器710执行的处理操作包括对在其上执行应用和设备功能的操作平台或操作系统的执行。处理操作包括与人类用户或其他设备的I/O(输入/输出)相关的操作、与功率管理相关的操作、与将系统700连接到另一设备相关的操作或其组合。处理操作还可以包括与音频I/O、显示I/O或其他接合相关的操作或其组合。处理器710可以执行存储在存储器中的数据。处理器710可以写入或编辑存储在存储器中的数据。
在一个示例中,系统700包括一个或多个传感器712。传感器712表示嵌入式传感器或与外部传感器的接口或其组合。传感器712使系统700能够监视或检测在其中实现系统700的环境或设备的一个或多个条件。传感器712可以包括环境传感器(例如,温度传感器、运动检测器、光检测器、相机、化学传感器(例如,一氧化碳、二氧化碳或其他化学传感器))、压力传感器、加速度计、陀螺仪、医学或生理学传感器(例如,生物传感器、心率监视器或用于检测生理属性的其他传感器)或其他传感器或其组合。传感器712还可以包括用于生物计量系统的传感器,例如,指纹识别系统、面部检测或识别系统或检测或识别用户特征的其他系统。应该广义上理解传感器712,而不是限制于可以利用系统700实现的许多不同类型的传感器。在一个示例中,一个或多个传感器712经由与处理器710集成的前端电路耦合到处理器710。在一个示例中,一个或多个传感器712经由系统700的另一组件耦合到处理器710。
在一个示例中,系统700包括音频子系统720,该音频子系统720表示与向计算设备提供音频功能相关联的硬件(例如,音频硬件和音频电路)和软件(例如,驱动程序、编解码器)组件。音频功能可以包括扬声器或耳机输出,以及麦克风输入。可以将用于这种功能的设备集成到系统700中或连接到系统700。在一个示例中,用户通过提供由处理器710接收并处理的音频命令来与系统700进行交互。
显示子系统730表示提供视觉显示以用于向用户呈现的硬件(例如,显示设备)和软件组件(例如,驱动程序)。在一个示例中,显示器包括用户用于与计算设备进行交互的触觉组件或触摸屏元件。显示子系统730包括显示接口732,该显示接口732包括用于向用户提供显示的特定屏幕或硬件设备。在一个示例中,显示接口732包括与处理器710(例如,图形处理器)分离的逻辑,以执行与显示器相关的至少一些处理。在一个示例中,显示子系统730包括向用户提供输出和输入两者的触摸屏设备。在一个示例中,显示子系统730包括向用户提供输出的高清晰度(HD)或超高清晰度(UHD)显示器。在一个示例中,显示子系统包括或驱动触摸屏显示器。在一个示例中,显示子系统730基于存储在存储器中的数据或基于由处理器710执行的操作或基于两者来生成显示信息。
I/O控制器740表示和与用户交互相关的硬件设备和软件组件。I/O控制器740可以操作以管理作为音频子系统720或显示子系统730或两者的一部分的硬件。另外地,I/O控制器740示出了用于连接到系统700的附加设备的连接点,用户可以通过该附加设备与系统交互。例如,可以附接到系统700的设备可以包括麦克风设备、扬声器或立体声系统、视频系统或其他显示设备、键盘或小键盘设备、按钮/开关或与特定应用一起使用的其他I/O设备,例如,读卡器或其他设备。
如上面所提到的,I/O控制器740可以与音频子系统720或显示子系统730或两者进行交互。例如,通过麦克风或其他音频设备的输入可以提供用于系统700的一个或多个应用或功能的输入或命令。另外地,代替或除了显示输出之外,可以提供音频输出。在另一示例中,如果显示子系统包括触摸屏,则显示设备还用作输入设备,其可以至少部分地由I/O控制器740管理。在系统700上还可以存在附加按钮或开关来提供由I/O控制器740管理的I/O功能。
在一个示例中,I/O控制器740管理诸如加速度计、相机、光传感器或其他环境传感器、陀螺仪、全球定位系统(GPS)、或可以被包括在系统700中的其他硬件或传感器712之类的设备。输入可以是直接用户交互的一部分,以及向系统提供环境输入以影响其操作(例如,过滤噪声、调整显示以进行亮度检测、为相机应用闪光或其他特征)。
在一个示例中,系统700包括功率管理750,该功率管理750管理电池电力使用、电池的充电以及与功率节约操作相关的特征。功率管理750管理来自电源752的电力,该电源752向系统700的组件提供电力。在一个示例中,电源752包括用于插入壁式插座的AC到DC(交流电到直流电)适配器。这样的AC电力可以是可再生能源(例如,太阳能、基于运动的电力)。在一个示例中,电源752仅包括DC电力,其可以由诸如外部AC到DC转换器之类的DC电源来提供。在一个示例中,电源752包括无线充电硬件,以经由与充电场的接近度来充电。在一个示例中,电源752可以包括内部电池或燃料电池源。
存储器子系统760包括用于在系统700中存储信息的(多个)存储器设备762。存储器子系统760可以包括非易失性(如果到存储器设备的电力被中断,则状态不会改变)或易失性(如果到存储器设备的电力被中断,则状态是不确定的)存储器设备或其组合。存储器760可以存储应用数据、用户数据、音乐、照片、文档或其他数据,以及与对系统700的应用和功能的执行相关的系统数据(无论是长期的还是临时的)。在一个示例中,存储器子系统760包括存储器控制器764(其也可以被认为是系统700的控件的一部分,并且可以潜在地被认为是处理器710的一部分)。存储器控制器764包括调度器,以生成并发出命令来控制对存储器设备762的存取。
连通性770包括硬件设备(例如,无线或有线连接器和通信硬件,或有线硬件和无线硬件的组合)和软件组件(例如,驱动程序、协议栈),以使系统700能够与外部设备进行通信。外部设备可以是单独的设备,例如,其他计算设备、无线接入点或基站以及外围设备(例如,耳机、打印机)或其他设备。在一个示例中,系统700与外部设备交换数据以将数据存储在存储器中或在显示设备上显示。经交换的数据可以包括要存储在存储器中的数据或者已经存储在存储器中的数据,以读取、写入或编辑数据。
连通性770可以包括多种不同类型的连通性。概括而言,系统700被示为具有蜂窝连通性772和无线连通性774。蜂窝连通性772通常指代由无线载波提供的(例如,经由GSM(全球移动通信系统)或其变型或衍生物、CDMA(码分多址)或其变型或衍生物、TDM(时分复用)或其变型或衍生物、LTE(长期演进——也称为“4G”)、5G或其他蜂窝服务标准提供的)蜂窝网络连通性。无线连通性774指代非蜂窝式的无线连通性,并且可以包括个域网(例如,蓝牙)、局域网(例如,WiFi)或广域网(例如,WiMax),或其他无线通信或其组合。无线通信指代通过使用经调制的电磁辐射通过非固体介质来传送数据。有线通信通过固体通信介质发生。
外围连接780包括用于进行外围连接的硬件接口和连接器以及软件组件(例如,驱动程序、协议栈)。将理解的是,系统700既可以对其他计算设备而言是外围设备(“去往”782),也可以具有与其连接的外围设备(“来自”784)。出于诸如管理(例如,下载、上传、改变、同步)系统700上的内容之类的目的,系统700通常具有“对接(docking)”连接器以连接到其他计算设备。另外地,对接连接器可以允许系统700连接到某些外围设备,这些外围设备允许系统700控制内容输出到例如视听系统或其他系统。
除了专有的对接连接器或其他专有的连接硬件之外,系统700还可以经由常见的或基于标准的连接器进行外围连接780。常见的类型可以包括通用串行总线(USB)连接器(其可以包括许多不同的硬件接口中的任何一个)、包括微型显示端口(MDP)的显示端口、高清晰度多媒体接口(HDMI),或其他类型。
一般而言,关于本文的描述,在一个示例中,一种装置包括:基板;以及在基板上的主机硬件,该主机硬件用于:执行存储器控件以管理对存储器设备的存取,该存储器控件用于改变存储器设备的页表条目,以导致对存储器设备的后续存取的页故障;以及在对页表条目的改变之后触发存储器设备进入低功率状态。
在装置的示例中,存储器设备包括字节可寻址存储器设备。在装置的任何前述示例中,存储器设备包括非易失性存储器设备。在装置的任何前述示例中,存储器设备包括与CXL(快速计算链路)-高速缓存/存储器协议接口(CPI)标准兼容的存储器设备。在装置的任何前述示例中,存储器设备包括三维交叉点(3DXP)存储器设备。在装置的任何前述示例中,用于改变页表的存储器控件包括用于使条目无效而不从页表中移除条目的存储器控件。在装置的任何前述示例中,存储器控件用于使条目无效包括:存储器控件用于清除页表中的针对存储器地址范围的当前位指示符。在装置的任何前述示例中,存储器控件用于响应于确定存储器设备已经空闲了阈值时段而改变页表条目。在装置的任何前述示例中,在改变页表之前,存储器控件用于确定存储器设备的低功率状态是否具有将导致主机处理器停止的唤醒延时,并且响应于确定低功率状态具有将导致主机处理器停止的唤醒延时而改变页表。在装置的任何前述示例中,在改变页表之前,存储器控件用于确定存储器设备是否存储与锁定页相关联的数据,并且仅响应于确定存储器设备没有存储与锁定页相关联的数据而改变页表。
一般而言,关于本文的描述,在一个示例中,一种系统包括:利用相干存取管理的存储器设备;以及主机硬件,该主机硬件用于:执行存储器控件以管理对存储器设备的存取,该存储器控件用于改变存储器设备的页表条目,以导致对存储器设备的后续存取的页故障;以及在对页表条目的改变之后触发存储器设备进入低功率状态。
在系统的示例中,存储器设备包括非易失性的字节可寻址存储器设备。在系统的任何前述示例中,存储器设备包括非易失性存储器设备。在系统的任何前述示例中,存储器设备包括与CXL(快速计算链路)-高速缓存/存储器协议接口(CPI)标准兼容的存储器设备。在系统的任何前述示例中,存储器设备包括三维交叉点(3DXP)存储器设备。在系统的任何前述示例中,用于改变页表的存储器控件包括用于使条目无效而不从页表中移除条目的存储器控件。在系统的任何前述示例中,存储器控件用于使条目无效包括:存储器控件用于清除页表中的针对存储器地址范围的当前位指示符。在系统的任何前述示例中,存储器控件用于响应于确定存储器设备已经空闲了阈值时段而改变页表条目。在系统的任何前述示例中,在改变页表之前,存储器控件用于确定存储器设备的低功率状态是否具有将导致主机处理器停止的唤醒延时,并且响应于确定低功率状态具有将导致主机处理器停止的唤醒延时而改变页表。在系统的任何前述示例中,在改变页表之前,存储器控件用于确定存储器设备是否存储与锁定页相关联的数据,并且仅响应于确定存储器设备没有存储与锁定页相关联的数据而改变页表。在系统的任何前述示例中,主机硬件包括以下各项中的一个或多个:主机处理器;显示器,该显示器通信地耦合到主机处理器;网络接口,该网络接口通信地耦合到主机处理器;或者到电池的接口,该电池用于为系统供电。
一般而言,关于本文的描述,在一个示例中,一种用于将存储器设备置于低功率状态的方法,包括:确定利用相干存取管理的存储器设备已经空闲了阈值时段;改变存储器设备的页表条目,以导致对存储器设备的后续存取的页故障;以及在改变页表条目之后触发存储器设备进入低功率状态。
在方法的示例中,存储器设备包括字节可寻址存储器设备。在方法的任何前述示例中,存储器设备包括非易失性存储器设备。在方法的任何前述示例中,存储器设备包括与CXL(快速计算链路)-高速缓存/存储器协议接口(CPI)标准兼容的存储器设备。在方法的任何前述示例中,存储器设备包括三维交叉点(3DXP)存储器设备。在方法的任何前述示例中,改变页表包括:使条目无效而不从页表中移除条目。在方法的任何前述示例中,使条目无效包括:清除页表中的针对存储器地址范围的当前位指示符。在方法的任何前述示例中,在改变页表之前,确定存储器设备的低功率状态是否具有将导致主机处理器停止的唤醒延时,并且响应于确定低功率状态具有将导致主机处理器停止的唤醒延时而改变页表。在方法的任何前述示例中,在改变页表之前,确定存储器设备是否存储与锁定页相关联的数据,并且仅响应于确定存储器设备没有存储与锁定页相关联的数据而改变页表。
一般而言,关于本文的描述,在一个示例中,一种计算机可读存储介质包括存储在其上的指令,该指令在由处理器执行时,使处理器执行根据前两段的任何示例的方法。
如本文所示出的流程图提供了各种处理动作的序列的示例。流程图可以指示要由软件或固件例程执行的操作以及物理操作。流程图可以示出可以以硬件和/或软件来实现的有限状态机(FSM)的状态的实现方式的示例。虽然以特定序列或次序显示,但除非另有说明,否则可以修改动作的次序。因此,所示出的示意图应该仅被理解为示例,并且可以以不同的次序执行该过程,并且可以并行执行一些动作。另外地,可以省略一个或多个动作;因此,并非所有实现方式将执行所有动作。
就本文描述的各种操作或功能而言,可以将各种操作或功能描述或定义为软件代码、指令、配置和/或数据。内容可以是可直接执行的(“对象”或“可执行的”形式)、源代码或差异代码(“增量”或“补丁”代码)。本文所描述的软件内容可以经由其上存储有内容的制品提供,或者经由操作通信接口以经由通信接口发送数据的方法提供。机器可读存储介质可以使得机器执行描述的功能或操作,并且包括以可以由机器(例如,计算设备、电子系统等)访问的形式存储信息的任何机制,例如,可记录/不可记录介质(例如,只读存储器(ROM)、随机存取存储器(RAM)、磁盘存储介质、光学存储介质、闪速存储器设备等)。通信接口包括与硬连线、无线、光学等介质中的任一介质接合以与另一设备通信的任何机制,例如,存储器总线接口、处理器总线接口、互联网连接、磁盘控制器等。可以通过提供配置参数和/或发送信号来配置通信接口,以准备通信接口来提供描述软件内容的数据信号。可以经由发送到通信接口的一个或多个命令或信号来访问通信接口。
本文描述的各种组件可以是用于执行描述的操作或功能的单元。本文描述的每个组件包括软件、硬件或这些软件和硬件的组合。组件可以被实现为软件模块、硬件模块、特殊用途硬件(例如,专用硬件、专用集成电路(ASIC)、数字信号处理器(DSP)等)、嵌入式控制器、硬连线电路装置等。
除了本文描述的内容之外,在不脱离本发明的所公开的内容以及实现方式的范围的情况下,可以对本发明的所公开的内容以及实现方式进行各种修改。因此,本文的说明和示例应该被解释为说明性的而不是限制意义的。应该仅通过参考所附权利要求书来衡量本发明的范围。

Claims (21)

1.一种用于存储器功率管理的系统,包括:
利用相干存取管理的存储器设备;以及
主机硬件,所述主机硬件用于:执行存储器控件以管理对所述存储器设备的存取,所述存储器控件用于改变所述存储器设备的页表条目,以导致对所述存储器设备的后续存取的页故障,以及在对所述页表条目的所述改变之后触发所述存储器设备进入低功率状态。
2.根据权利要求1所述的系统,其中,所述存储器设备包括:字节可寻址存储器设备。
3.根据权利要求2所述的系统,其中,所述存储器设备包括:非易失性存储器设备。
4.根据权利要求2所述的系统,其中,所述存储器设备包括:与CXL(快速计算链路)-高速缓存/存储器协议接口(CPI)标准兼容的存储器设备。
5.根据权利要求2所述的系统,其中,所述存储器设备包括:三维交叉点(3DXP)存储器设备。
6.根据权利要求1-5中任一项所述的系统,其中,用于改变所述页表的所述存储器控件包括:用于使所述条目无效而不从所述页表中移除所述条目的存储器驱动器。
7.根据权利要求6所述的系统,其中,所述存储器驱动器用于使所述条目无效包括:所述存储器驱动器用于清除所述页表中的针对存储器地址范围的当前位指示符。
8.根据权利要求1-7中任一项所述的系统,其中,所述存储器驱动器用于响应于确定所述存储器设备已经空闲了阈值时段而改变所述页表条目。
9.根据权利要求1-8中任一项所述的系统,其中,在改变所述页表之前,所述存储器驱动器用于确定所述存储器设备的所述低功率状态是否具有将导致主机处理器停止的唤醒延时,并且响应于确定所述低功率状态具有将导致所述主机处理器停止的唤醒延时而改变所述页表。
10.根据权利要求1-9中任一项所述的系统,其中,在改所述变页表之前,所述存储器驱动器用于确定所述存储器设备是否存储与锁定页相关联的数据,并且仅响应于确定所述存储器设备没有存储与锁定页相关联的数据而改变所述页表。
11.根据权利要求1-10中任一项所述的系统,其中,所述主机硬件包括以下各项中的一个或多个:
主机处理器;
显示器,所述显示器通信地耦合到主机处理器;
网络接口,所述网络接口通信耦合到主机处理器;或者
到电池的接口,所述电池用于为所述系统供电。
12.一种用于将存储器设备置于低功率状态的方法,包括:
确定利用相干存取管理的存储器设备已经空闲了阈值时段;
改变所述存储器设备的页表条目,以导致对所述存储器设备的后续存取的页故障;以及
在改变所述页表条目之后触发所述存储器设备进入低功率状态。
13.根据权利要求12所述的方法,其中,所述存储器设备包括:字节可寻址存储器设备。
14.根据权利要求13所述的方法,其中,所述存储器设备包括:非易失性存储器设备。
15.根据权利要求13所述的方法,其中,所述存储器设备包括:与CXL(快速计算链路)-高速缓存/存储器协议接口(CPI)标准兼容的存储器设备。
16.根据权利要求13所述的方法,其中,所述存储器设备包括:三维交叉点(3DXP)存储器设备。
17.根据权利要求12-16中任一项所述的方法,其中,改变所述页表包括:使所述条目无效而不从所述页表中移除所述条目。
18.根据权利要求17所述的方法,其中,使所述条目无效包括:清除所述页表中的针对存储器地址范围的当前位指示符。
19.根据权利要求12-18中任一项所述的方法,其中,在改变所述页表之前,确定所述存储器设备的所述低功率状态是否具有将导致主机处理器停止的唤醒延时,并且响应于确定所述低功率状态具有将导致所述主机处理器停止的唤醒延时而改变所述页表。
20.根据权利要求12-19中任一项所述的方法,其中,在改所述变页表之前,确定所述存储器设备是否存储与锁定页相关联的数据,并且仅响应于确定所述存储器设备没有存储与锁定页相关联的数据而改变所述页表。
21.一种包括指令的计算机程序产品,所述指令当由计算设备执行时,使得所述计算设备根据权利要求12-20中任一项所述的方法来执行操作。
CN202210226089.8A 2021-04-09 2022-03-09 避免在低功率下存取相干存储器设备时处理器停止 Pending CN115203080A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/227,220 US20210232504A1 (en) 2021-04-09 2021-04-09 Avoiding processor stall when accessing coherent memory device in low power
US17/227,220 2021-04-09

Publications (1)

Publication Number Publication Date
CN115203080A true CN115203080A (zh) 2022-10-18

Family

ID=76970117

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210226089.8A Pending CN115203080A (zh) 2021-04-09 2022-03-09 避免在低功率下存取相干存储器设备时处理器停止

Country Status (4)

Country Link
US (1) US20210232504A1 (zh)
EP (1) EP4071583A1 (zh)
JP (1) JP2022161812A (zh)
CN (1) CN115203080A (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11914864B2 (en) * 2021-07-01 2024-02-27 Samsung Electronics Co., Ltd. Storage device and method of data management on a storage device

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7941799B2 (en) * 2004-05-27 2011-05-10 International Business Machines Corporation Interpreting I/O operation requests from pageable guests without host intervention
JP4209906B2 (ja) * 2006-08-02 2009-01-14 株式会社日立製作所 低消費電力メモリ管理方法及びその方法を用いた計算機
US8166326B2 (en) * 2007-11-08 2012-04-24 International Business Machines Corporation Managing power consumption in a computer
WO2013180688A1 (en) * 2012-05-29 2013-12-05 Hewlett-Packard Development Company, L.P. Hibernation based on page source
US10282296B2 (en) * 2016-12-12 2019-05-07 Intel Corporation Zeroing a cache line
KR102642430B1 (ko) * 2018-05-04 2024-03-04 에스케이하이닉스 주식회사 데이터 처리 시스템 및 그 구동방법
US20210019069A1 (en) * 2019-10-21 2021-01-21 Intel Corporation Memory and storage pool interfaces
US11971841B2 (en) * 2020-05-21 2024-04-30 Intel Corporation Link layer-PHY interface adapter
US11810640B2 (en) * 2021-02-10 2023-11-07 Sunrise Memory Corporation Memory interface with configurable high-speed serial data lanes for high bandwidth memory

Also Published As

Publication number Publication date
EP4071583A1 (en) 2022-10-12
US20210232504A1 (en) 2021-07-29
JP2022161812A (ja) 2022-10-21

Similar Documents

Publication Publication Date Title
US11789880B2 (en) Load reduced nonvolatile memory interface
JP7456083B2 (ja) ロウハンマ緩和のホスト支援のためのリフレッシュコマンド制御
CN107533509B (zh) 存储器设备特定的自刷新进入和退出
TWI721003B (zh) 記憶體裝置及用於記憶體管理的系統
CN108604456B (zh) 在存储器插槽中支持多个存储器类型
CN110023914B (zh) 用于重复写入存储器的可编程数据样式
JP2020166832A5 (zh)
CN105247617B (zh) 混合存储器设备
JP2019061699A (ja) 不揮発性大容量メモリ・システムによるキャッシュ移動を提供するための装置および方法
US11036412B2 (en) Dynamically changing between latency-focused read operation and bandwidth-focused read operation
US10599206B2 (en) Techniques to change a mode of operation for a memory device
JP2021093235A (ja) インメモリポストパッケージ修復(ppr)のためのインラインバッファ
US11657889B2 (en) Error correction for dynamic data in a memory that is row addressable and column addressable
KR20210091647A (ko) 비휘발성 메모리에 대한 자동 증분 기입 카운트
CN112578895A (zh) 降低非易失性存储器中的由于待机泄漏电流引起的功耗
CN117099075A (zh) 针对长突发长度的存储器数据传送的双倍取得
EP4071583A1 (en) Avoiding processor stall when accessing coherent memory device in low power
US20240118970A1 (en) Techniques for memory scrubbing associated with reliability availability and serviceability features
US20240211016A1 (en) Integrating autonomous memory subsystem self-refresh with system power management states

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