CN105144120A - 基于存储器地址将来自高速缓存行的数据存储到主存储器 - Google Patents
基于存储器地址将来自高速缓存行的数据存储到主存储器 Download PDFInfo
- Publication number
- CN105144120A CN105144120A CN201380075112.7A CN201380075112A CN105144120A CN 105144120 A CN105144120 A CN 105144120A CN 201380075112 A CN201380075112 A CN 201380075112A CN 105144120 A CN105144120 A CN 105144120A
- Authority
- CN
- China
- Prior art keywords
- address
- cache
- memory
- primary memory
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
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/0893—Caches characterised by their organisation or structure
-
- 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
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/60—Details of cache memory
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
提供了一种用于执行存储器操作的方法。一个或多个处理器可以确定存储于一个或多个处理器的高速缓冲存储器中的至少一部分数据将存储于主存储器中。确定主存储器的一个或多个地址范围对应于高速缓冲存储器中的多个高速缓存行。识别对应于在一个或多个地址范围中的地址的高速缓存行的集合,从而存储于识别出的集合中的数据可以存储于主存储器中。对于识别出的集合中具有自高速缓存行首次加载到高速缓冲存储器以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据存储于主存储器中。
Description
背景技术
在典型的计算系统中,中央处理单元(CPU)可以使用高速缓冲存储器来降低访问存储器(例如,主存储器)的时间。当CPU需要从主存储器中的位置访问数据(例如从主存储器读取数据或写入数据到主存储器)时,CPU可以检查所述数据的副本是否在高速缓存中。如果数据的副本存储在高速缓存中,则CPU可以从高速缓存访问数据的副本,这比CPU为了相同数据访问主存储器要快得多。存储于高速缓存中的数据还可以为了数据一致性而被写回到或冲洗到主存储器。
附图说明
图1图示了基于主存储器的地址写回数据的示例系统。
图2图示了基于主存储器的地址写回数据的示例方法。
图3图示了基于主存储器的地址写回数据的另一示例方法。
具体实施方式
本文所描述的例子提供了基于存储器地址使用高速缓存行的标识将数据从高速缓冲存储器转移到主存储器。此外,提供了一种系统来使得能够基于主存储器的一个或多个指定地址范围而将存储在高速缓存中的数据存储于或写回到主存储器。在一个例子中,处理器可以执行指定主存储器的地址范围的高速缓存指令,并且基于所述地址范围,处理器可以针对对应于所述地址范围的高速缓存行执行存储器操作。存储器操作可以包括例如将数据从高速缓存行冲洗或存储到主存储器中的相应位置。
根据例子,处理器可以确定存储于处理器的高速缓冲存储器中的至少一部分数据将被存储于或写入到主存储器。处理器确定主存储器的一个或多个地址范围。所述一个或多个地址范围可以对应于高速缓冲存储器中的多个高速缓存行。取决于实现方式,处理器可以识别对应于一个或多个地址范围中的地址的高速缓存行的集合,从而存储于识别出的集合中的数据可以存储于主存储器中。对于识别出的集合中具有自高速缓存行首次加载到高速缓冲存储器以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据被存储于或写回到主存储器。
在另一种实现方式中,处理器可以向高速缓冲存储器提供一个或多个地址范围,以使得高速缓冲存储器能够识别对应于所述一个或多个地址范围中的地址的高速缓存行的集合,从而可以将存储于识别出的集合中的数据存储于主存储器中。
此外,提供了一种在计算系统中执行存储器操作的方法。所述方法包括识别足以一般地描述多个高速缓存行(但是少于整个高速缓存)的集合的高速缓存行的集合。存储于多个高速缓存行的集合中的数据可以写入到主存储器。在一些例子中,可以使用主存储器的一个或多个地址范围来识别高速缓存行的集合,其中地址范围是根据计算系统的处理器所执行的高速缓存指令确定的。计算系统可以实施存储于这样的高速缓存行中的数据到主存储器的写回。以这种方式,可以识别多个高速缓存行(但是少于整个高速缓存),以使得它们存储的数据冲洗到主存储器,而不是例如到单个高速缓存行或整个高速缓存。
取决于变型,主存储器可以对应于非易失性存储器。在其它例子中,主存储器可以对应于非易失性存储器和易失性存储器。例如,非易失性存储器可以具有第一地址范围,而易失性存储器可以具有第二地址范围,其中这些地址范围不重叠。所确定的一个或多个地址范围可以在第一地址范围内(例如,对应于非易失性存储器部分),从而存储于对应于非易失性存储器中地址的高速缓存行中的数据可以存储于非易失性存储器而不是易失性存储器中。
本文描述的一个或多个例子假设计算设备执行的方法、技术和动作是以编程方式执行的或者作为计算机实现方法执行的。如本文所使用的“以编程方式”意指通过使用代码或计算机可执行指令。这些指令可以存储于计算设备的一个或多个存储器资源中。以编程方式执行的步骤可以是自动的或可以不是自动的。
本文所描述的一个或多个例子可以使用程序的模块、引擎或部件来实现。程序的模块、引擎或部件可以包括程序、子例程、部分程序,或者能够执行一个或多个所陈述任务或功能的软件部件或硬件部件。如本文所使用的,模块或部件可以独立于其它模块或部件存在于硬件部件上。可替代地,模块或部件可以是其它模块、程序或机器的共享元件或过程。
本文所描述的一些例子通常可以要求使用计算设备,包括处理和存储器资源。例如,本文所描述的一个或多个例子可以整体或部分实现于计算设备上,计算设备例如是服务器、台式计算机、蜂窝电话或智能电话、膝上型计算机、打印机、数码相框、网络设备(例如,路由器)以及平板设备。存储器、处理和网络资源都可以与建立、使用或执行本文描述的任意例子结合使用(包括结合执行任意方法或结合实现任意系统)。
此外,可以通过使用一个或多个处理器可执行的指令而实现本文所描述的一个或多个例子。这些指令可以携带在计算机可读介质上。利用以下附图示出或描述的机器提供了可以在其上携带和/或执行用于实现本文所描述的例子的指令的处理资源和计算机可读介质的例子。特别地,以本文描述的例子所示出的多个机器包括(多个)处理器和用于保持数据和指令的各种形式的存储器。计算机可读介质的例子包括永久存储器存储设备,例如个人计算机或服务器上的硬盘驱动。计算机存储介质的其它例子包括便携式存储单元(例如CD或DVD单元)、闪速存储器(例如,携带在智能电话、多功能设备或平板计算机上)、以及磁性存储器。计算机、终端、网络使能设备(例如,移动设备,诸如手机)都是利用处理器、存储器和存储于计算机可读介质上的指令的机器和设备的例子。另外,例子可以以计算机程序或者能够携带这样的程序的计算机可用载体介质的形式实现。
系统描述
图1示出了基于主存储器的地址存储数据的示例系统。诸如图1中所示,计算系统可以包括一个或多个处理器以及一个或多个主存储器。出于说明的目的,在图1中仅提供了计算系统的单个处理器100和单个主存储器160。在所提供的例子中,处理器100可以执行指定主存储器160的地址范围的高速缓存指令。基于所述地址范围,处理器100可以针对对应于所述地址范围的高速缓存行执行存储器操作,例如将数据写回到主存储器160。以这种方式,高速缓存指令使得处理器100能够选择性地将数据多个高速缓存行写入到主存储器160中的各自位置。
在一个例子中,图1图示了处理器100,其包括控制模块110、高速缓存120、高速缓存控制130、寄存器文件140以及执行单元150。控制模块110可以从各自的存储器位置取回指令,转译/分析指令,并确定处理器100将如何处理指令。取决于指令,控制模块110可以与执行单元150通信以引导系统执行不同的操作和功能。在各种实现方式中,处理器100所执行的指令可以存储于高速缓存120、处理器100可访问的其它高速缓冲存储器资源和/或主存储器160中。
高速缓存120是使得处理器100能够快速从高速缓存120访问数据的存储器资源,与存储于主存储器160中的数据相反。高速缓存120可以存储从主存储器160取得或取回的指令和/或数据。典型地,高速缓存120可以包括多个高速缓存行,其中每个高速缓存行可以具有(i)对应的高速缓存标记以引用对应于高速缓存行的主存储器160中的地址,以及(ii)对应的高速缓存标志以指示在所述高速缓存行中的数据是否已经被处理器100修改或更新。在一些例子中,高速缓存控制130可以维护关于对应高速缓存行的标记和标志的信息。高速缓存控制130可以例如包括具有存储高速缓存120的对应高速缓存行的标记和标志的条目的阵列。取决于实现方式,高速缓存控制130可以是单独的部件或被包括作为高速缓存120的一部分。
处理器100可以例如通过系统总线与主存储器160(例如,随机存取存储器(RAM)或其它动态存储设备)和/或用于存储将由处理器100执行的信息和指令的其它存储器资源(例如,系统的硬盘驱动)进行通信。在不同的变型中,主存储器160可以分别是非易失性存储器(NVRAM)和/或易失性存储器,例如DRAM,其可以存储用于在处理器100上执行的(多个)计算机程序或(多个)应用的指令和数据。主存储器160还可以具有由不同地址指定的存储器位置(例如,每个地址具有固定的长度序列或多个地址比特,例如12比特或30比特)。例如,主存储器160可以包括具有第一地址范围(例如,从对应于0的地址到对应于3999的地址)的非易失性存储器以及具有第二地址范围(例如,从对应于4000的地址到对应于7999的地址)的易失性存储器,使得地址范围不重叠。在其中主存储器160包括非易失性存储器的系统中,有可能将程序或应用状态(例如,数据)甚至在电源故障或系统崩溃期间保留在非易失性存储器中。
处理器100还可以包括寄存器文件140,其存储由高速缓存120提供的供执行单元150执行的指令和/或数据。例如,寄存器文件140可以为将由执行单元150处理的指令和/或数据提供暂时存储。执行单元150可以例如包括算术逻辑单元(ALU),用于执行计算并处理寄存器文件140提供的数据。
在处理器100上执行的(多个)应用或(多个)计算机程序的指令和/或数据可以存储于主存储器160中。高速缓存120可以在多个高速缓存行中存储在执行(多个)应用期间从主存储器160取得的指令和/或数据。例如,当处理器针对数据引用主存储器160的地址X且存在高速缓存未命中时(例如,对应于地址X的数据在高速缓存120中未找到),从主存储器160取回或取得来自地址X的数据,并将其写入高速缓存120作为高速缓存行。以这种方式,处理器100可以对存储于高速缓存120中的该数据执行操作,这与不得不从主存储器160访问地址X相反。在应用或计算机程序的操作期间,处理器100可能修改或更新高速缓存120中的数据,例如,对应于地址X的数据。当处理器100修改或更新高速缓存120中的数据时,对应于该数据的高速缓存行的标志或状态改变以指示该数据现在是“脏的”。状态“脏的”表示主存储器160中的数据是陈旧的或者与高速缓存120中的经更新或修改的数据不一致。在这样的情况下,“脏的”数据可以被写回到主存储器160(和/或在一些实现方式中并发地从高速缓存120删除该数据),从而数据一致。
典型地,系统可以实现冲洗高速缓存或将数据从高速缓存写回到主存储器的机制。然而,冲洗整个高速缓存可能导致处理计算的显著延迟。另外,如果将所有数据从高速缓存写回到主存储器,则在系统崩溃或电源故障之后对这样的数据可能不感兴趣时可能将不相关或不重要的数据写回。类似地,逐一冲洗个体高速缓存行还可能是昂贵的且消耗大量时间。
为了控制次序并指定哪些数据将从高速缓存120写入主存储器160,处理器100可以执行指定主存储器160的(多个)地址范围的高速缓存指令。指定(多个)地址范围的高速缓存指令可以使得处理器100能够将存储于对应于所述(多个)范围中的那些地址的高速缓存行中的数据(例如应用状态信息)写入到主存储器160。
取决于实现方式,处理器100可以确定存储于高速缓存120中的至少一部分数据将存储于或写回到主存储器160。例如,当数据从主存储器160取回到高速缓存120以供处理器100访问时(例如,当处理器100访问存储器并且存在高速缓存未命中时),高速缓存120可能变满。为了取回并在高速缓存120中存储更多数据,存储于高速缓存120内的一些数据需要写回到主存储器160。处理器100可以确定来自高速缓存120的一些数据需要写回(例如,没有任何显示指令)到主存储器160,以便使得新数据能够存储于高速缓存120中。
在另一例子中,处理器100可以确定存储于高速缓存120中的至少一部分数据将在执行一个或多个程序期间存储于或写回到主存储器160。处理器100可以使用高速缓存指令111做出这样的确定。高速缓存指令111可以指令处理器100:存储于某些高速缓存行中的数据需要写回到主存储器160,以便确保它们幸免于电源故障或系统崩溃。例如,高速缓存指令111可以由处理器100所执行的一个或多个程序提供。程序可以(例如,周期性地或间歇性地,或者基于程序的调度)提供高速缓存指令111,以便确保与程序相关联的数据(例如状态信息)保留在主存储器160(例如,NVRAM)中。以这种方式,必要的信息可以在发生系统崩溃期间保留在主存储器160中。
当处理器100确定存储于高速缓存120中的至少一部分数据将写回到主存储器160时,控制模块110可以使用高速缓存指令111来确定主存储器160的一个或多个地址范围。控制模块110可以从主存储器160和/或从高速缓存120(和/或从系统100的其它存储器资源)取回高速缓存指令111。例如,高速缓存指令111可以在时间上之前的实例处写入高速缓存120。另外,取决于变型,高速缓存120还可以包括指令高速缓存和数据高速缓存(例如,高速缓存指令111可以写入高速缓存120的指令高速缓存)。高速缓存指令111可以包括(多个)地址范围信息或数据,以便允许指定有限的(多个)地址范围用于冲洗或用于将数据写回到主存储器160。
取决于实现方式,高速缓存指令111(用于将数据从高速缓存120存储或写回到主存储器160)可以以不同方式指定主存储器160的一个或多个特定地址范围。例如,高速缓存指令111可以对于每个地址范围指定限定该地址范围的开始地址和结束地址(例如,对于第一范围,开始地址是001000且结束地址是001111,而对于第二范围,开始地址是100100且结束地址是111000)。在另一例子中,高速缓存指令111可以通过包括关于特定地址或地址形式(例如,诸如100000)以及掩码(例如,掩码可以是111000)的信息来指定地址范围。匹配在掩码所指定的比特位置中的特定地址或地址形式的地址可以形成地址范围。
在其它例子中,高速缓存指令111可以通过包括关于特定地址或地址形式(例如,虚拟页面的地址)以及掩码的信息来指定地址范围。所述掩码可以指定所有比特,除了多个(n个)低阶比特。这样的掩码可以指定包含总共2n数量的地址的地址范围。除了其它益处外,通过使用针对高阶比特的集合的特定地址和掩码来在高速缓存指令111中指定(多个)地址范围可以在图1中描述的系统中容易地实现。
控制模块110可以使用高速缓存指令111来确定具有将写回的经缓存的数据的主存储器160的一个或多个地址范围。主存储器160的地址范围可以对应于高速缓存120中的多个高速缓存行(例如,高速缓存120中的高速缓存行可以对应于主存储器160中的地址,假设处理器100已经访问了所述地址的内容)。例如,如果在指定的地址范围中存在16个地址,且仅其中7个地址已被处理器100访问,则高速缓存120可以将数据存储在对应于所述7个地址(而不是其它9个地址)的高速缓存行中。基于来自高速缓存指令111的确定的(多个)地址范围,可以识别对应于在所确定的(多个)范围中的地址的高速缓存行的集合。在一个例子中,因为存储数据的高速缓存行的数量可能少于所确定的(多个)地址范围中的地址的数量,所以识别出的高速缓存行的集合不必是连续的或相邻的高速缓存行。
在一种实现方式中,控制模块110可以向高速缓存120提供地址信息115(例如,所确定的(多个)地址范围),从而高速缓存120可以识别对应于指定的(多个)地址范围的高速缓存行的集合。例如,高速缓存控制130的映射逻辑可以对应于或包括解码器来使用地址信息115,以便识别对应于(多个)地址范围的高速缓存行的集合。对应于(多个)地址范围中的地址的高速缓存行的集合被识别,从而存储于那些识别出的高速缓存行的集合中的数据可以被写回到主存储器160。
作为附加或替换,控制模块110可以包括映射逻辑来使用地址信息115,以便识别对应于(多个)地址范围的高速缓存行的集合。控制模块110随后可以向高速缓存120提供关于识别出的高速缓存行的集合的信息。以这种方式,在任意实现方式中,只有数据对应于(多个)地址范围中的特定地址,数据才可以从高速缓存行被复制或写回(到主存储器160)。除了其它益处,高速缓存120还可以识别将写回哪些高速缓存行,而无需使处理器100逐一检查每个高速缓存行。
高速缓存控制130可以确定(来自识别出的高速缓存行的集合的)哪些高速缓存行存储需要存储于或写回到主存储器160的数据。高速缓存控制130可以使用关于对应高速缓存行的标记和/或标志的信息,例如,来确定识别出的高速缓存行的集合的哪些高速缓存行已被标志为“脏的”。标志为“脏的”高速缓存行表示在那些高速缓存行中的数据已经被修改或更新,并因此需要写回到主存储器160,以便维持数据一致性。例如,从识别出的高速缓存行的集合,高速缓存控制130识别被确定为具有自数据首次被加载到高速缓存120以来或者自先前存储操作以来已被修改的数据的每个高速缓存行(其中将数据从所述高速缓存行写入到主存储器160)。处理器100使得存储于那些高速缓存行中的数据121存储于或写回到主存储器160。以这种方式,处理器100可以使得存储于多个高速缓存行中的数据写回到主存储器160中指定的(多个)地址范围内的各自地址。
除了其它益处,通过使用指定(多个)地址范围的高速缓存指令111,可以选择特定的高速缓存行用于将数据写回到主存储器160,这与个体地检查高速缓存120中的每个高速缓存行以将数据写回或冲洗整个高速缓存120(或写回整个高速缓存120中的数据)到主存储器160相反。此外,在其中主存储器160包括非易失性存储器(例如,NVRAM)和易失性存储器(DRAM)二者的系统中,可以通过高速缓存指令111来指定仅对应于主存储器160的非易失性存储器部分的(多个)地址范围。这允许在非易失性存储器和易失性存储器之间区分存储操作或写回操作。另外,指定地址范围可以确保存储于高速缓存120中的数据(例如,相关应用状态信息)可以被写入主存储器160的非易失性存储器的适当位置,从而在电源故障或系统崩溃情况下可以保留应用状态信息。
此外,使用指定(多个)地址范围的高速缓存指令111使得处理器100能够利用关于对于高速缓存已经可用的高速缓存行的信息。因为高速缓存控制130维护关于高速缓存120中的高速缓存行的信息(例如,经由标记和标志),所以高速缓存120不必执行个体高速缓存行的查找。可以从所提供的关于(多个)地址范围的信息来识别高速缓存行的集合,并且高速缓存控制130可以使用所述高速缓存行的集合的标志状态信息(例如,“脏的”或不脏)来确定哪些高速缓存行具有需要写回到主存储器160的数据。
高速缓存指令111还可以使得在处理器100上执行的一个或多个应用或计算机程序能够控制存储于高速缓存120中的数据(例如,应用状态信息)将写入到主存储器160的顺序。例如,用于处理器100执行的应用的指令和/或数据可以在特定位置或地址范围存储于主存储器160中。因为存储于高速缓存120中的数据不能幸免于电源故障或系统崩溃,所以在应用操作期间,高速缓存指令111可以指定存储于高速缓存120中对应于所述应用的一些数据(例如,较重要的数据或应用状态数据等)应该在其它数据(例如,较不重要的数据)之前写回到主存储器160。高速缓存指令111可以指定对应于(用于所述应用的)地址范围的经缓存的数据可以被写回到主存储器160的顺序(例如,通过指定包括用于A的地址的地址范围而在写回数据B之前写回数据A)。
另外,在其它例子中,对于在处理器100上执行的多个应用,高速缓存指令111可以指定用于应用的经缓存的数据可以被写回到主存储器160的顺序。例如,高速缓存指令111可以通过指定用于每个应用的(多个)地址范围而指定所述顺序(例如,在对应于用于App2的地址范围的数据将被写回之前,首先写回对应于用于App1的地址范围的数据,等等)。
方法
图2和图3图示了基于主存储器的地址写回数据的示例方法。可以使用例如以图1的例子描述的部件来实现诸如通过图2和3的例子所描述的方法。因此,对图1的元件做出引用的目的在于说明用于执行正在描述的步骤或子步骤的适当元件或部件。
参考图2,处理器100确定存储于其高速缓存120中的至少一部分数据将存储于或写回到主存储器160(210)。这样的确定例如可以在不得不从主存储器160取得新数据并将其写入到高速缓存120时做出,和/或基于指定需要将数据从高速缓存120写入到主存储器160的高速缓存指令111做出。
处理器100可以确定主存储器160的一个或多个地址范围(220)。在一个例子中,可以根据提供给处理器100并由其执行的高速缓存指令,来确定一个或多个地址范围。高速缓存指令可以指定对应于在一个或多个地址范围内的地址的高速缓存行可以使它们的数据写回到主存储器160。例如,高速缓存指令111可以针对每个地址范围指定限定该地址范围的起始地址和结束地址(222)。在其它变型中,高速缓存指令111可以通过包括关于特定地址或地址形式以及掩码的信息来指定地址范围(224)。匹配在掩码所指定的比特位置中的特定地址或地址形式的地址可以形成地址范围。在另一例子中,可以指定掩码为高阶比特的集合(n)。所述高阶比特的集合n可以指定地址范围,从而具有等于2n的总地址数量。
基于所确定的一个或多个地址范围,可以识别对应于所述一个或多个地址范围中的地址的高速缓存行的集合,从而存储于识别出的高速缓存行的集合中的数据可以存储于或写入到主存储器160(230)。所述高速缓存行的集合可以包括两个或更多高速缓存行。在一个例子中,控制模块110可以包括映射逻辑,其可以对应于或包括解码器,该解码器使用地址信息(例如,关于所确定的一个或多个地址范围的信息)来识别对应于一个或多个地址范围的高速缓存行的集合。例如,在所述高速缓存行的集合中的高速缓存行可以对应于(多个)地址范围内的地址,假设处理器100已经访问了所述地址的内容。
一旦识别出对应于一个或多个地址范围的高速缓存行的集合,处理器就可以向高速缓存120提供关于识别出的高速缓存行的集合的信息。高速缓存120的高速缓存控制130可以查看与所述高速缓存行的集合中的每个高速缓存行相关联的状态标志,以便确定识别出的高速缓存行的集合的哪些高速缓存行已经被标志为“脏的”。这些来自所述高速缓存行的集合的高速缓存行具有已经修改或更新的数据,并因此需要写回到主存储器160,以便维护数据一致性。对于在高速缓存行的集合中具有自高速缓存行首次加载以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据存储于或写回到主存储器160(240)。经缓存的数据可以写回到主存储器160中的各自地址。
图3图示了基于主存储器的地址存储数据的示例方法。图3类似于图2,除了处理器不识别高速缓存行的集合,但是代之以向高速缓存120提供确定的一个或多个地址范围。
例如,在图3中,处理器100确定其高速缓存120中存储的至少一部分数据将存储于或写回到主存储器160(310)。处理器100可以例如使用来自高速缓存指令的信息确定主存储器160的一个或多个地址范围(320)。对于每个地址范围,高速缓存指令111可以指定限定所述地址范围的开始地址和结束地址(322),或者可以通过包括关于特定地址或地址形式以及掩码的信息来指定地址范围(324)。匹配在掩码所指定的比特位置中的特定地址或地址形式的地址可以形成地址范围。在一些例子中,可以指定掩码为高阶比特的集合(n)。所述高阶比特的集合n可以指定地址范围具有等于2n的总地址数量。
将所确定的一个或多个地址范围提供给高速缓存120,以便使得高速缓存120能够识别对应于一个或多个地址范围中的地址的高速缓存行的集合,从而存储于识别出的高速缓存行的集合中的数据可以存储于或写入到主存储器160(330)。例如,控制模块110可以向高速缓存120提供地址信息(例如,关于所确定的一个或多个地址范围的信息),从而高速缓存120可以识别对应于指定的(多个)地址范围的高速缓存行的集合。在一种实现方式中,高速缓存控制130可以包括映射逻辑,其对应于或包括解码器,所述解码器用于使用地址信息,以便识别对应于(多个)地址范围的高速缓存行的集合。
类似地,对于在高速缓存行的集合中具有自高速缓存行首次加载以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据写回到主存储器160中的各自地址(340)。
对于本文所描述的例子,应设想到独立于其它概念、想法或系统而延伸到本文所描述的个体元件和概念,以及对于例子设想到包括在本申请中各处所记载的元件的组合。虽然在本文中参照附图详细描述了例子,但应理解的是这些例子并不局限于那些精确的描述和图示。这样,许多修改和变型对于实践者将是清楚的。因此,应设想到个体地描述或作为例子的部分描述的特定特征可以与其它个体地描述的特征或其它例子的部分组合,即使其它特征和例子没有提及该特定特征。
Claims (15)
1.一种执行存储器操作的方法,所述方法由一个或多个处理器执行并包括:
确定存储于一个或多个处理器的高速缓冲存储器中的至少一部分数据将存储于主存储器中;
确定主存储器的一个或多个地址范围,主存储器的地址对应于高速缓冲存储器中的多个高速缓存行;
识别对应于在一个或多个地址范围中的地址的高速缓存行的集合,从而存储于高速缓冲存储器的识别出的高速缓存行的集合中的数据能够存储于主存储器中;以及
对于识别出的集合中具有自高速缓存行首次加载到高速缓冲存储器以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据存储于主存储器中。
2.如权利要求1所述的方法,其中,主存储器对应于非易失性存储器。
3.如权利要求1所述的方法,其中,主存储器对应于具有第一地址范围的非易失性存储器以及具有第二地址范围的易失性存储器,并且其中,所确定的一个或多个地址范围在第一地址范围内。
4.如权利要求1所述的方法,其中,确定对应于主存储器的一个或多个地址范围包括:为一个或多个地址范围中的每一个确定开始地址和结束地址。
5.如权利要求1所述的方法,其中,确定对应于主存储器的一个或多个地址范围包括:(i)确定特定地址和掩码,以及(ii)确定哪些地址匹配在掩码指定的比特位置中的特定地址。
6.如权利要求5所述的方法,其中,从固定的预先确定的掩码集合确定掩码。
7.一种执行存储器操作的方法,所述方法由一个或多个处理器执行并包括:
确定存储于一个或多个处理器的高速缓冲存储器中的至少一部分数据将存储于主存储器中;
确定主存储器的一个或多个地址范围,主存储器的地址对应于高速缓冲存储器中的多个高速缓存行;
向高速缓冲存储器提供所确定的一个或多个地址或者一个或多个地址范围,以使得高速缓冲存储器能够识别对应于地址的高速缓存行的集合,从而存储于高速缓冲存储器的识别出的高速缓存行的集合中的数据能够存储于主存储器中;以及
对于识别出的集合中具有自高速缓存行首次加载到高速缓冲存储器以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据存储于主存储器中。
8.如权利要求7所述的方法,其中,主存储器对应于非易失性存储器。
9.如权利要求7所述的方法,其中,主存储器对应于具有第一地址范围的非易失性存储器以及具有第二地址范围的易失性存储器,并且其中,所确定的一个或多个地址范围在第一地址范围内。
10.如权利要求7所述的方法,其中,确定对应于主存储器的一个或多个地址范围包括:为一个或多个地址范围中的每一个确定开始地址和结束地址。
11.如权利要求7所述的方法,其中,确定对应于主存储器的一个或多个地址范围包括:(i)确定特定地址和掩码,以及(ii)确定哪些地址匹配在掩码指定的比特位置中的特定地址。
12.如权利要求11所述的方法,其中,掩码被指定为高阶比特的集合。
13.一种系统,包括:
主存储器;
耦合到主存储器的处理器,处理器包括高速缓冲存储器,处理器用于:
确定存储于一个或多个处理器的高速缓冲存储器中的至少一部分数据将存储于主存储器中;
确定主存储器的一个或多个地址范围,主存储器的地址对应于高速缓冲存储器中的多个高速缓存行;
识别对应于在一个或多个地址范围中的地址的高速缓存行的集合,从而存储于高速缓冲存储器的识别出的高速缓存行的集合中的数据能够存储于主存储器中;以及
对于识别出的集合中具有自高速缓存行首次加载到高速缓冲存储器以来或者自先前的存储操作以来已被修改的数据的每个高速缓存行,使得存储于该高速缓存行中的数据存储于主存储器中。
14.如权利要求13所述的系统,其中,主存储器对应于具有第一地址范围的非易失性存储器以及具有第二地址范围的易失性存储器,并且其中,所确定的一个或多个地址范围在第一地址范围内。
15.如权利要求13所述的系统,其中,处理器通过以下确定对应于主存储器的一个或多个地址范围:(i)确定特定地址和掩码,以及(ii)确定哪些地址匹配在掩码指定的比特位置中的特定地址。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/034261 WO2014158156A1 (en) | 2013-03-28 | 2013-03-28 | Storing data from cache lines to main memory based on memory addresses |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105144120A true CN105144120A (zh) | 2015-12-09 |
CN105144120B CN105144120B (zh) | 2018-10-23 |
Family
ID=51624941
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380075112.7A Expired - Fee Related CN105144120B (zh) | 2013-03-28 | 2013-03-28 | 基于存储器地址将来自高速缓存行的数据存储到主存储器 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20160055095A1 (zh) |
EP (1) | EP2979189B1 (zh) |
CN (1) | CN105144120B (zh) |
WO (1) | WO2014158156A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416656A (zh) * | 2016-10-31 | 2019-03-01 | 拉姆伯斯公司 | 混合存储器模块 |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684607B2 (en) | 2015-02-25 | 2017-06-20 | Microsoft Technology Licensing, Llc | Automatic recovery of application cache warmth |
WO2015065449A1 (en) | 2013-10-31 | 2015-05-07 | Hewlett-Packard Development Company, L.P. | Cache controller for non-volatile memory |
GB2526849B (en) * | 2014-06-05 | 2021-04-14 | Advanced Risc Mach Ltd | Dynamic cache allocation policy adaptation in a data processing apparatus |
US9971686B2 (en) | 2015-02-23 | 2018-05-15 | Intel Corporation | Vector cache line write back processors, methods, systems, and instructions |
US9684596B2 (en) | 2015-02-25 | 2017-06-20 | Microsoft Technology Licensing, Llc | Application cache replication to secondary application(s) |
GB2540206B (en) * | 2015-07-10 | 2018-02-07 | Advanced Risc Mach Ltd | Apparatus and method for executing instruction using range information associated with a pointer |
US10423418B2 (en) | 2015-11-30 | 2019-09-24 | International Business Machines Corporation | Method for maintaining a branch prediction history table |
US10585809B2 (en) * | 2016-04-01 | 2020-03-10 | Intel Corporation | Convolutional memory integrity |
US10489296B2 (en) | 2016-09-22 | 2019-11-26 | International Business Machines Corporation | Quality of cache management in a computer |
US10684857B2 (en) | 2018-02-01 | 2020-06-16 | International Business Machines Corporation | Data prefetching that stores memory addresses in a first table and responsive to the occurrence of loads corresponding to the memory addresses stores the memory addresses in a second table |
KR20200004119A (ko) * | 2018-07-03 | 2020-01-13 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그의 동작 방법 |
JP7350699B2 (ja) * | 2020-09-11 | 2023-09-26 | 株式会社東芝 | ライトバックキャッシュ装置 |
TWI749960B (zh) * | 2020-12-23 | 2021-12-11 | 瑞昱半導體股份有限公司 | 資料處理裝置與其資料存取電路 |
US20230305957A1 (en) * | 2022-03-23 | 2023-09-28 | Nvidia Corporation | Cache memory with per-sector cache residency controls |
CN115794675B (zh) * | 2023-01-19 | 2023-05-16 | 北京象帝先计算技术有限公司 | 写数据方法、装置、图形处理系统、电子组件及电子设备 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
US7472230B2 (en) * | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
US20110066790A1 (en) * | 2009-09-17 | 2011-03-17 | Jeffrey Clifford Mogul | Main memory with non-volatile memory and dram |
US20110138124A1 (en) * | 2009-09-25 | 2011-06-09 | Stmicroelectronics (Research & Development) Limited | Trace mode for cache memory system |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6052801A (en) * | 1995-05-10 | 2000-04-18 | Intel Corporation | Method and apparatus for providing breakpoints on a selectable address range |
US6665767B1 (en) * | 1999-07-15 | 2003-12-16 | Texas Instruments Incorporated | Programmer initiated cache block operations |
US6658533B1 (en) * | 2000-09-21 | 2003-12-02 | Intel Corporation | Method and apparatus for write cache flush and fill mechanisms |
US6691210B2 (en) * | 2000-12-29 | 2004-02-10 | Stmicroelectronics, Inc. | Circuit and method for hardware-assisted software flushing of data and instruction caches |
US7000081B2 (en) * | 2002-02-12 | 2006-02-14 | Ip-First, Llc | Write back and invalidate mechanism for multiple cache lines |
US7730266B2 (en) * | 2007-03-31 | 2010-06-01 | Intel Corporation | Adaptive range snoop filtering methods and apparatuses |
US20110099337A1 (en) * | 2008-06-17 | 2011-04-28 | Nxp B.V. | Processing circuit with cache circuit and detection of runs of updated addresses in cache lines |
EP2350834A1 (en) * | 2008-10-28 | 2011-08-03 | Nxp B.V. | Data processing circuit with cache and interface for a detachable device |
US8364899B2 (en) * | 2010-06-24 | 2013-01-29 | International Business Machines Corporation | User-controlled targeted cache purge |
US8352646B2 (en) * | 2010-12-16 | 2013-01-08 | International Business Machines Corporation | Direct access to cache memory |
US20120297147A1 (en) * | 2011-05-20 | 2012-11-22 | Nokia Corporation | Caching Operations for a Non-Volatile Memory Array |
TW201308079A (zh) * | 2011-08-09 | 2013-02-16 | Realtek Semiconductor Corp | 快取記憶體裝置與快取記憶體資料存取方法 |
-
2013
- 2013-03-28 WO PCT/US2013/034261 patent/WO2014158156A1/en active Application Filing
- 2013-03-28 EP EP13879895.4A patent/EP2979189B1/en active Active
- 2013-03-28 US US14/780,544 patent/US20160055095A1/en not_active Abandoned
- 2013-03-28 CN CN201380075112.7A patent/CN105144120B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7472230B2 (en) * | 2001-09-14 | 2008-12-30 | Hewlett-Packard Development Company, L.P. | Preemptive write back controller |
CN1797326A (zh) * | 2004-12-21 | 2006-07-05 | 三菱电机株式会社 | 控制电路以及控制方法 |
US20110066790A1 (en) * | 2009-09-17 | 2011-03-17 | Jeffrey Clifford Mogul | Main memory with non-volatile memory and dram |
US20110138124A1 (en) * | 2009-09-25 | 2011-06-09 | Stmicroelectronics (Research & Development) Limited | Trace mode for cache memory system |
CN102103547A (zh) * | 2009-12-16 | 2011-06-22 | 英特尔公司 | 替换高速缓冲存储器中的高速缓存行 |
CN102117247A (zh) * | 2009-12-22 | 2011-07-06 | 英特尔公司 | 用于一系列页面的高速缓存刷新和一系列条目的tlb无效的系统、方法和设备 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109416656A (zh) * | 2016-10-31 | 2019-03-01 | 拉姆伯斯公司 | 混合存储器模块 |
CN109416656B (zh) * | 2016-10-31 | 2023-08-11 | 拉姆伯斯公司 | 混合存储器模块 |
Also Published As
Publication number | Publication date |
---|---|
EP2979189A4 (en) | 2016-10-19 |
EP2979189A1 (en) | 2016-02-03 |
WO2014158156A1 (en) | 2014-10-02 |
EP2979189B1 (en) | 2019-12-25 |
US20160055095A1 (en) | 2016-02-25 |
CN105144120B (zh) | 2018-10-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105144120A (zh) | 基于存储器地址将来自高速缓存行的数据存储到主存储器 | |
WO2018013282A1 (en) | Using data pattern to mark cache lines as invalid | |
EP3740872B1 (en) | Decoupling trace data streams using cache coherence protocol data | |
CN101784993A (zh) | 使用闪存作为存储器的设备及其操作方法 | |
CN109154908B (zh) | 具有精确垃圾收集报告的动态大小的局部 | |
JP2010039895A (ja) | 仮想計算機システムおよび仮想計算機システムにおけるエラー回復方法ならびに仮想計算機制御プログラム | |
CN104346293A (zh) | 混合内存的数据访问方法、模块、处理器及终端设备 | |
CN114467081A (zh) | 用于个别应用程序的定制根进程 | |
CN113312182B (zh) | 一种云计算节点、文件处理方法及装置 | |
US7822940B2 (en) | Apparatus and method for managing mapping information of nonvolatile memory | |
CN110781016A (zh) | 一种数据处理方法、装置、设备及介质 | |
CN107451070B (zh) | 一种数据的处理方法和服务器 | |
CN110569122B (zh) | 多处理器系统、多核处理设备及其操作方法 | |
US11023374B2 (en) | Apparatus and method and computer program product for controlling data access | |
US9223697B2 (en) | Computer reprogramming method, data storage medium and motor vehicle computer | |
US11409659B2 (en) | Tags and data for caches | |
CN109558121A (zh) | 接口驱动程序的开发方法、装置、设备及存储介质 | |
WO2018125408A1 (en) | Automatic identification and generation of non-temporal store and load operations in a dynamic optimization environment | |
CN104572483A (zh) | 动态内存管理装置及方法 | |
Jaeger et al. | Fine‐grain data management directory for OpenMP 4.0 and OpenACC | |
CN104516823A (zh) | 一种数据存储方法和装置 | |
JP7273176B2 (ja) | シーケンス処理ユニットを備えたメモリ制御システム | |
CN105183668A (zh) | 缓存刷新方法及装置 | |
CN112579481B (zh) | 数据处理方法、数据处理装置和计算装置 | |
CN114706828A (zh) | 一种文件加载方法、计算设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20170122 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, L.P. |
|
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181023 Termination date: 20200328 |
|
CF01 | Termination of patent right due to non-payment of annual fee |