CN105408874A - 用于移动数据块的数据移动引擎 - Google Patents
用于移动数据块的数据移动引擎 Download PDFInfo
- Publication number
- CN105408874A CN105408874A CN201380078417.3A CN201380078417A CN105408874A CN 105408874 A CN105408874 A CN 105408874A CN 201380078417 A CN201380078417 A CN 201380078417A CN 105408874 A CN105408874 A CN 105408874A
- Authority
- CN
- China
- Prior art keywords
- data
- data block
- destination address
- source address
- movement
- 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
- 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/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/20—Handling requests for interconnection or transfer for access to input/output bus
- G06F13/28—Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/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/0891—Addressing 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
-
- 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
-
- 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/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- 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/0683—Plurality of storage devices
- G06F3/0685—Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
-
- 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/1032—Reliability improvement, data loss prevention, degraded operation etc
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)
- Computer Security & Cryptography (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本文公开的示例提供在源地址和目标地址之间移动数据块。所述示例公开:启动数据移动引擎,以将所述数据块从所述源地址移动至所述目标地址。此外,所述示例公开:以允许处理器在所述移动期间同时访问所述数据块的方式,将所述数据块从所述源地址移动至所述目标地址。
Description
背景技术
非易失性存储器(NVM)可能对存储器系统提出各种挑战。例如,存储器磨损和/或延迟问题可能与NVM关联。这些问题可引起损坏的和/或延迟的数据。
附图说明
在附图中,相同的数字指相同的组件或块。下面的详细描述参考图,其中:
图1是示例存储器控制器的框图,该存储器控制器包括用于将数据块从源地址移动至目标地址的数据移动引擎;
图2是示例存储器控制器的框图,该存储器控制器包括数据移动引擎、以及用于引导对从源地址至对应的目标地址的数据块的访问的映射,数据移动引擎进一步包括用于确定与数据块对应的一行数据是否已移动、未移动或正在移动的过程中的追踪器;
图3是用于发起数据块从源地址到目标地址的移动且因此移动数据块的示例方法的流程图;
图4是用于将目标地址的块映射到源地址的块且用于将数据块从源地址移动至目标地址的示例方法的流程图;
图5是用于发起数据块从源地址到目标地址的移动、接收读或写事务、以及因此访问数据块的示例方法的流程图;以及
图6是示例计算设备的框图,该计算设备具有用于执行机器可读存储介质中的指令的处理器,以发起数据块的移动,并因此将数据块从源地址移动至目标地址。
具体实施方式
存储器系统可包括在非易失性存储器可能正经历磨损和/或延迟问题时重新安置来自该存储器的数据的引擎。这些引擎提供对数据的有限访问,同时程序和/或设备可在访问数据之前等待一段时间来完成移动。这还可产生用于访问数据的附加延迟时段。
为了解决这些问题,本文公开的示例启动数据移动引擎,以将数据块从源地址移动至目标地址。此外,本文公开的各示例以使处理器能够在移动期间同时访问数据块的方式,将数据块从源地址移动至目标地址。这维持在整个移动过程对数据块的立即访问。此外,通过将数据块从源地址移动至目标地址,数据移动引擎透明地迁移数据,以防止磨损并减少关联的延迟。此外,在允许对移动的数据块的立即访问中,数据移动引擎提供提高的系统性能。
在另一实施方式中,数据移动引擎接收与数据块中的数据行对应的读操作。在此实施方式中,数据移动引擎可参考追踪器,以确定该数据行是否已移动。如果该数据还未移动,数据移动引擎使处理器能够在源地址处读访问数据块。如果数据已移动,数据移动引擎使处理器能够在目标地址处读访问数据块。追踪器是有效的工具,用于追踪哪些数据行已移动,且因此随后指导对源地址或目标地址的读访问。
在又一实施方式中,数据移动引擎接收与数据行对应的写操作。在此实施方式中,数据移动引擎利用追踪器来确定与数据块对应的数据行是否已移动。如果数据移动引擎确定该数据行仍未移动,数据移动引擎可在源地址处写(例如,修改)该数据行。如果数据移动引擎确定该数据行已移动,数据移动引擎可在目标地址处写该数据行。可替代地,如果数据移动引擎确定该数据行仍未移动,数据移动引擎可在目标地址处写该行,并在追踪器中将该数据行记录为已移动。此实施方式通过使处理器能够在数据移动期间写访问,而提供附加的效率。
综上,本文公开的示例通过使处理器能够在移动期间同时访问数据块,而提供移动数据块的有效且透明的方式。
现在参照各图,图1是示例存储器控制器102的框图,存储器控制器102包括用于将数据块108从源地址106移动至目标地址110的数据移动引擎104。图1图示出计算系统内的用于移动数据块的组件。数据移动引擎104以使处理器112能够访问数据块108的方式移动数据块108。对数据块108的访问可包括读和/或写操作。处理器112可基于数据块108是否已移动、未移动、在进行中,来访问源地址106或目标地址110处的数据块108。在此实施方式中,数据移动引擎104使处理器112能够在移动期间同时访问数据块108。在之后的各图中详细描述此实施方式。存储器控制器102是管理数据移动引擎104移动数据块108的功能的可编程设备。因此,存储器控制器102的实施方式包括电子设备、计算设备、微处理器、微芯片、芯片集、电子电路、半导体、微控制器、中央处理单元(CPU)、或被编程为管理数据移动引擎104的资源和功能的其他类型的电子设备。
数据移动引擎104是存储器控制器102内的被配置为移动数据块108的组件。数据移动引擎104可以以高速缓存行的增量来移动数据块108。在此实施方式中,数据移动引擎104可包括追踪器(未图示),数据移动引擎104利用追踪器确定与数据块108对应的哪些行数据已从源地址106移动至目标地址110。利用追踪器确定与数据块108对应的哪些行数据已移动使得数据移动引擎104能够提供处理器112在移动期间同时访问源地址106和/或目标地址110处的数据块108。在另一种实施方式中,数据移动引擎104可包括存储器控制器102内部的用于移动数据块108的硬件组件。
源地址106是数据块108在由数据移动引擎104移动之前可能驻留的存储器位置。源地址106是存储数据块108的存储器,且因此,源地址106的实施方式可包括只读存储器、动态随机存取存储器(DRAM)、闪存、相变存储器(PCRAM)、自旋转移矩随机存取存储器(STT-RAM)、电阻式随机存取存储器(ReRAM)、忆阻器、或能够在移动之前保存数据块108的其他类型的计算机存储器。在一个实施方式中,源地址106作为非易失性存储器的部分被包括。非易失性存储器可随着时间损坏和/或从多次写经历磨损,等等。使得数据移动引擎104能够将数据块从源地址106移动至目标地址110防止数据块108损坏,且进一步防止源地址磨损。在另一个实施方式中,操作系统(未图示)可传输源地址106和目标地址110,以发起数据块108的移动。
数据块108是一系列比特和/或字节的数据值。数据块108可驻留在源地址106处,且一旦由数据移动引擎104移动可迁移到目标地址110。在此移动期间,数据块108可由处理器112访问。在一个实施方式中,数据块108由数据移动引擎以高速缓存行增量的方式移动。在此实施方式中,由于多个高速缓存行数据可对应于数据块108,处理器112一次读或写一个高速缓存行。将数据块108分隔成多行数据使得数据移动引擎104能够确定哪些行数据已移动,哪些行数据还未移动(即,未移动)或正在移动的过程中。
目标地址110是与处理器112关联的存储器位置,数据移动引擎104将数据块108移动到该存储器位置中。目标地址110可包括易失性存储器位置,用于使得能够访问数据块108,且因此,目标地址110的实施方式包括随机存取存储器、动态随机存取存储器、静态存储器、或能够存储数据块108的其他类型的存储器。
处理器112包括用于存储数据块108的目标地址110。基于访问是读还是写访问、以及数据块108是否已移动,数据移动引擎可同时将处理器112对数据108的访问路由到源地址106或目标地址110。处理器112是能够包括目标地址110的电子设备,且因此,处理器112的实施方式包括计算设备、微处理器、微芯片、控制器、芯片集、电子电路、半导体、微控制器、中央处理单元(CPU)、或能够访问目标地址110的其他类型的电子设备。在一个实施方式中,与处理器112关联的操作系统(未图示)向数据移动引擎104提供源地址106和目标地址110。提供地址106和110触发数据移动引擎104开始将数据块108从源地址106移动至目标地址110。在之后的图中详细讨论此实施方式。
图2是示例存储器控制器102的框图,存储器控制器102包括数据移动引擎104以及映射220,映射220用于重定向处理器112以访问从源地址106至对应的目标地址110的数据块108。数据移动引擎104包括追踪器218,以确定是否正在进行数据块108的特定行数据的移动。数据块108可包括多个数据行,且因此,各行数据可包括移动进程的各种状态。例如,追踪器218可确定与数据块108对应的特定行数据是否正处于移动状态、未移动状态(即,未移动)、或移动进行中状态。此外,与处理器112关联的操作系统216通过传输源地址106和目标地址110来发起数据移动引擎104移动数据块108。在图2的另一种实施方式中,一旦完成与数据块108对应的一高速缓存行从源地址106至目标地址110的移动,与处理器112关联的高速缓存214清理该高速缓存行数据。在此实施方式中,一旦数据块108已移动至目标地址110,从高速缓存清理该行。
操作系统216发起数据块108从源地址106至目标地址110的移动。以此方式,操作系统216提供可将数据块108移动到其中的可用位置。在此实施方式中,操作系统216可能知道数据块108的移动,但可能不追踪从源地址106逐行移动至目标地址110的高速缓存行增量。数据移动引擎104可在移动完成时传输中断。中断向操作系统发信号,以从与已在移动期间使用的处理器112关联的高速缓存214清理任何其余的数据。可替代地,数据移动引擎可向高速缓存214发送信号,以清理任何其余数据。此外,来自数据移动引擎104的中断向操作系统216指示更新页面表,因此,数据块108与目标地址110关联,而不再与源地址106关联。这提供对目标地址110处的数据块108的直接访问。在之后的图中详细描述此实施方式。
在另一种实施方式中,数据移动引擎104可将值写到内部控制寄存器(未图示),以发起数据块108的移动。在其他实施方式中,数据块108的移动通过修改映射220内的描述符来发起。在又一种实施方式中,数据块108的移动可通过条件来触发。该条件可包括源地址106处的磨损检测达到对源地址106写的阈值数量,和/或通过操作系统216的基于策略的实施方式,(例如写访问),以及可适用于触发数据移动的其他条件。在之后的图中详细描述这些条件。
映射220用于通过描述符追踪给出源地址的数据块108的位置。在一个实施方式中,与目标地址110对应的地址范围块被映射成与源地址106对应的地址范围块。映射通过被保存作为目标地址110的每个块的元数据的描述符(未图示)来追踪。每个数据块108可包括如追踪器218中的多行数据(数据行1,数据行2,以及数据行3)。尽管图2A图示出映射220中的多个数据块(数据块1、数据块2以及数据块3),各实施方式不应受限为为了图示目的所做的这样。存储器控制器102使用映射220引导对给定源地址的访问,以在希望时重定向数据移动引擎104来访问目标地址110处的数据块108。在此实施方式中,存储器控制器102包括映射220,映射220用于将源地址106映射到目标地址110,以对于给定源地址106,访问目标地址110处的数据块108。例如,映射220可包括多个数据块(数据块1、数据块2以及数据块3),给定源地址(SA1,SA2和SA3)以及对应的目标地址(TA1、TA2以及TA3)。例如,存储器控制器102可指导处理器112对于给定的源地址(SA1、SA2或SA3),访问对应的目标地址(TA1、TA2和/或TA3)处的特定数据块(数据块1、数据块2或数据块3)。
追踪器218由数据移动引擎104用于追踪移动过程的各种状态下的特定数据行(数据行1、数据行2、以及数据行3)。在此实施方式中,数据块108包括多个数据行(数据行1、数据行2、以及数据行3),以供数据移动引擎104参考。当数据移动引擎104可接收多个数据行中之一的读或写操作时,数据移动引擎104参考追踪器218,以确定是直接访问源地址106还是目标地址110。例如,相对于已完成或正在发生过程中的移动,检查到达数据移动引擎104的事务。在另一个示例中,如果事务是写事务,数据移动引擎104检查特定数据行的状态。如果特定数据行处于仍未移动状态,写可指向特定数据行的目标地址110,并且该行追踪器218中可被标记为“已移动”。追踪器可改变大小,以保持追踪可同时移动的每个数据块中的每个高速缓存行。
在另一种实施方式中,数据移动引擎104可确定将数据块108从目标地址110移回源地址106。在此实施方式中,数据块108不能永久存储在目标地址110处(即,非永久性),且可最终移回源地址106。这可能是因为操作系统216决定释放目标地址110的一部分,和/或数据块108是否坚定于源地址106以供存储。操作系统216可触发数据移动引擎104发起移动。数据移动引擎104可继续从目标地址110访问数据块108的每个高速缓存行,并将每行写入源地址106。在此移动期间,来自处理器112的读访问请求可引起与数据块108对应的请求数据行移出从目标地址110到源地址106的移动序列,并返回到处理器112。可替代地,操作系统216可追踪与数据块108对应的高速缓存数据行的许可,并允许读访问目标地址110处的数据块108。在此情况下,数据移动引擎104在完成移动时,用中断向操作系统216发信号,随后操作系统216可重新安置目标地址110和/或重新使能读和写访问。
图3是用于发起数据块从源地址到目标地址的移动且因此移动数据块的示例方法的流程图。在存储器控制器的控制下,数据移动引擎被触发以移动数据块。将数据块从源地址移动至目标地址可防止数据损坏、以及可能在源地址处发生的设备磨损。此外,使能在移动期间同时访问数据块通过允许在整个移动过程中立即访问数据,而消除了延迟。在讨论图3时,可参考图1至图2的组件,以提供上下文的示例。此外,尽管图3被描绘为由如图1中的数据移动引擎104和/或存储器控制器102来实施,但可在其他合适的组件上实施。例如,图3可以以机器可读存储介质(例如,如图6中的机器可读存储介质604)上的可执行指令的形式来实施。
在操作302处,启动数据移动引擎以将数据块从源地址移动至目标地址。数据块可以以高速缓存行增量移动,因此数据移动引擎可追踪已移动了数据块的哪些行。在一个实施方式中,移动发起可由操作系统触发。操作系统将源地址和目标地址提供至数据移动引擎。在此实施方式中,通过将一个或多个值写入数据移动引擎的内部寄存器中,和/或通过更新存储器控制器内的描述符,可产生移动的发起。描述符是与源地址关联的元数据,其可重定向处理器以访问目标地址处的而非源地址处的数据块。在操作302-306期间,操作系统可继续使用源地址。例如,操作系统不改变页面表中的数据块的参考地址,而是继续指向如数据块的位置的源地址。存储器控制器可接收数据块的源地址,且利用表(即,映射),存储器控制器可确定与源地址对应的目标地址。在操作302-306期间,操作系统可维持使能写访问数据块的许可。在另一种实施方式中,可通过条件或源地址的事件触发移动。在此实施方式中,可通过以下中的一种触发移动:通过存储器控制器检测源地址可能磨损;存储器控制器确定已达到一定量的写;通过操作系统的策略实施。在这些事件中,存储器控制器和/或操作系统可向数据移动引擎传输指令或其他指示,以将数据块从源地址移动至目标地址。
在操作304处,数据移动引擎将数据块从源地址移动至目标地址。一旦在操作302处发起移动,数据移动引擎如描述符所指示的那样开始访问源地址处的数据块,并以高速缓存行增量的方式将数据块移动至目标地址。在此操作期间,数据移动引擎参与处理器一致性域,以请求每个目标地址高速缓存行的所有权,并用来自源地址高速缓存行的数据更新它。在操作304处,数据移动引擎利用追踪器来追踪数据块随其进程的移动。在此实施方式中,可逐行移动数据块,因而追踪器确定哪些行已移动、未移动、且正在移动过程中。在操作304处的移动期间,使处理器能够访问数据块,如在操作306处那样。
在操作306处,数据移动引擎可使处理器能够在移动期间同时访问数据块。使能在操作304处的移动期间同时访问数据块,提供以透明方式的移动。透明方式使处理器能够随着在操作304处移动,读和/或写数据块。数据移动引擎利用追踪器确定与数据块对应的哪些行数据已移动、未移动、或正在移动的过程中。在此实施方式中,数据移动引擎可接收与特定数据行对应的读和/或写访问事务。数据移动引擎使用追踪器来参考该行是否已移动、仍未移动、和/或正在移动的过程中,以正确地指导处理器从目标地址或源地址访问该数据行。在一个实施方式中,数据移动引擎可接收读事务、或请求读访问与数据块对应的特定数据行的操作。在此实施方式中,数据移动引擎可向处理器提供从源地址或目标地址的读访问。在另一个实施方式中,数据移动引擎可接收写操作,以修改该特定数据行。在此实施方式中,数据移动引擎可基于该数据行是否已移动,而在源地址或目标地址处修改该数据行。例如,如果该数据行未移动(即,仍在源地址处),那么数据移动引擎可在源地址处修改该数据行。如果数据行已移动到目标地址,数据移动引擎可在目标地址处修改该数据行。可替代地,如果数据行仍未移动或当前正在移动(即,在移动进行中),数据移动引擎可在目标地址处修改该数据行,并在追踪器中标记该数据行为已移动。在之后的图中详细讨论这些实施方式。
图4是示例方法的流程图,该方法用于通过使用描述符、发起数据块的移动、因此移动数据块以及完成移动,来将目标地址的块映射到源地址的块。将目标地址的块映射到源地址的块提供一种存储器控制器生成从源地址到目标地址的数据块之间的对应性的机制。此对应性使得存储器控制器能够对于给定的源地址重定向处理器到目标地址。在讨论图4时,可参考图1至图2中的组件,以提供上下文的示例。此外,尽管图4被描绘为由如图1中的数据移动引擎104和/或存储器控制器102来实施,但可在其他合适的组件上执行。例如,图4可以以机器可读存储介质(例如,如图6中的机器可读存储介质604)上的可执行指令的形式来实施。
在操作402处,与数据移动引擎关联的存储器控制器将源地址的块映射到(即,关联到)目标地址的块。地址的块分别包括源地址空间中和目标地址空间中的地址范围。通过描述符追踪映射,描述符可保存为每个目标地址块(例如,地址范围)的元数据。存储器控制器利用描述符引导处理器从源地址到目标地址的访问。可替代地,一旦修改的数据坚定于源地址,映射可保持。
在操作404处,启动数据移动引擎以将数据块从源地址移动至目标地址。移动的发起可通过操作406-410中的至少一个来实施。操作404在功能上可类似于如图3中的操作302。
可执行操作406-410中的至少一个,以发起数据块从源地址至目标地址的移动。在一个实施方式中,操作406-410中的一个可发生,以触发在操作404处的移动发起。在另一个实施方式中,操作406-410的组合可发生,以触发在操作404处的移动发起。在操作406处,操作系统可向数据移动引擎提供源地址和目标地址。在操作408处,数据移动引擎可将值写入控制寄存器。控制寄存器是与数据移动引擎关联的控制数据移动引擎行为的处理器寄存器。在操作408的一个实施方式中,控制寄存器可接收指令、信号、命令、或其他指示,发送移动发起信号。在操作410处,可修改与源地址关联的描述符,以触发移动的发起。
在操作412-414处,数据移动引擎以使处理器能够在移动期间访问数据块的方式,将数据块从源地址移动至目标地址。在另一个实施方式中,数据移动引擎通过如操作416处那样对于给定的源地址重定向处理器数据访问目标地址,使能访问数据块。操作412-414在功能上可类似于如图3中的操作304-306。
在操作416处,可通过在操作402处映射的描述符重定向处理器,以访问目标地址处的数据块。源地址包括在操作402处被映射的描述符,该描述符提供引导,以重定向处理器来访问在目标地址处的数据块。
在操作418-422处,一旦完成移动,方法可继续到操作420-422。在操作418处,数据移动引擎可向处理器传输中断。在操作420处,中断向处理器和操作系统发信号,以发起从关联的系统高速缓存清理数据。在此实施方式中,由于数据块已移动至目标地址且源地址处的数据块是过期的副本,源地址可被标记为不可读。在操作420处,存储器控制器可写指示移动已完成的描述符。此描述符写触发存储器控制器召回已从源块访问的高速缓存行。在一个实施方式中,存储器控制器可利用其位向量追踪,来确定数据块的哪些高速缓存行已被访问。数据移动引擎可替代地在发送中断信号时,开始从已移动的数据块召回高速缓存行。数据移动引擎可查看任何更新并将这些更新转发至新地址。描述符写使得该方法能够继续到操作422。在操作422处,操作系统可更新表(例如,页面表)内的表项。在此操作中,操作系统可指向相关的页面表表项,以重新使能直接到目标地址访问数据块。
在另一种实施方式中,数据移动引擎可确定移动到目标地址的数据块可被视为非永久的,而不是方法进行到操作418-422以完成移动。将数据块移回源地址使存储器空间能够可用于更多活动的数据块。在此实施方式中,数据移动引擎发起将数据块从目标地址移回源地址。
图5是用于发起数据块从源地址到目标地址的移动、接收读或写事务、以及因此访问数据块的示例方法的流程图。具体地,图5图示出处理器能够在接收读和/或写操作时访问数据块的方法。此外,术语“事务”可指“操作”,且因此,两个术语在全文中可互换使用。在讨论图5时,可参照图1至图2中的组件,以提供上下文的示例。此外,尽管图5被描绘为由如图1的数据移动引擎104和/或存储器控制器102来实施,但可在其他合适的组件上执行。例如,图5可以以机器可读存储介质(例如,如图6中的机器可读存储介质604)上的可执行指令的形式来实施。
在操作502处,启动数据移动引擎以将数据块从源地址移动至目标地址。操作502在功能上可类似于图3至图4中的操作302和操作404。
在操作504处,数据移动引擎可将数据块从源地址移动至目标地址。在另一种实施方式中,移动可包括写时复制移动。写时复制移动可在可能随着移动发生而修改数据块时,确保数据块的准确性。在移动之后,源地址和目标地址保持活动。在此操作中,数据移动引擎可包括对写操作的可视性,因此能够在高速缓存数据行的修改之前,完成数据块中受影响的高速缓存数据行的移动。这可由数据移动引擎通过以下中的至少一个使处理器能够访问数据块来实现:使处理器能够读访问源地址;使处理器能够读访问目标地址;以及使处理器能够读和写访问源地址。在移动完成时,被修改的高速缓存数据行可指向目标地址。
在操作506处,数据移动引擎可接收读或写操作。一旦接收操作,数据移动引擎可确定包括操作508处的读访问或写访问的操作是因此进行到操作512-516还是操作510和518。在将与数据块对应的高速缓存行增量从源地址移动至目标地址的过程期间,操作可由数据移动引擎接收。在操作506的另一种实施方式中,数据移动引擎可接收零块操作。在此实施方式中,源地址处的数据行可被硬编码为全部零,因此,需要将所有写路由到目标地址,并由追踪器标记为已移动。
在操作508处,数据移动引擎可确定所接收的操作是包括读访问还是写访问。在另一种实施方式中,操作508还可确定与数据块对应的数据行是否已移动。在此实施方式中,数据移动引擎可参考追踪器(例如,表),以确定数据行是否已移动。追踪器追踪与数据块对应的哪些高速缓存行已移动、未移动、或当前正在移动(即,在移动进行中)。这使处理器能够修改源地址或目标地址处的特定数据行。如果操作包括读访问,方法进行到操作510和518。如果操作包括写操作,方法进行到操作512-516。
在操作510处,一旦确定与数据块对应的数据行还未移动,或可替代地,处于未从源地址到目标地址的移动状态下。在操作510处,数据移动引擎使处理器能够从源地址访问数据行。在此实施方式中,处理器可向数据移动引擎传输对与数据块对应的特定数据行的请求。数据移动引擎可验证该数据行未移动,因此,处理器可从源地址访问该数据行。如果数据移动引擎确定该特定数据行(例如,数据块的高速缓存行增量)已从源地址移动至目标地址,方法进行到操作518。
在操作518处,一旦确定数据行已移动,数据引擎允许处理器从目标地址访问该特定数据行。在此操作中,数据移动引擎参考追踪器,以验证与数据块对应的数据行已移动。如果数据行已移动,处理器可从目标地址访问该数据行。
在操作512-516处,处理器可基于数据行是否已移动,来在源地址或目标地址处修改该数据行(即,写该数据行)。数据移动引擎利用追踪器来确定与数据块对应的哪些数据行已移动。在操作512-516处,写操作包括与将修改的数据行对应的数据行。在操作512处,数据移动引擎可确定与数据块对应的数据行未移动(即,该数据行仍在源地址处)。在此实施方式中,处理器可在源地址处修改该特定数据行。在操作514处,数据移动引擎可确定该特定数据行在之前已从源地址移动至目标地址。在此实施方式中,处理器可在目标地址处修改该特定数据行。在操作516处,数据移动引擎可确定该特定数据行正在进行移动,且因此,处理器可在目标地址处修改该特定数据行,同时,数据移动引擎可在追踪器中将该特定数据行标记为已移动。
图6是计算设备600的框图,计算设备600具有处理器602,用于执行机器可读存储介质604中的指令606-630。具体地,具有处理器602的计算设备600用于发起数据块的移动以及因此将数据块从源地址移动至目标地址。尽管计算设备600包括处理器602和机器可读存储介质604,还可包括将适用于本领域技术人员的其他组件。例如,计算设备600可包括如图1中的数据移动引擎104。计算设备600是具有能够执行指令606-630的处理器602的电子设备,且因此,计算设备600的实施例包括计算设备、移动设备、客户端设备、个人计算机、台式机、便携式电脑、平板、视频游戏机、或能够执行指令606-630的其他类型的电子设备。指令606-630可被实施为方法、功能、操作、以及被实施为存储在存储介质604上的机器可读指令的其他过程,存储介质604可为非暂时性的,例如硬件存储设备(例如,随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程ROM、电可擦除ROM、硬盘、以及闪存)。
处理器602可获取、解码、并执行指令606-630,以发起数据块的移动以及因此移动数据块。在一个实施方式中,处理器602可执行指令606-612中的一个,以发起数据块的移动。在另一个实施方式中,一旦执行指令606,处理器602可随后执行指令612-624,以如写时复制移动那样移动数据块。在又一个实施方式中,一旦执行指令606和614,处理器602可执行指令626,以接收零块事务。在又一个实施方式中,一旦执行指令606、614、616-624和/或626,处理器602可执行指令628-630,以完成数据块的移动。具体地,处理器602执行指令606-612,以:发起数据块的移动,发起由执行608-612中的一个来触发;检测源地址处的磨损;达到源地址处的写数量;以及基于策略的实施。处理器可随后执行指令614,以将数据块从源地址移动至目标地址,指令614可包括将数据块从源地址逐行移动至目标地址。此外,处理器602可执行指令616-624和/或指令626,以:如写时复制移动那样移动数据块;通过执行指令620-624中的一个使处理器能够访问数据块;授权读访问源地址处的数据块;授权读访问目标地址处的数据块;以及授权读和写访问源地址处的数据块。最后,处理器602可执行指令628-630,以:完成数据块的移动;以及一旦移动完成,更新与目标地址关联的描述符,因此数据块仅与目标地址关联,而不与源地址和目标地址两者关联。
机器可读存储介质604包括指令606-630,以供处理器获取、解码并执行。在另一个实施方式中,机器可读存储介质604可为电子的、磁性的、光学的存储器、储存器、闪存、或包含或存储可执行指令的其他物理设备。因此,机器可读存储介质604可包括例如:随机存取存储器(RAM)、电可擦除可编程只读存储器(EEPROM)、存储驱动、存储器高速缓存、网络储存器、光盘只读存储器(CDROM),等等。因此,机器可读存储介质604可包括应用和/或固件,其可独立地和/或与处理器602结合地被使用,以获取、解码和/或执行机器可读存储介质604的指令。应用和/或固件可存储在机器可读存储介质604上,和/或存储在计算设备600的其他位置上。
综上,本文公开的示例通过使处理器能够在移动期间同时访问数据块,来提供一种移动数据块的有效且透明的方式。
Claims (15)
1.一种方法,能由计算设备执行,以在源地址和目标地址之间移动数据块,所述方法包括:
启动数据移动引擎以将所述数据块从所述源地址移动至所述目标地址;以及
以允许处理器在所述移动期间同时访问所述数据块的方式,将所述数据块从所述源地址移动至所述目标地址。
2.根据权利要求1所述的方法,其中允许所述处理器在所述移动期间同时访问所述数据块进一步包括:
通过与所述目标地址关联的描述符,将所述目标地址的块映射到所述源地址的块;以及
在所述源地址被提供时,重定向所述处理器以在所述目标地址处访问所述数据块。
3.根据权利要求1方法的所述,其中启动所述数据移动引擎以将所述数据块从所述源地址移动至所述目标地址进一步包括:
由所述操作系统向所述数据移动引擎提供所述源地址和所述目标地址。
4.根据权利要求1所述的方法,其中启动所述数据移动引擎以将所述数据块从所述源地址移动至所述目标地址进一步包括以下中的一个:
写入与所述数据移动引擎关联的控制寄存器;以及
修改与所述源地址关联的描述符。
5.根据权利要求1所述的方法,进一步包括:
接收与所述数据块中的数据行对应的读操作;
如果所述数据行还未移动至所述目标地址,则从所述源地址访问所述数据块;以及
如果所述数据行已移动至所述目标地址,则从所述目标地址访问所述数据块。
6.根据权利要求1所述的方法,进一步包括:
接收与所述数据块中的数据行对应的写操作;
一旦确定所述数据行与未移动的数据行对应,就在所述源地址处修改所述数据行;
一旦确定所述数据行与正在进行移动的数据行对应,就在所述目标地址处修改所述数据行,其中所述数据行被标记为已移动;以及
一旦确定所述数据行与已移动的数据行对应,就在所述目标地址处修改所述数据行。
7.根据权利要求1所述的方法,进一步包括:
从与所述目标地址关联的高速缓存清理数据;以及
由所述操作系统更新表,以在所述移动完成时从所述目标地址而非所述源地址参考所述数据块。
8.一种存储器系统,包括:
数据移动引擎,用于:
从操作系统接收源地址和目标地址;以及
一旦接收所述地址,就将数据块从所述源地址移动至所述目标地址,其中所述数据移动引擎通过引导处理器在给定所述源地址时访问所述目标地址处的所述数据块,而使所述处理器能够在所述移动期间同时访问所述目标地址处的所述数据块。
9.根据权利要求8所述的存储器系统,进一步包括:
存储器控制器,用于将所述源地址映射到所述目标地址,其中所述映射引导所述处理器对于给定的所述源地址访问所述目标地址处的所述数据块;以及
高速缓存,与所述处理器关联,用于在所述移动完成时清理与所述数据块对应的数据行。
10.根据权利要求8所述的存储器系统,其中所述数据移动引擎进一步包括追踪器,用于记录与所述数据块对应的数据行何时已从所述源地址移动至所述目标地址,并且其中所述数据移动引擎进一步用于:
接收与所述数据行对应的写操作;
利用所述追踪器来确定所述数据行是否已移动;
基于确定所述数据行已移动,在所述目标地址处修改所述数据行;以及
一旦确定所述数据行与正在进行移动的数据行对应,在所述目标地址处修改所述数据行,其中追踪器将所述数据行记录为已移动。
11.一种被编码有指令的非暂时性机器可读存储介质,该指令能由计算设备的处理器执行,所述存储介质包括指令来:
启动数据移动引擎以将数据块从源地址移动至目标地址;以及
通过指导处理器对于给定的所述源地址访问所述目标地址处的所述数据块,以允许所述处理器在所述移动期间同时访问所述数据块的方式,将所述数据块从所述源地址移动至所述目标地址。
12.根据权利要求11所述的包括所述指令的非暂时性机器可读存储介质,其中启动所述数据移动引擎以将所述数据块从所述源地址移动至所述目标地址通过以下条件中的一个来触发:
所述源地址处的磨损检测;
达到对所述源地址写的数量;
通过操作系统的基于策略的实施。
13.根据权利要求11所述的包括所述指令的非暂时性机器可读存储介质,进一步包括指令来:
一旦所述数据块的所述移动完成,就更新存储器控制器中的描述符,所述描述符与所述数据块在所述目标地址中的位置对应。
14.根据权利要求11所述的包括所述指令的非暂时性机器可读存储介质,其中所述移动包括写时复制移动,且其中所述数据移动引擎进一步包括指令来通过以下中的一个使所述处理器能够访问所述数据块:使所述处理器能够读访问所述源地址;使所述处理器能够读访问所述目标地址;以及使所述处理器能够读访问和写访问所述源地址。
15.根据权利要求11所述的包括所述指令的非暂时性机器可读存储介质,进一步包括指令来:
接收零块操作,其中所述数据移动引擎限制对与之前已移动的所述数据块对应的数据行的读访问。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US2013/052990 WO2015016903A1 (en) | 2013-07-31 | 2013-07-31 | Data move engine to move a block of data |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105408874A true CN105408874A (zh) | 2016-03-16 |
CN105408874B CN105408874B (zh) | 2018-09-18 |
Family
ID=52432262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380078417.3A Active CN105408874B (zh) | 2013-07-31 | 2013-07-31 | 用于移动数据块的方法、存储器系统及存储介质 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9927988B2 (zh) |
EP (1) | EP3028152A1 (zh) |
CN (1) | CN105408874B (zh) |
WO (1) | WO2015016903A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874790A (zh) * | 2017-03-01 | 2017-06-20 | 中天安泰(北京)信息技术有限公司 | 一种计算设备运行方法及计算设备 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6517549B2 (ja) * | 2015-03-13 | 2019-05-22 | 東芝メモリ株式会社 | メモリコントローラ、記憶装置、データ転送システム、データ転送方法、及びデータ転送プログラム |
KR20180058456A (ko) * | 2016-11-24 | 2018-06-01 | 삼성전자주식회사 | 메모리를 관리하는 방법 및 장치. |
CN111433749B (zh) | 2017-10-12 | 2023-12-08 | 拉姆伯斯公司 | 具有dram高速缓存的非易失性物理存储器 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116555A1 (en) * | 2000-12-20 | 2002-08-22 | Jeffrey Somers | Method and apparatus for efficiently moving portions of a memory block |
US20030033454A1 (en) * | 2001-02-08 | 2003-02-13 | Walker Anthony Mark | Direct memory access controller |
US20040111576A1 (en) * | 2002-12-05 | 2004-06-10 | International Business Machines Corp. | High speed memory cloning facility via a source/destination switching mechanism |
US20060106972A1 (en) * | 2004-11-15 | 2006-05-18 | Gorobets Sergey A | Cyclic flash memory wear leveling |
US20070088929A1 (en) * | 2005-10-13 | 2007-04-19 | Tomohiro Hanai | Method for exchanging data between volumes of storage system |
US20080279005A1 (en) * | 2007-05-11 | 2008-11-13 | Spansion Llc | Managing flash memory program and erase cycles in the time domain |
CN101410812A (zh) * | 2006-04-25 | 2009-04-15 | 国际商业机器公司 | 迁移受到输入/输出设备访问的数据 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475860A (en) | 1992-06-15 | 1995-12-12 | Stratus Computer, Inc. | Input/output control system and method for direct memory transfer according to location addresses provided by the source unit and destination addresses provided by the destination unit |
FR2749681B1 (fr) | 1996-06-10 | 1998-07-10 | Bull Sa | Circuit pour transborder des donnees entre memoires distantes et calculateur comprenant un tel circuit |
GB0103472D0 (en) | 2001-02-13 | 2001-03-28 | Lsi Logic Corp | Data processing system |
JP2003015826A (ja) * | 2001-07-04 | 2003-01-17 | Hitachi Ltd | ディスクアレイ制御装置における共有メモリコピー機能 |
US6907494B2 (en) | 2002-10-10 | 2005-06-14 | International Business Machines Corporation | Method and system of managing virtualized physical memory in a memory controller and processor system |
US7130973B1 (en) | 2003-08-08 | 2006-10-31 | Sun Microsystems, Inc. | Method and apparatus to restore data redundancy and utilize spare storage spaces |
JP4386694B2 (ja) | 2003-09-16 | 2009-12-16 | 株式会社日立製作所 | 記憶システム及び記憶制御装置 |
US7702864B2 (en) | 2004-11-18 | 2010-04-20 | International Business Machines Corporation | Apparatus, system, and method for writing stripes in parallel to unique persistent storage devices |
US8447920B1 (en) * | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
-
2013
- 2013-07-31 US US14/902,962 patent/US9927988B2/en active Active
- 2013-07-31 WO PCT/US2013/052990 patent/WO2015016903A1/en active Application Filing
- 2013-07-31 CN CN201380078417.3A patent/CN105408874B/zh active Active
- 2013-07-31 EP EP13890459.4A patent/EP3028152A1/en not_active Withdrawn
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020116555A1 (en) * | 2000-12-20 | 2002-08-22 | Jeffrey Somers | Method and apparatus for efficiently moving portions of a memory block |
US20030033454A1 (en) * | 2001-02-08 | 2003-02-13 | Walker Anthony Mark | Direct memory access controller |
US20040111576A1 (en) * | 2002-12-05 | 2004-06-10 | International Business Machines Corp. | High speed memory cloning facility via a source/destination switching mechanism |
US20060106972A1 (en) * | 2004-11-15 | 2006-05-18 | Gorobets Sergey A | Cyclic flash memory wear leveling |
US20070088929A1 (en) * | 2005-10-13 | 2007-04-19 | Tomohiro Hanai | Method for exchanging data between volumes of storage system |
CN101410812A (zh) * | 2006-04-25 | 2009-04-15 | 国际商业机器公司 | 迁移受到输入/输出设备访问的数据 |
US20080279005A1 (en) * | 2007-05-11 | 2008-11-13 | Spansion Llc | Managing flash memory program and erase cycles in the time domain |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106874790A (zh) * | 2017-03-01 | 2017-06-20 | 中天安泰(北京)信息技术有限公司 | 一种计算设备运行方法及计算设备 |
Also Published As
Publication number | Publication date |
---|---|
CN105408874B (zh) | 2018-09-18 |
US20160170670A1 (en) | 2016-06-16 |
WO2015016903A1 (en) | 2015-02-05 |
US9927988B2 (en) | 2018-03-27 |
EP3028152A1 (en) | 2016-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9858008B2 (en) | Method to reduce flash memory IOs with host maintained address mapping table | |
US20190057038A1 (en) | Logical to physical mapping | |
US10956318B2 (en) | Overlapping ranges of pages in memory systems | |
CN108345545B (zh) | 在逻辑地址与物理地址之间执行散列式转译的存储装置 | |
US20200264984A1 (en) | Partial caching of media address mapping data | |
US20170270045A1 (en) | Hybrid memory device and operating method thereof | |
US20180357175A1 (en) | Cache devices with configurable access policies and control methods thereof | |
GB2604785A (en) | Providing direct data access between accelerators and storage in computing environment | |
US8924629B1 (en) | Mapping table for improving write operation efficiency | |
CN105408874A (zh) | 用于移动数据块的数据移动引擎 | |
KR20120102923A (ko) | 복사 명령 및 이동 명령을 지원하는 스토리지 시스템 및 상기 스토리지 시스템의 동작 방법 | |
KR20210019577A (ko) | 비-휘발성 메모리에서 데이터 유효성 추적 | |
US9047923B1 (en) | Fast shingled tracks recording | |
KR101750744B1 (ko) | 쓰기 전 로깅 연산 장치 및 방법 | |
US10552314B2 (en) | Memory system and method for ware leveling | |
US11494306B2 (en) | Managing data dependencies in a transfer pipeline of a hybrid dimm | |
US20230080105A1 (en) | Non-volatile storage controller with partial logical-to-physical (l2p) address translation table | |
US8856468B2 (en) | Memory device capable of improving write processing speed and memory control method | |
US10714176B2 (en) | Read-write cycle execution based on history | |
KR20180087494A (ko) | 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법 | |
US10922003B1 (en) | Realizing host-assisted device-level data deduplication on solid-state data storage devices with embedded non-volatile memory | |
CN112912834B (zh) | 存取单元和管理片段存储器操作 | |
KR20180076276A (ko) | 플래시 메모리의 가비지 콜렉션 방법 및 이를 이용하는 저장 장치 | |
US9043557B1 (en) | Heterogeneous memory system | |
KR101831126B1 (ko) | 스토리지 내의 데이터 처리 장치의 제어 방법 |
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: 20161114 Address after: American Texas Applicant after: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP Address before: American Texas Applicant before: Hewlett-Packard Development Company, Limited Liability Partnership |
|
GR01 | Patent grant | ||
GR01 | Patent grant |