CN105339908B - 用于支持持久存储器的方法和装置 - Google Patents
用于支持持久存储器的方法和装置 Download PDFInfo
- Publication number
- CN105339908B CN105339908B CN201380077829.5A CN201380077829A CN105339908B CN 105339908 B CN105339908 B CN 105339908B CN 201380077829 A CN201380077829 A CN 201380077829A CN 105339908 B CN105339908 B CN 105339908B
- Authority
- CN
- China
- Prior art keywords
- data
- long
- application
- time memory
- main memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
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/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/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- 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/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/126—Replacement control using replacement algorithms with special data handling, e.g. priority of data or instructions, handling errors or pinning
-
- 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
- G06F2212/1044—Space efficiency improvement
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
一种处理设备以处理单元、存储器管理系统和在持久存储器域中的持久存储器为特征。所述处理设备为在所述处理单元上运行的应用提供增强写回(WB‑E)存储器空间。所述存储器管理系统将所述WB‑E存储器空间映射到所述持久存储器。所述应用通过执行指令以将数据存储到在所述WB‑E存储器空间中的地址而创建WB‑E数据。响应于所述应用创建WB‑E数据,自动将WB‑E数据存储到与所述处理单元相关联的高速缓存中。响应于在所述应用已经针对多个存储器地址创建了WB‑E数据之后所述应用执行提交指令,所述存储器管理系统自动确保用于所述应用的所有WB‑E数据已经被保存到持久存储器域。描述并要求保护其它实施例。
Description
技术领域
本文所描述的实施例总体上涉及数据处理,并且更具体地涉及用于支持持久存储器的方法和装置。
背景技术
传统的数据处理设备可以使用易失性和非易失性数据存储设备二者。例如,数据处理设备可以使用硬盘驱动器作为非易失性大容量存储设备,同时使用随机存取存储器(RAM)作为易失性存储设备。数据处理设备还可以使用非易失性闪速存储器。易失性存储设备还可以称为非持久存储设备。相反地,非易失性存储设备还可以称为持久存储设备。持久存储设备即使在未被供电时也维持其内容,而非持久存储设备在未被供电时并不可靠地维持其内容。
通常,持久大容量数据存储设备(例如,硬盘驱动器)是文件可寻址的,而非持久数据存储设备(例如,RAM)是位置可寻址或字节可寻址的。然而,持久存储设备也可以是位置可寻址或字节可寻址的。例如,数据处理设备的启动代码可以驻留在字节可寻址的闪速存储器上。
出于本公开的目的,术语“持久存储器”指的是位置可寻址的或字节可寻址的数据存储设备,其即使在不被供电时也保持其内容。
数据处理设备可以使用一个或多个高速缓存用于改善的性能。例如,中央处理单元(CPU)可以包括一个或多个级别的高速缓存。类似地,存储器控制器和其它部件可以包括数据缓冲器。
另外,数据处理设备可以被配置为使用不同的技术以在不同的存储器空间存储数据。例如,可寻址存储器空间中的一些或全部可以被配置为作为写回(WB)存储器操作。当应用、操作系统或其它软件将数据存储到WB存储器时,数据实际首先被保存到高速缓存中,然后仅在特定条件下或在预定的间隔处数据被写入到最终存储器位置。当新的数据已经写入到高速缓存但是还未写入到存储器中的对应位置时,在高速缓存中的数据被认为是新的,而在存储器中的老的数据被认为是陈旧的。另外,包含新的数据的高速缓存行被认为是脏(dirty)的。
当操作系统或应用将数据存储或写入到持久存储器中的指定位置时,在认为完成存储指令或操作的时间与实际将数据存储在持久存储器中的时间之间可能存在显著的延迟。因此,如果在应用已经执行了存储指令之后但在相对应的数据已经到达持久存储器域之前丢失了电力,则可能发生错误结果。出于本公开的目的,术语“持久存储器域”指的是即使在数据到达硬件部件之后丢失电力也能保证接收到的数据被保存在持久存储器中的所述(那些)硬件部件(或部件集合)。另外,术语“PM软件”指的是将数据存储到持久存储器的应用软件、将数据存储到持久存储器的操作系统、或者将数据存储到持久存储器的其它类型的软件。另外,术语“耐久的(durable)”可以用于指代已经到达持久存储器域的数据。
如果软件开发者非常关心并密切关注多个细节,则开发者可以设计解决电力损失和错误结果的风险的PM软件。但是,如下文详细描述的,在应用软件级别解决这些风险可能不是解决这些风险的最佳方式。软件开发者可以使用用于支持持久存储器的改善方法和装置。
附图说明
图1是具有用于支持持久存储器的特征的示例性数据处理系统的框图;
图2是示出了示例性存储器空间的集合的框图;
图3是使用持久存储器的示例性过程的流程图;
图4A和4B表示描绘用于支持持久存储器的示例性操作序列的序列图;
图5A和5B表示用于支持持久存储器的示例性过程的流程图;以及
图6是描绘用于支持持久存储器的替代示例性操作序列的序列图。
具体实施方式
在常规的高速缓存一致、字节可寻址的、持久存储器系统中,因为到WB存储器的滞后写入在它们到达持久存储器域之前完成,所以软件需要针对要求耐久性的写入采取额外的预防措施。出于本公开的目的,“滞后写入”是在要写入的数据实际到达最终存储目的地之前被认为完成的写入。滞后写入数据例如可以位于处理单元中,在高速缓存层级内的某处,或者在存储器控制器中。并且如果发生电力故障,则数据将在没有到达持久存储器域中的耐久性的情况下丢失。因此,软件必须确保写入内容在软件认为原子、一致、隔离且耐久(ACID)事务完成之前到达持久存储器域。例如,发布随机写入的应用软件(例如,在线事务处理(OLTP)应用)可能需要阻塞进一步执行应用,直到每个写入被冲洗(flush)出以确保在软件能够进行到下一步骤之前数据已经到达持久存储器域。可替代地,如下文更详细描述的,为了确保提交的事务是耐久的,执行事务的软件有必要(a)跟踪受所述事务影响的所有存储器地址,以及(b)明确将那些地址中的每一个(以高速缓存行(cache line)粒度)冲洗出高速缓存。
用于支持持久存储器的改善方法和装置使得软件能够确保提交的事务是耐久的,而不要求软件跟踪受事务影响的所有存储器地址,并且不要求软件明确以高速缓存行粒度将那些地址中的每一个冲洗出高速缓存。
图1是具有用于支持持久存储器的特征的示例性数据处理系统10的框图。如本文使用的,术语“处理系统”和“数据处理系统”旨在广泛地包括单个机器、或通信地耦合的机器或一起运行的设备构成的系统。例如,两个或更多个机器可以使用在点对点模型、客户端/服务器模型或云计算模型上的一个或多个变型进行协作,以提供本文所描述功能的一些或全部。
在图1的实施例中,数据处理系统10包括本地处理设备20和远程处理设备12。在图1的实施例中,远程处理设备12为其它设备(例如,本地处理设备20)提供网络附加存储(NAS)18。可以针对本地处理设备20和远程处理设备12使用任意适当类型的处理设备。在一些实施例中,可以省略远程处理设备。在图1的实施例中,在处理系统10中的处理设备经由一个或多个网络14彼此连接或彼此通信。网络可以包括局域网(LAN)和/或广域网(WAN)(例如,互联网)。出于本详细描述的目的,本地处理设备20还可以简称为“处理设备20”。
在图1的实施例中,处理设备20特征在于至少一个中央处理单元(CPU)或处理器22,以及易失性随机存取存储器(RAM)50、持久存储器(PM)60、网络端口70、以及一个或多个非易失性大容量数据存储设备,例如,硬盘驱动器(HDD)40。RAM 50、PM 60和端口70可以响应于或耦合到处理器22。HDD 40可以经由I/O控制器90耦合到处理器22。额外的输入/输出(I/O)部件(例如,键盘、显示器等)也可以响应于或耦合到处理器22。处理器22可以包括一个或多个处理器核心。处理器核心还可以称为处理单元或处理元件。
在图1的实施例中,HDD 40包含操作系统(OS)42和应用44。应用44还可以称为应用代码。处理设备20可以将OS 42和应用44复制到RAM 50以供执行。应用44还可以与RAM 50中的数据一起工作,并且应用44可以将不同类型或种类的数据保存到不同的非易失性介质以进行保留。在图1的实施例中,应用44被设计为将应用数据66保存到持久存储器60。因此,应用44也可以称为PM软件。应用44还可以将数据保存到其它本地和/或远程存储设备。例如,应用44可以将应用数据46保存在HDD 40以及将应用数据16保存在NAS 18。
在图1的实施例中,处理设备20的存储器架构包括主存储器控制器(MMC)30、高速缓存控制器32、以及至少一级别的处理器高速缓存34。在图1的实施例中,MMC 30、高速缓存控制器32、以及高速缓存34直接或间接地耦合到处理器22。在可替代实施例中,MMC、高速缓存控制器、以及高速缓存中的一个、一些或全部可以与处理器集成。在图1的实施例中,存储器架构还包括易失性存储器50、持久存储器60、以及持久存储器控制器(PMC)62。在图1的实施例中,PMC 62与持久存储器集成或封装。在可替代实施例中,PMC的一些或全部可以与其它部件(例如,与MMC和/或处理器核心)集成或封装。在图1的实施例中,一旦PM数据已经到达PMC 62,则其到达持久存储器域。
MMC和PMC还可以包括高速缓存或缓冲器。例如,在图1的实施例中,MMC 30特征在于写入-未决缓冲器(WPB)36。
存储器架构还包括控制逻辑,用于控制和协调存储器架构中的各个部件的活动。在图1的实施例中,存储器管理控制逻辑被实现为存储器管理微代码(MMMC)80,并且MMMC80的一些或全部存储在处理器22中。在可替代实施例中,存储器管理控制逻辑的一些或全部可以驻留在其它部件中(例如,在MMC中)。另外或可替代地,存储器管理控制逻辑的一些或全部可以被实现为固件、一个或多个状态机、硬接线逻辑和/或任意其它适当类型的控制逻辑。出于本公开的目的,存储器管理控制逻辑和相关联的硬件部件可以统称为存储器管理系统(MMS)。
存储器架构的部件的一些或全部可以被配置为作为高速缓存一致性域进行操作。例如,高速缓存一致性域可以包括处理器22、MMC 30、RAM 50、以及持久存储器60。在另一实施例中,高速缓存一致性域还可以包括持久存储器控制器。
另外,处理设备可以在不同抽象级别提供不同种类的资源。例如,可以将硬件和固件中的一些或全部统称为平台。操作系统可以在所述平台的顶部运行,以建立较高级别的被称为系统级别的抽象。另外,应用可以在操作系统的顶部在应用级别运行。
平台可以提供各种指令用于耐久的写入。这些指令可以包括以下:
●CLFLUSH(高速缓存行冲洗):使得来自高速缓存层级的所有级别的、包含由源操作数所指定的线性地址的高速缓存行无效。在整个高速缓存一致性域中广播所述无效。如果在高速缓存层级的任意级别处所述行与存储器不一致(脏的),则在无效前将该行写入到存储器。这是无序指令。
●CLWB(高速缓存行写回):将来自高速缓存层级的任意级别的、包含由存储器操作数所指定的线性地址的高速缓存行写回到高速缓存一致性域中,而不使得该高速缓存行无效。这是无序指令。
●CMTPM(提交到持久存储器):使得某些到PM的存储到存储器的操作变得耐久或持久(即,保护免于电力故障)。例如,CMTPM可以将所有未决的PM写入驱逐出MMC的WPB。因此,CMTPM可以确保已经写入到MMC的数据也被写入到持久存储器域中。
存储器架构中的指令还可以包括一个或多个串行化或“栅栏”指令,例如SFENCE(存储栅栏)和MFENCE(存储器栅栏)。SFENCE保证:针对在程序顺序中先于SFENCE指令的每个存储指令的数据在跟随SFENCE指令后的任意存储指令之前是全局可见的。例如,SFENCE可以使得数据从处理单元的高速缓存写入到存储器控制器中的写入缓冲器中。MFENCE可以类似于SFENCE工作,但是也使得针对加载指令的数据全局可见。当应用执行串行化指令时,控制不会返回到应用,直到串行指令结束其工作为止。因此,串行化指令是阻塞指令(blocking instruction)。
然而,在一些实施例中,即使通过上述指令,发布随机写入的软件仍需要(a)跟踪所有到PM的写入,(b)针对每个更新的PM位置批量地发布CLFLUSH或CLWB,以及(c)使用CMTPM确保在软件认为事务完成之前所有写入已经到达PM域。
例如,如果应用已经将数据写入到十个不同的WB存储器位置作为单个逻辑事务的一部分,则应用可能需要记录所有十个“写入”地址。并且当应用已经判定事务准备好被最终化时,应用可能需要针对那些地址中的每一个来执行一个CLFLUSH指令,以使得对应的脏高速缓存行被冲洗到存储器控制器。然后应用可能需要执行串行化或栅栏指令,以确保CLFLUSH指令在任意随后指令之前被执行。然后应用需要执行CMTPM,以确保被冲洗到主存储器控制器的所有数据已经写入到持久存储器域。然后,应用需要执行最终串行化指令,以确保CMTPM已经结束将数据写入到持久存储器域。在最终串行化指令完成之后,应用然后可以考虑待完成的事务。
对于大部分软件开发者而言跟踪所有存储器写入是非常不常见的要求。需要额外的记录和非常小心以及熟练的设计。并且如果软件没有正确地跟踪和处理存储器写入,则软件可能会遭受到难以检测且可能引起灾难性数据丢失的错误。因此,上述方法造成了脆弱的情况。例如,程序员可能偶然疏忽了确保事务的一个或多个行被冲洗。在这种情况下,软件可能看起来正确运行,直到某天在恰好该点发生电力故障而暴露出代码中的潜在错误。另外,对外部决策的有限的控制可能引起额外的编程困难。例如,可以在一个程序中定义要保存在持久存储器中的数据结构以适应单个高速缓存行,但是所述数据结构可能在别处被重新定义以跨越多个行。因此,这种类型的编程模型不能很好地适合企业类软件,其中潜在的错误的后果将非常严重。
然而,图1的实施例涉及用于降低或消除这种错误的风险的方法和装置。该实施例引入了新的存储器类型,其可以消除应用软件跟踪所有PM写入的需要。这种新的存储器类型还可以消除应用软件明确执行高速缓存冲洗或诸如CLFLUSH或CLWB之类的写回指令的需要。这种新的存储器类型还可以消除应用软件明确执行诸如SFENCE或MFENCE之类的串行化操作的需要。出于本文档的目的,这种新的存储器类型被称为“增强写回”存储器或“WB-E”存储器。并且正被(或已经)写入到WB-E存储器的数据可以称为“WB-E数据”。更一般地,已经写入到任意类型的持久存储器的数据可以被称为“PM数据”。
在一些实施例中,MMS还可以伺机将PM数据从高速缓存写入到存储器控制器。另外或可替代地,MMS可以伺机将PM数据从存储器控制器写入持久存储器域。因此,增强写回存储器还可以称为“渴望写回(eager write-back)”存储器。出于本文档的目的,除非另有指明或上下文清楚要求,否则术语“WB-E”指的是渴望写回存储器和增强写回存储器二者。
在一个实施例中,WB-E存储器在一些方面类似WB存储器进行操作。例如,到WB-E存储器的写入或从WB-E存储器的读取被高速缓存。在高速缓存命中时从高速缓存行读取。读缺失引起高速缓存填充。允许推测读取(speculative read)。写缺失引起高速缓存行填充。取决于潜在的实现方式,也允许写合并。
然而,如下文更详细描述的,在一个实施例中,MMS在整个高速缓存中执行写入,并且MMS标记或跟踪这些写入以在后续用于“渴望”写回。换言之,MMS自动跟踪到WB-E存储器的写入,以在后续提供PM数据到持久存储器域的自动和/或“渴望”写回。MMS可以在适当时间自动安排写回,如实现方式所指定的。另外,MMS使得PM软件能够使用一个或多个串行化指令以确保所有PM数据已经完全写回到持久存储器域。
这种类型的高速缓存控制可以适于其中要求或期望高性能直写(write-through)属性但需要非阻塞写入的PM使用或其它使用。在一个实施例中,MMS通过监听协议来强制一致性。具有WB-E类型的存储器区域可以被认为成具有渴望写回的WB存储器而无需明确的CLFLUSH或CLWB操作。
当使用WB-E存储器时,PM软件不需要跟踪所有存储器写入的位置,因为MMS将自动跟踪PM写入,通过使用一个或多个串行化指令而使得PM软件能够确保PM数据的耐久性。例如,一旦应用完成其针对事务的所有PM写入以确保数据到达PM域,则应用可以简单地发布诸如SFENCE和CMTPM之类的指令。因此,与要求应用跟踪所有PM写入、冲洗特定高速缓存行、或等待冲洗完成、以及等待耐久性保证相比,该模型对于当今的应用更加自然。另外,MMS可以以高效的方式将所有软件写入渴望地写回。
在一个实施例中,MMS包括对WB-E存储器类型的支持,除了其它存储器类型,例如WB、写合并(WC)、直写(WT)、写保护(WP)、以及非高速缓存(UC)。在一个实施例中,为了支持WB-E存储器,MMS扩展在存储器类型范围寄存器(MTRR)、页面属性表(PAT)、页面表、高级配置和电源接口(ACPI)表等中编码的存储器类型。
图2是示出了驻留在虚拟地址空间100的不同部分处的示例性存储器空间的集合的框图。虚拟地址空间100由OS 42设置在处理设备20中,其具有来自MMS的支持。在图2的实施例中,虚拟地址空间100包括三十亿字节(GB)地址块,从存储器地址0开始,映射到具有WB存储器类型的动态RAM(DRAM)。OS 42将另一虚拟地址块映射到具有存储器类型WC的视频控制器。OS 42将另一虚拟地址块映射到具有存储器类型UC的存储器映射I/O(MMIO)。OS 42将另一虚拟地址块映射到具有存储器类型WB的第二级别易失性存储器(2LM)。如框110所示,对于不具有耐久性要求的数据,OS 42将另一虚拟地址块映射到具有存储器类型WB的持久存储器。
如框120所示,对于具有耐久性要求的数据,OS 42将另一虚拟地址块映射到具有存储器类型WB-E的持久存储器。所述虚拟地址块可以被称为“WB-E存储器空间”或简称为“WB-E存储器”。在图2的实施例中,OS 42(具有来自MMS的支持)将WB-E存储器空间映射到PM26中覆盖相同量的空间的物理地址。在另一场景或实施例中,PM容量可以是四太字节,并且WB-E存储器可以占据所有四太字节,WB-E存储器在两太字节(TB)存储器地址处开始。然而,在其它场景、配置或实施例中,WB-E存储器可以具有不同的尺寸、不同的起始地址以及不同的结束地址。
图3是使用持久存储器的示例性过程的流程图。所示的过程开始于如框310所示的启动应用44。然后如框312所示,应用44打开包含持久应用数据的文件。例如,应用44可以打开在图1中示为应用数据66的文件。如框314所示,应用44然后可以将应用数据66映射到WB-E存储器空间。应用数据66还可以称为PM数据文件。
操作系统可以向应用44提供对WB-E存储器的访问。在一个实施例中,操作系统可以总是暴露所有PM具有WB-E存储器类型。在另一实施例中,操作系统可以总是只暴露PM的一部分具有WB-E存储器类型,可能暴露PM的另一部分以用作在WB模式的标准易失性存储器。在另一实施例中,操作系统可以被配置为暴露或者PM中的一些或者所有PM具有WB-E存储器类型的,这取决于环境。在这些不同实施例的每一个中的操作系统可以提供不同组的应用编程接口(API),应用可以使用其来访问WB-E存储器。例如,OS 42可以包括这样的API:其为在常规的IOCTL_DISK_CREATE_XXX、IOCTL_DISK_SET_XXX、以及IOCTL_DISK_GET_XXX接口上的扩展或变型,其中新的接口使得应用能够创建和查询PM分区。
OLTP应用可能不需要所有的写入在启动/电力周期是耐久的。例如,应用可能不要求TEMP DB写入是持久的。因此,应用可以通过不为这种具有保证的耐久语义的写入花费时间而改善性能。在这种用例下,应用可以选择不在将用于TEMP DB写入的PM部分或分区上应用WB-E属性。
现在再次参考图3,在框314处,应用44可以例如使用OS 42提供的API来将PM数据文件映射到WB-E存储器空间120。例如,应用44可以使用如OpenFile()的API来打开基于持久存储器的磁盘/卷上的现有文件或新文件,并且应用44可以利用如CreateFileMapping()和/或MapViewOfFile()的API来将所述文件映射到应用的地址空间。
如框316所示,应用44然后可以使用WB-E存储器空间120内的地址来从PM数据文件读取数据。换言之,应用44可以使用WB-E备份的虚拟存储器内的地址。如框318和320所示,应用44还可以操纵或修改所述数据,并执行指令以将修改后的数据存储回PM数据文件。然而,如下文关于图4A和4B更详细描述的,从应用44的角度,那些写入可以看起来是完成的,即使写入的数据尚未实际到达持久存储器域。
如框330所示,应用44然后可以判定是否已经完成了逻辑事务要求的所有处理。如果否,则可以执行额外的读取、操纵和写入,如以上关于框316、318和320所描述的。
然而,如果完成逻辑事务,则应用44可以执行串行化指令(例如,SFENCE),如框332所示,以确保所有PM写入已经完成了将PM数据写入高速缓存34。如框334所示,应用44然后可以执行提交指令(例如,CMTPM),以使得MMS将可能仍在MMC 30的WPB中的任意PM数据写入持久存储器域。
然而,在图3的实施例中,提交指令不是串行化指令。因此,如框336所示,应用44然后可以执行另一串行化指令(例如,SFENCE),以确保提交指令已经在应用进行任何进一步处理之前结束所有其活动。一旦控制返回到应用44,则应用44可以继续以额外的事务处理PM数据,如从框336到框316的箭头所示。
图4A和4B表示描绘用于支持持久存储器的示例性操作序列的序列图。使用四列来示出不同部件如何协作以完成所示操作。这些列被如下标记:应用、核心、主存储器控制器(或“MMC”)以及持久存储器控制器(或“PMC”)。所示序列突出了响应于关于图3描述的应用44的操作MMS可能执行的操作类型的例子。例如,在图4A中,将来自应用44、寻址WB-E存储器的四个存储指令显示为从应用列引到核心列的四个箭头,这些箭头标记为:Store_1、Store_2、Store_3和Store_4。并且从核心列返回到应用列的虚线显示出应用44可以认为存储指令完成(或“已完成”),即使正被存储的PM数据仅使其到处理器高速缓存。
在图4A中,从核心列引到MMC列的三个箭头示出了MMS的渴望写回,如下文更详细描述的。
图5A和5B表示用于支持持久存储器的示例性过程的流程图。图5A和5B中所示操作的一些或全部可以由MMS执行。所示的操作开始于框510,MMS自动判定最近的操作是否产生好的机会以执行写合并。例如,MMS可以响应于检测到两个写入或存储指令将更新相同的高速缓存行而判定应该执行写合并。响应于肯定判定,MMS可以执行写合并,如框512所示。例如,再次参考图4A,在应用44已经执行了Store_3和Store_4之后,如果这两个操作都更新同一高速缓存行,则MMS可以判定这两个操作应该合并为执行单个写入的单个写合并操作。因此,MMS自动发布仅一个优化的冲洗或写回操作,示为“WB_3”。另外或可替代地,取决于实现方式或配置,MMS可以通过执行来自高速缓存行的写入而不使这些高速缓存行无效来优化性能。这种优化在存在对近期写入数据的重新使用的场景中是有益的。
用于写合并优化的控制逻辑可以驻留在处理器22的微引擎中,在高速缓存控制器32的微引擎中、和/或在其它部件中的微代码(或其它控制逻辑)中。
图5A中的过程然后可以进行到框520,MMS自动判定处理设备20的当前状态是否呈现好的机会来执行到MMC的渴望写回。例如,MMS可以判定将数据从高速缓存34写入到MMC30所需的资源是否可用。在一个实施例中,MMS每当允许写入时和/或每当读取/写入带宽或利用率落到特定阈值之下时做出这种判定。例如,为了消除延迟问题,可以使用写入信用(write credit)来跟踪未完成(outstanding)写入的数量,以免压倒并发写入能力或目标目的地的缓冲能力,并且跟踪信用可以消除在端点之间同步通信的需要。因此,MMS可以判定当存在足够可用的写入信用时允许写入。另外或可替代地,MMS可以判定(a)如果高速缓存控制器32自由或空闲和/或(b)如果当前条件呈现机会来优化电力预算,则存在好的机会来从高速缓存写入数据。例如,MMS可以通过将高速缓存行粒度的写入大小合并为持久存储器的粗页面-行粒度,来判定当前条件呈现机会来优化电力预算。例如,可以将这一合并作为批量操作在处理器掉落到较低功率状态之前进行。要考虑的因素可以包括空间局部性、持久存储器的电力状态、以及当前核心和管芯的电力状态标准。这些因素可以用于最小化电力状态转换。例如,在一些条件下,MMS可以选择立即进行写回;而在其它条件下,MMS可以选择延迟写回以最终分配写入,从而处理器能够更经常地掉落到较低电力状态,或更久地保持在较低电力状态中。在可替代实施例中,MMS可以使用其它方法来控制何时做出判定,并且MMS可以在判定是否存在好的机会时考虑其它因素。
如框522所示,如果MMS已经检测到好的机会,则MMS可以判定高速缓存34是否包含尚未写入到MMC的WPB中的任何WB-E数据。出于本公开的目的,尚未写入到MMC的WPB中的WB-E数据可以称为“未决WB-E高速缓存数据”。
在一个实施例中,MMS通过维持指示未决渴望写回的WB-E等待队列来自动跟踪未决WB-E高速缓存数据。并且MMS通过查找所述队列或通过考虑扩展的高速缓存标记来判定高速缓存34是否包含未决WB-E高速缓存数据。在可替代实施例中,MMS可以使用其它方法用于跟踪未决WB-E高速缓存数据和/或判定是否存在未决WB-E高速缓存数据。例如,MMS可以扩展高速缓存标记来指示哪个高速缓存行正等待渴望写回。
如果高速缓存34包含未决WB-E高速缓存数据,则MMS可以自动执行渴望写回,如框524所示。例如,如图4A所示,MMS可以使用CLWB操作或指令来将未决WB-E高速缓存数据写入到MMC 30。箭头“WB_1”和“WB_2”示出了MMS正根据前两个存储指令将WB-E数据写回到MMC。而箭头“WB_3”示出了MMS正根据组合的Store_3和Store_4指令写回WB-E数据。
如框530所示,MMS然后可以判定处理设备20的当前状态是否呈现好的机会以执行到持久存储器域的渴望写回。(MMS还可以响应于在框520或框522处的否定判定而到达框530。)例如,MMS可以判定将数据从主存储器控制器写入到持久存储器域所需的资源是否可用。在一个实施例中,每当存在足够的写入资源可用于执行从MMS域到PM域的渴望驱逐(eviction)时MMS做出这种判定。如果MMC 30是空闲的且没有写入未决,则MMS可以判定存在好的机会。如果非常少的或没有写入资源正在被使用,则可以认为MMC 30是空闲的。如果写入未决缓冲器是空的,则MMS可以判定没有写入是未决的。在可替代实施例中,MMS可以使用其它方法来控制何时做出判定,并且MMS可以在判定是否存在好的机会时考虑其它因素。
如框532所示,如果MMS已经检测到好的机会,则MMS可以判定WPB 36是否包含尚未写入到持久存储器域的任何WB-E数据。出于本公开的目的,尚未写入到持久存储器域的WB-E数据可以称为“未决WPB数据”。此外,术语“未决WB-E数据”包括未决WB-E高速缓存数据和未决WPB数据。
在一个实施例中,MMS通过维持队列;先入先出(FIFO)堆栈;或者任意其它适当数据结构来自动跟踪未决WPB数据。并且MMS通过检查所述数据结构来判定高速缓存34是否包含未决WPB数据。在可替代实施例中,MMS可以使用其它方法跟踪未决WPB数据并用于判定存在未决WPB数据。例如,MMS可以实现自排水漏桶(self-draining leaky bucket)数据结构,其将取决于接受任何更多写入的PM能力来自主地驱逐(evict)桶。
如果WPB 36包含未决WPB数据,则MMS可以自动执行渴望写回,如框534所示。这种写回还可以称为驱逐或冲洗。例如,如图4A所示,MMS可以将未决WPB数据写入到PMC。箭头“Persistet_Write_A”示出了MMS正根据第一存储指令将WB_E数据写回到持久存储器域。
该过程然后可以穿过页面连接器A到框540,其示出了MMS判定应用44是否已经执行了串行化指令(例如,SFENCE)。如果应用44尚未执行串行化指令,则MMS可以判定应用44是否已经执行了提交指令(例如,CMTPM),如框550所示。如果应用44尚未执行提交指令,则该过程可以穿过页面连接器B到框510,MMS重复如上所述的操作。
然而,再返回参考框540,应用44已经执行了串行化指令,则MMS可以判定是否在高速缓存34中存在来自应用44的任意未决WB-E数据,如框542所示。如果高速缓存包含这种数据,则MMS可以执行写回操作以将未决数据写入到MMC 30,如框544所示。如返回到框542的箭头所示,MMS然后检查在高速缓存34中是否还存在应用44的任何未决WB-E数据。
例如,再参考图4A,从应用列引到核心列的“SFENCE”箭头示出了在MMS已经渴望地将所有未决WP-E高速缓存数据写入到MMC 30之后由应用44执行的串行化指令。因此,从核心列返回到核心列的短的弯曲箭头示出了SFENCE指令需要花费非常少的时间(如果存在的话)来等待脏的高速缓存行被写回到MMC 30。
再参考图5B,当高速缓存34不再包含应用44的未决WB-E数据时,所述过程可以从框542转到框546,其示出了MMS判定有提交操作(例如,CMTPM)是否在进行中。例如,如下文更详细描述的,CMTPM可以在冲洗WPB 36的过程中。如果提交操作在进行中,则串行化操作可以等待直到提交操作已经结束了所有其工作。例如,如框547所示,MMS可以判定WPB 36是否是空的。并且如框548和返回到框547的箭头所示,MMS可以将在WPB 36中剩余的任何数据冲洗到持久存储器域。一旦WPB 36是空的,则CMTPM指令可以被认为是完成的,并且所述过程可以从框547转到框549。如框549所示,一旦提交操作已经完成了所有其工作,或者如果没有提交在进行中,则MMS可以完成串行化指令。例如,再次参考图4A,虚线“SFENCE_done”示出了当没有CMTPM在进行中时SFENCE指令的完成。
然而,再次参考框550,如果应用44已经执行了提交指令,则MMS可以自动开始写入、冲洗或驱逐所有未决WPB数据(如果存在的话)到持久存储器域,如框552所示,且如以上关于框546、547、548和549所描述的。然而,在图5B的实施例中,提交指令是非阻塞的。换言之,当应用执行提交指令时,控制可以返回到应用,允许应用在提交指令结束所有其工作之前继续进行另外的指令。
因此,如图4B所示,应用44可以执行提交指令,之后是串行化指令,串行化指令将等待提交指令结束所有其工作。例如,SFENCE可以等待MMS将WPB数据从WB_2和WB_3驱逐到持久存储器域,如箭头“Persisten_Write_B”和“Persistent_Write_C”分别所示。因此,一旦图4B中的SFENCE完成,如虚箭头“SFENCE_done”所示,则应用44可以确信WB-E数据通过到达持久存储器域而已经实现耐久性。
WB-E存储器类型与如SFENCE和CMTPM之类的指令组合在存储器在远程节点中或在远程节点之后的环境中、在使用系统结构互连的环境中、以及在其它环境或场景中是有益的。
在一个实施例中,串行化指令是本地的,而提交指令是全局的。换言之,SFENCE提供针对执行SFENCE的特定线程的串行化操作,而CMTPM提供针对来自所有存储器控制器的所有线程的所有PM数据驱逐。
图6是描绘用于支持持久存储器的另一示例性操作序列的序列图。在图6的实施例中,如上所述,平台支持WB-E存储器。另外,平台(例如,处理器微架构)支持如以上关于图5B描述的组合串行化操作和提交操作的新指令。该新指令可以称为“存储栅栏与持久提交”(SFPC)指令。替代使用如以上关于图4A和4B描述的指令序列,(例如,SFENCE,然后是CMTPM,然后是另一SFENCE),应用可以使用单个SFPC。例如,如图6所示,如果应用正在处理涉及两个写入或存储的事务,则应用可以首先执行所述两个存储,如箭头“Store_1”和“Store_2”所示。为了完成事务,应用然后可以执行SFPC。在图6的实施例中,SFPC是阻塞指令。因此,应用将不会重新获得控制,直到SFPC结束所有其工作。在该例子中,如箭头“WB_1”和“WB_2”所示,所述工作包括将未决WB-E数据从高速缓存写入到MMC。并且如箭头“Persistent_Write_1”和“Persistent_Write_2”所示,所述工作还包括将所有未决WPB数据从WPB驱逐到持久存储器域。一旦MMS已经将WB-E数据写入持久存储器域,则控制返回到应用,如箭头“SFPC_done”所示。另外,如上所述,MMS可以支持对未决高速缓存数据和未决WPB数据的渴望写回。
在不同的实施例中,SFPC指令可以基于通过应用或操作系统传递给MMS以优化应用性能的变元(argument),以以下为目标:(a)一个MMC,(b)一组MMC,或(c)所有MMC。例如,在处理设备中针对非均匀存储器访问(NUMA)很好划分的应用可以通过利用以特定MMC或特定一组MMC为目标的灵活性,而享用显著改进的性能。
一个实施例的优点在于所公开的技术使得软件开发者更容易编写有效处理原地修改PM数据、随机写入PM等的代码。相比之下,例如计算机语言扩展、编译器固有函数、以及编译器原语的替代例较不鲁棒。例如,编译器固有或原语可能仅适用于例如“memcpy”的块操作。
另一优点在于本教导可以用于简化对于处理逻辑事务必需的软件代码。例如,当处理设备特征在于以上所述技术时,应用可能不需要“打开”事务。
根据本文所描述和示出的原理和示例性实施例,可以认识到,所示实施例可以在布置和细节方面进行修改,而不脱离这种原理。例如,本文所描述的技术可以用于异步地镜像结构环境中一个或多个存储器范围。这种范围镜像在冗余系统在持久存储器中复制存储器图像的用例下尤其有用,而不是使用SAN方案。
另外,以上讨论集中于特定实施例,但是可以构思其它配置。并且,即使在本文中使用例如“实施例”、“一个实施例”、“另一实施例”等的表达,但这些短语意指一般参考实施例可能,而不是想要将发明限制于特定实施例配置。如本文所使用的,这些短语可以参考相同或不同的实施例,并且这些实施例可以组合为其它实施例。
可以使用任意适当的操作环境和编程语言(或操作环境和编程语言的组合)来实现本文所描述的部件。如上所示,本教导可以在多种不同类型的数据处理系统中有利地使用。示例性数据处理系统包括但不限于:分布式计算系统、超级计算机、高性能计算系统、计算集群、大型计算机、迷你计算机、客户端-服务器系统、个人计算机(PC)、工作站、服务器、便携式计算机、膝上型计算机、平板计算机、个人数字助理(PDA)、电话、手持设备、娱乐设备(诸如音频设备、视频设备、音频/视频设备(例如,电视机和机顶盒))、车辆处理系统、以及用于处理或传输信息的其它设备。因此,除非另有明确指出或上下文要求,否则提及任何特定类型的数据处理系统(例如,移动设备)应该理解为也包括其它类型的数据处理系统。另外,除非另有明确表明,否则被描述为彼此耦合、彼此通信、响应于彼此等的部件不需要连续地彼此通信,并且不需要直接彼此耦合。类似地,当将一个部件描述为从另一部件接收数据或发送数据到另一部件时,所述数据可以被通过一个或多个中间部件发送和接收,除非另有明确指明。另外,数据处理系统的一些部件可以实现为具有接口(例如,连接器)的适配器卡以用于与总线通信。可替代地,利用例如可编程或不可编程逻辑设备或阵列、专用集成电路(ASIC)、嵌入式计算机、智能卡等的部件,可以将设备或部件实现为嵌入式控制器。出于本公开的目的,术语“总线”包括可以由多于两个的设备共享的路径以及点对点路径。
本公开可以涉及指令、函数、过程、数据结构、应用程序、微代码、配置设置以及其它种类的数据。如上所述,当通过机器或设备访问数据时,所述机器或设备可以通过执行任务、定义摘要数据类型或低级硬件上下文和/或执行其它操作进行响应。例如,数据存储、RAM和/或闪速存储器可以包括各种指令集,其当被执行时,执行各种操作。这种指令集可以一般被称为软件。另外,术语“程序”通常可以用于覆盖宽广范围的软件指令,包括应用、例程、模块、驱动器、子程序、过程以及其它类型的软件部件。另外,在一个示例性实施例中以上描述的驻留在特定设备中的应用和/或其它数据在其它实施例中可以驻留在一个或多个其它设备中。并且在一个示例性实施例中以上描述的在一个特定设备上执行的计算操作在其它实施例中可以由一个或多个其它设备执行。
应当理解的是,本文描绘的硬件和软件部件表示合理自包含的功能元件,从而每个可以基本独立于其它被设计、构造或更新。在可替代实施例中,许多部件可以实现为硬件、软件、或硬件和软件的组合,以提供本文所描述和示出的功能。例如,可替代实施例可以包括用于执行本发明的操作的机器可访问介质编码指令或控制逻辑。这种实施例还可以称为程序产品。这种机器可访问介质可以包括但不限于:有形存储介质,如磁盘、光盘、RAM、ROM等,以及处理器、控制器和包括RAM、ROM和/或其它存储设施的其它部件。出于本公开的目的,术语“ROM”一般可以用于指代非易失性存储器设备,例如可擦除可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)、闪速ROM、闪速存储器等。在一些实施例中,用于实现所描述的操作的一些或全部控制逻辑可以实现在硬件逻辑中(例如,作为集成电路芯片、可编程门阵列(PGA)、ASIC等的一部分)。在至少一个实施例中,用于所有部件的指令可以存储在一个非暂时性机器可访问介质中。在至少一个其它实施例中,两个或更多个非暂时性机器可访问介质可以用于存储用于部件的指令。例如,用于一个部件的指令可以存储在一个介质中,而用于另一部件的指令可以存储在另一介质中。可替代地,用于一个部件的指令的一部分可以存储在一个介质中,而用于所述部件的剩余指令(以及其它部件的指令)可以存储在一个或多个其它介质中。指令还可以用于分布式环境中,并可以本地和/或远程存储,以由单个或多个处理器机器访问。
另外,虽然已经关于以特定序列执行的特定操作描述了一个或多个示例性过程,但可以将多种修改应用于这些过程,以导出本发明的多种可替代实施例。例如,可替代实施例可以包括使用比所公开操作的全部少的过程、使用额外操作的过程、以及组合、细分、重新布置或以其他方式更改本文公开的个体操作的过程。
根据可以从本文所描述的示例性实施例容易地导出的多种有用置换,该详细描述意图仅是说明性的,并不应该解释为限制覆盖的范围。
以下例子属于进一步的实施例。
例子A1是一种用于支持持久存储器的自动化方法。处理设备为在处理设备的处理单元上运行的应用提供WB-E存储器空间。所述处理设备包括存储器管理系统和在持久存储器域中的持久存储器。所述存储器管理系统将所述WB-E存储器空间映射到所述持久存储器。响应于由所述应用创建WB-E数据,所述处理设备自动将所述WB-E数据存储在与所述处理单元相关联的高速缓存中。所述应用通过执行指令以将数据存储到在所述WB-E存储器空间中的地址而创建WB-E数据。响应于在所述应用已经针对多个存储器地址创建了WB-E数据之后所述应用执行提交指令,处理设备自动确保用于所述应用的所有WB-E数据已经被保存到所述持久存储器域。自动确保用于所述应用的所有WB-E数据已经被保存到所述持久存储器域的操作是由所述存储器管理系统执行的。
例子A2包括例子A1的特征,并且响应于先提交的串行化指令,如果用于所述应用的所述WB-E数据中的任何WB-E数据尚未从高速缓存写入到所述数据处理设备中的主存储器控制器,则MMS将所述WB-E数据从高速缓存写入到所述主存储器控制器。
例子A3包括例子A1的特征,并且将所述WB-E数据从高速缓存写入到所述主存储器控制器的操作是在自动确保用于所述应用的所有WB-E数据已经被保存到所述持久存储器域的操作之前执行的。并且,自动确保用于所述应用的所有WB-E数据已经被保存到所述持久存储器域的操作包括:将在所述主存储器控制器中的、用于所述应用的所有WB-E数据从所述主存储器控制器写入到所述持久存储器域。例子A3还包括例子A2的特征。
例子A4包括例子A3的特征,并且响应于由所述应用执行后提交的串行化指令,仅在用于所述应用的所有WB-E数据已经被保存到所述持久存储器域之后,处理设备将控制返回给所述应用。例子A4还包括例子A2的特征。
例子A5包括例子A1的特征,并且所述处理设备自动判定将数据从高速缓存写入到主存储器控制器所需的资源是否可用。所述处理设备自动判定所述高速缓存是否包含任何WB-E数据。响应于判定出(a)将数据从高速缓存写入到主存储器控制器所需的资源可用,以及(b)所述高速缓存包含WB-E数据,所述处理设备自动将WB-E数据中的至少一些从所述高速缓存写入到所述主存储器控制器。例子A5还包括(a)例子A2、A3或A4的特征;(b)例子A2和A3的特征;或者(c)例子A2和A4的特征。
例子A6包括例子A5的特征,并且所述处理设备自动判定将数据从主存储器控制器写入到持久存储器域所需的资源是否可用。所述处理设备还自动判定所述主存储器控制器是否包含任何WB-E数据。响应于判定出(a)将数据从主存储器控制器写入到持久存储器域所需的资源可用,以及(b)所述持久存储器域包含WB-E数据,所述处理设备自动将WB-E数据中的至少一些从所述主存储器控制器写入到所述持久存储器域。例子A6还包括(a)例子A2、A3或A4的特征;(b)例子A2和A3的特征;或者(c)例子A2和A4的特征。
例子A7包括例子A1的特征,并且所述处理设备自动判定将数据从主存储器控制器写入到持久存储器域所需的资源是否可用。所述处理设备还自动判定所述主存储器控制器是否包含任何WB-E数据。响应于判定出(a)将数据从主存储器控制器写入到持久存储器域所需的资源可用,以及(b)所述持久存储器域包含WB-E数据,所述处理设备自动将WB-E数据中的至少一些从所述主存储器控制器写入到所述持久存储器域。例子A7还包括(a)例子A2、A3、A4、A5或A6的特征;或者(b)例子A2到A6中任意两个或更多个的特征。
例子A8包括例子A1的特征,并且用于所述处理设备的存储器管理系统自动跟踪在所述高速缓存中的所述WB-E数据。例子A8还包括(a)例子A2、A3、A4、A5、A6或A7的特征;或者(b)例子A2到A7中任意两个或更多个的特征。
例子A9包括例子A1的特征,并且所述处理设备包括主存储器控制器和存储器管理系统。并且,所述存储器管理系统自动跟踪在所述主存储器控制器中的所述WB-E数据。例子A9还包括(a)例子A2、A3、A4、A5、A6、A7或A8的特征;或者(b)例子A2到A8中任意两个或更多个的特征。
例子A10包括例子A1的特征,并且所述应用在运行于系统层的操作系统的顶部的应用层运行。并且,所述处理设备支持在系统层的WB-E存储器。例子A10还包括(a)例子A2、A3、A4、A5、A6、A7、A8或A9的特征;或者(b)例子A2到A9中任意两个或更多个的特征。
例子A11包括例子A10的特征,并且所述操作系统提供应用程序接口(API),其使得所述应用能够创建到所述WB-E存储器空间的映射。例子A11还包括(a)例子A2、A3、A4、A5、A6、A7、A8或A9的特征;或者(b)例子A2到A9中任意两个或更多个的特征。
例子A12包括例子A1的特征,并且所述应用在运行于系统层的操作系统的顶部的应用层运行。所述操作系统在操作于平台层的平台的顶部运行,其中,所述平台包括硬件和固件。所述处理设备支持在平台层的WB-E存储器。例子A12还包括(a)例子A2、A3、A4、A5、A6、A7、A8、A9、A10或A11的特征;或者(b)例子A2到A11中任意两个或更多个的特征。
例子A13包括例子A12的特征,并且所述平台包括:所述处理单元;所述持久存储器;以及存储器管理系统,其提供WB-E存储器。例子A13还包括(a)例子A2、A3、A4、A5、A6、A7、A8、A9、A10或A11的特征;或者(b)例子A2到A11中任意两个或更多个的特征。
例子B是至少一种机器可访问介质,其包括用于支持持久存储器的计算机指令。所述计算机指令响应于在数据处理系统上被执行,而使得所述数据处理系统能够执行根据例子A1到A13中的任意一个或多个所述的方法。
例子C是一种支持持久存储器的数据处理系统。所述数据处理系统包括:处理元件;响应于所述处理元件的至少一种机器可访问介质;以及至少部分存储在至少一种机器可访问介质中的计算机指令。并且,所述计算机指令响应于被执行,而使得所述数据处理系统能够执行根据例子A1到A13中的任意一个或多个所述的方法。
例子D是一种支持持久存储器的数据处理系统。所述数据处理系统包括:用于执行根据例子A1到A13中的任意一个或多个所述的方法的单元。
Claims (25)
1.一种具有支持持久存储器的特征的数据处理系统,所述数据处理系统包括:
处理元件;
至少一种机器可访问介质,其响应于所述处理元件,其中,所述至少一种机器可访问介质包括在持久存储器域内操作的持久存储器;以及
存储器管理系统,其促进所述处理元件和所述持久存储器之间的通信,其中,所述存储器管理系统被配置为使得所述数据处理系统能够执行以下操作,包括:
为在所述处理元件上运行的应用提供增强写回WB-E存储器空间;
将所述WB-E存储器空间映射到所述持久存储器;
响应于由所述应用创建WB-E数据,自动将所述WB-E数据存储在与所述处理元件相关联的高速缓存中,其中,所述应用通过执行指令以将数据存储到在所述WB-E存储器空间中的地址而创建WB-E数据;以及
响应于在所述应用已经针对多个存储器地址创建了WB-E数据之后由所述应用执行提交指令,自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域。
2.根据权利要求1所述的数据处理系统,其中:
所述数据处理系统包括响应于所述处理元件的主存储器控制器;并且
所述操作还包括:响应于先提交的串行化指令,如果用于所述应用的所述WB-E数据中的任何WB-E数据尚未从所述高速缓存写入到所述数据处理系统中的主存储器控制器,则将所述WB-E数据从所述高速缓存写入到所述主存储器控制器。
3.根据权利要求2所述的数据处理系统,其中:
将所述WB-E数据从所述高速缓存写入到所述主存储器控制器的操作是在自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域的操作之前执行的;并且
自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域的操作包括:将在所述主存储器控制器中的、用于所述应用的所有WB-E数据从所述主存储器控制器写入到所述持久存储器域。
4.根据权利要求3所述的数据处理系统,其中,所述操作还包括:
响应于由所述应用执行后提交的串行化指令,仅在用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域之后将控制返回给所述应用。
5.根据权利要求1所述的数据处理系统,其中:
所述存储器管理系统包括响应于所述处理元件的主存储器控制器;并且
所述操作还包括:
自动判定将数据从所述高速缓存写入到所述主存储器控制器所需的资源是否可用;
自动判定所述高速缓存是否包含任何WB-E数据;以及
响应于判定出(a)将数据从所述高速缓存写入到所述主存储器控制器所需的资源可用,以及(b)所述高速缓存包含WB-E数据,自动将所述WB-E数据中的至少一些从所述高速缓存写入到所述主存储器控制器。
6.根据权利要求5所述的数据处理系统,其中,所述操作还包括:
自动判定将数据从所述主存储器控制器写入到所述持久存储器域所需的资源是否可用;
自动判定所述主存储器控制器是否包含任何WB-E数据;以及
响应于判定出(a)将数据从所述主存储器控制器写入到所述持久存储器域所需的资源可用,以及(b)所述持久存储器域包含WB-E数据,自动将所述WB-E数据中的至少一些从所述主存储器控制器写入到所述持久存储器域。
7.根据权利要求1所述的数据处理系统,其中:
所述存储器管理系统包括响应于所述处理元件的主存储器控制器;并且
所述操作还包括:
自动判定将数据从所述主存储器控制器写入到所述持久存储器域所需的资源是否可用;
自动判定所述主存储器控制器是否包含任何WB-E数据;以及
响应于判定出(a)将数据从所述主存储器控制器写入到所述持久存储器域所需的资源可用,以及(b)所述持久存储器域包含WB-E数据,自动将所述WB-E数据中的至少一些从所述主存储器控制器写入到所述持久存储器域。
8.一种用于支持持久存储器的方法,所述方法包括:
为在处理设备的处理单元上运行的应用提供增强写回WB-E存储器空间,其中,所述处理设备包括存储器管理系统和在持久存储器域中的持久存储器,并且其中,所述存储器管理系统将所述WB-E存储器空间映射到所述持久存储器;
响应于由所述应用创建WB-E数据,自动将所述WB-E数据存储在与所述处理单元相关联的高速缓存中,其中,所述应用通过执行指令以将数据存储到在所述WB-E存储器空间中的地址而创建所述WB-E数据;以及
响应于在所述应用已经针对多个存储器地址创建了WB-E数据之后由所述应用执行提交指令,自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域,其中,自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域的操作是由所述存储器管理系统执行的。
9.根据权利要求8所述的方法,还包括:
响应于先提交的串行化指令,如果用于所述应用的所述WB-E数据中的任何WB-E数据尚未从所述高速缓存写入到所述处理设备中的主存储器控制器,则将所述WB-E数据从所述高速缓存写入到所述主存储器控制器。
10.根据权利要求9所述的方法,其中:
将所述WB-E数据从所述高速缓存写入到所述主存储器控制器的操作是在自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域的操作之前执行的;并且
自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域的操作包括:将在所述主存储器控制器中的、用于所述应用的所有WB-E数据从所述主存储器控制器写入到所述持久存储器域。
11.根据权利要求8所述的方法,还包括:
响应于由所述应用执行后提交的串行化指令,仅在用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域之后将控制返回给所述应用。
12.根据权利要求8所述的方法,还包括:
自动判定将数据从所述高速缓存写入到主存储器控制器所需的资源是否可用;
自动判定所述高速缓存是否包含任何WB-E数据;以及
响应于判定出(a)将数据从所述高速缓存写入到所述主存储器控制器所需的资源可用,以及(b)所述高速缓存包含WB-E数据,自动将所述WB-E数据中的至少一些从所述高速缓存写入到所述主存储器控制器。
13.根据权利要求12所述的方法,还包括:
自动判定将数据从所述主存储器控制器写入到所述持久存储器域所需的资源是否可用;
自动判定所述主存储器控制器是否包含任何WB-E数据;以及
响应于判定出(a)将数据从所述主存储器控制器写入到所述持久存储器域所需的资源可用,以及(b)所述持久存储器域包含WB-E数据,自动将所述WB-E数据中的至少一些从所述主存储器控制器写入到所述持久存储器域。
14.根据权利要求8所述的方法,还包括:
自动判定将数据从主存储器控制器写入到所述持久存储器域所需的资源是否可用;
自动判定所述主存储器控制器是否包含任何WB-E数据;以及
响应于判定出(a)将数据从所述主存储器控制器写入到所述持久存储器域所需的资源可用,以及(b)所述持久存储器域包含WB-E数据,自动将所述WB-E数据中的至少一些从所述主存储器控制器写入到所述持久存储器域。
15.根据权利要求8所述的方法,还包括:
在用于所述处理设备的存储器管理系统中,自动跟踪在所述高速缓存中的所述WB-E数据。
16.根据权利要求8所述的方法,其中,所述处理设备包括主存储器控制器和存储器管理系统,并且所述方法还包括:
在所述存储器管理系统中,自动跟踪在所述主存储器控制器中的所述WB-E数据。
17.根据权利要求8所述的方法,其中:
所述应用在运行于系统层的操作系统的顶部的应用层运行;并且
所述处理设备支持在所述系统层的所述WB-E存储器。
18.根据权利要求17所述的方法,其中,所述操作系统提供应用程序接口(API),其使得所述应用能够创建到所述WB-E存储器空间的映射。
19.根据权利要求8所述的方法,其中:
所述应用在运行于系统层的操作系统的顶部的应用层运行;
所述操作系统在操作于平台层的平台的顶部运行,其中,所述平台包括硬件和固件;并且
所述处理设备支持在所述平台层的所述WB-E存储器。
20.根据权利要求19所述的方法,其中,所述平台包括:
所述处理单元;
所述持久存储器;以及
存储器管理系统,其提供WB-E存储器。
21.包括用于支持持久存储器的计算机指令的至少一种机器可访问介质,其中,所述计算机指令响应于在数据处理系统上被执行,而使得所述数据处理系统能够执行根据权利要求8-20中的任一项所述的方法。
22.一种支持持久存储器的数据处理系统,所述数据处理系统包括:
处理元件;
至少一种机器可访问介质,其响应于所述处理元件;以及
计算机指令,其至少部分地存储在所述至少一种机器可访问介质中,其中,所述计算机指令响应于被执行,而使得所述数据处理系统能够执行根据权利要求8-20中的任一项所述的方法。
23.一种支持持久存储器的数据处理系统,所述数据处理系统包括:
用于执行根据权利要求8-20中的任一项所述的方法的单元。
24.包括用于支持持久存储器的计算机指令的至少一种机器可访问介质,其中,所述计算机指令响应于在数据处理系统上被执行,而使得所述数据处理系统能够执行以下操作,包括:
为在所述数据处理系统的处理单元上运行的应用提供增强写回WB-E存储器空间,其中,所述数据处理系统包括存储器管理系统和在持久存储器域中的持久存储器,并且其中,所述存储器管理系统将所述WB-E存储器空间映射到所述持久存储器;
响应于由所述应用创建WB-E数据,自动将所述WB-E数据存储在与所述处理单元相关联的高速缓存中,其中,所述应用通过执行指令以将数据存储到在所述WB-E存储器空间中的地址而创建所述WB-E数据;以及
响应于在所述应用已经针对多个存储器地址创建了WB-E数据之后由所述应用执行提交指令,自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域,其中,自动确保用于所述应用的所有所述WB-E数据已经被保存到所述持久存储器域的操作是由所述存储器管理系统执行的。
25.根据权利要求24所述的至少一种机器可访问介质,其中,所述操作还包括:
响应于先提交的串行化指令,如果用于所述应用的所述WB-E数据中的任何WB-E数据尚未从所述高速缓存写入到所述数据处理系统中的主存储器控制器,则将所述WB-E数据从所述高速缓存写入到所述主存储器控制器。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/052390 WO2015012871A1 (en) | 2013-07-26 | 2013-07-26 | Methods and apparatus for supporting persistent memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105339908A CN105339908A (zh) | 2016-02-17 |
CN105339908B true CN105339908B (zh) | 2018-09-11 |
Family
ID=52391493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380077829.5A Active CN105339908B (zh) | 2013-07-26 | 2013-07-26 | 用于支持持久存储器的方法和装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9244839B2 (zh) |
EP (2) | EP3025237A4 (zh) |
CN (1) | CN105339908B (zh) |
WO (1) | WO2015012871A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2529148B (en) | 2014-08-04 | 2020-05-27 | Advanced Risc Mach Ltd | Write operations to non-volatile memory |
CN105389268B (zh) * | 2014-09-04 | 2018-08-28 | 光宝科技股份有限公司 | 资料储存系统及其运作方法 |
US10489158B2 (en) * | 2014-09-26 | 2019-11-26 | Intel Corporation | Processors, methods, systems, and instructions to selectively fence only persistent storage of given data relative to subsequent stores |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US10915256B2 (en) * | 2015-02-25 | 2021-02-09 | SK Hynix Inc. | Efficient mapping scheme with deterministic power transition times for flash storage devices |
US10303477B2 (en) * | 2015-06-26 | 2019-05-28 | Intel Corporation | Persistent commit processors, methods, systems, and instructions |
US10078448B2 (en) | 2015-07-08 | 2018-09-18 | Samsung Electronics Co., Ltd. | Electronic devices and memory management methods thereof |
US20170293432A1 (en) * | 2016-04-08 | 2017-10-12 | David Oldcorn | Memory management with reduced fragmentation |
US10445236B2 (en) * | 2016-11-14 | 2019-10-15 | Futurewei Technologies, Inc. | Method to consistently store large amounts of data at very high speed in persistent memory systems |
US10353601B2 (en) * | 2016-11-28 | 2019-07-16 | Arm Limited | Data movement engine |
US10209887B2 (en) * | 2016-12-20 | 2019-02-19 | Texas Instruments Incorporated | Streaming engine with fetch ahead hysteresis |
US11074220B2 (en) | 2017-01-06 | 2021-07-27 | Oracle International Corporation | Consistent file system semantics with cloud object storage |
US10228884B2 (en) | 2017-03-08 | 2019-03-12 | Hewlett Packard Enterprise Development Lp | Issuing write requests to a fabric |
KR102498668B1 (ko) * | 2017-05-17 | 2023-02-09 | 삼성전자주식회사 | 플래시-인지 힙 메모리 관리 방법 및 호스트 장치 |
KR101968474B1 (ko) * | 2017-06-02 | 2019-04-15 | 주식회사 애포샤 | 플래시 캐시에서 트랜잭션 지원 방법 및 장치 |
US10649829B2 (en) * | 2017-07-10 | 2020-05-12 | Hewlett Packard Enterprise Development Lp | Tracking errors associated with memory access operations |
US10621103B2 (en) | 2017-12-05 | 2020-04-14 | Arm Limited | Apparatus and method for handling write operations |
CN108681556B (zh) * | 2018-04-08 | 2021-01-29 | 华中科技大学 | 分布式指令域数据的访问方法及其系统 |
US11061609B2 (en) * | 2018-08-02 | 2021-07-13 | MemVerge, Inc | Distributed memory object method and system enabling memory-speed data access in a distributed environment |
US11436151B2 (en) * | 2018-08-29 | 2022-09-06 | Seagate Technology Llc | Semi-sequential drive I/O performance |
US10901747B2 (en) | 2018-11-30 | 2021-01-26 | Western Digital Technologies, Inc. | Unified store buffer |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052789A (en) * | 1994-03-02 | 2000-04-18 | Packard Bell Nec, Inc. | Power management architecture for a reconfigurable write-back cache |
CN103917963A (zh) * | 2011-09-30 | 2014-07-09 | 甲骨文国际公司 | 基于快速持久性存储器的回写储存器高速缓存 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020156983A1 (en) * | 2001-04-19 | 2002-10-24 | International Business Machines Corporation | Method and apparatus for improving reliability of write back cache information |
US7269708B2 (en) * | 2004-04-20 | 2007-09-11 | Rambus Inc. | Memory controller for non-homogenous memory system |
US8219741B2 (en) * | 2008-10-24 | 2012-07-10 | Microsoft Corporation | Hardware and operating system support for persistent memory on a memory bus |
US8180981B2 (en) * | 2009-05-15 | 2012-05-15 | Oracle America, Inc. | Cache coherent support for flash in a memory hierarchy |
US9047178B2 (en) * | 2010-12-13 | 2015-06-02 | SanDisk Technologies, Inc. | Auto-commit memory synchronization |
US20120311262A1 (en) * | 2011-06-01 | 2012-12-06 | International Business Machines Corporation | Memory cell presetting for improved memory performance |
US20130275661A1 (en) * | 2011-09-30 | 2013-10-17 | Vincent J. Zimmer | Platform storage hierarchy with non-volatile random access memory with configurable partitions |
KR101636634B1 (ko) * | 2011-12-21 | 2016-07-05 | 인텔 코포레이션 | 프로세서로부터 메모리 서브시스템으로 데이터를 지능적으로 플러싱하기 위한 시스템 및 방법 |
-
2013
- 2013-07-26 US US14/125,741 patent/US9244839B2/en active Active
- 2013-07-26 WO PCT/US2013/052390 patent/WO2015012871A1/en active Application Filing
- 2013-07-26 EP EP13889809.3A patent/EP3025237A4/en not_active Ceased
- 2013-07-26 EP EP19162033.5A patent/EP3531292B1/en active Active
- 2013-07-26 CN CN201380077829.5A patent/CN105339908B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052789A (en) * | 1994-03-02 | 2000-04-18 | Packard Bell Nec, Inc. | Power management architecture for a reconfigurable write-back cache |
CN103917963A (zh) * | 2011-09-30 | 2014-07-09 | 甲骨文国际公司 | 基于快速持久性存储器的回写储存器高速缓存 |
Also Published As
Publication number | Publication date |
---|---|
CN105339908A (zh) | 2016-02-17 |
WO2015012871A1 (en) | 2015-01-29 |
US20150032972A1 (en) | 2015-01-29 |
US9244839B2 (en) | 2016-01-26 |
EP3025237A1 (en) | 2016-06-01 |
EP3531292A1 (en) | 2019-08-28 |
EP3025237A4 (en) | 2017-04-19 |
EP3531292B1 (en) | 2021-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105339908B (zh) | 用于支持持久存储器的方法和装置 | |
US11042469B2 (en) | Logging trace data for program code execution at an instruction level | |
KR100243853B1 (ko) | 개량된메모리아키텍쳐를위한방법및장치 | |
CN104813278B (zh) | 对二进制转换的自修改代码以及交叉修改代码的处理 | |
JP2902976B2 (ja) | キャッシュフラッシュ装置 | |
US11500797B2 (en) | Computer memory expansion device and method of operation | |
CN102612685A (zh) | 经由存储器高速缓存操纵的无阻碍数据传送 | |
CN114667508B (zh) | 为加速器取回数据的方法和系统 | |
US11947821B2 (en) | Methods and systems for managing an accelerator's primary storage unit | |
TW201337572A (zh) | 推測式快取修改技術 | |
US20160371087A1 (en) | Split-level history buffer in a computer processing unit | |
CN107133112B (zh) | 一种异步处理fsync的方法及移动终端 | |
US9507534B2 (en) | Home agent multi-level NVM memory architecture | |
US11868306B2 (en) | Processing-in-memory concurrent processing system and method | |
US11055220B2 (en) | Hybrid memory systems with cache management | |
CN107592927A (zh) | 管理扇区高速缓存 | |
US20160026571A1 (en) | Information processing device, memory order guarantee method, and recording medium storing program | |
US20230057633A1 (en) | Systems, methods, and apparatus for transferring data between interconnected devices | |
US11526441B2 (en) | Hybrid memory systems with cache management | |
US9251073B2 (en) | Update mask for handling interaction between fills and updates | |
US10002077B2 (en) | Persistent memory controller based atomicity assurance | |
CN105786758B (zh) | 一种具有数据缓存功能的处理器装置 | |
CN103186474B (zh) | 对处理器的高速缓存进行清除的方法以及该处理器 | |
CN117270972B (zh) | 指令处理方法、装置、设备和介质 | |
US20220229662A1 (en) | Super-thread processor |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |