CN106575271A - 管理存储设备 - Google Patents

管理存储设备 Download PDF

Info

Publication number
CN106575271A
CN106575271A CN201580033733.8A CN201580033733A CN106575271A CN 106575271 A CN106575271 A CN 106575271A CN 201580033733 A CN201580033733 A CN 201580033733A CN 106575271 A CN106575271 A CN 106575271A
Authority
CN
China
Prior art keywords
storage device
data
destination
write
logic
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
Application number
CN201580033733.8A
Other languages
English (en)
Other versions
CN106575271B (zh
Inventor
克里斯多佛·J·萨博
托马斯·耶兹纳赫
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Priority to CN202010180284.2A priority Critical patent/CN111522756B/zh
Publication of CN106575271A publication Critical patent/CN106575271A/zh
Application granted granted Critical
Publication of CN106575271B publication Critical patent/CN106575271B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0617Improving the reliability of storage systems in relation to availability
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0659Command handling arrangements, e.g. command buffers, queues, command scheduling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • 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/7202Allocation control and policies
    • 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/7207Details relating to flash memory management management of metadata or control data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input 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/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers

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)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

用于管理存储设备的方法、***、和装置,包括在计算机存储介质上编码的计算机程序。在一些实施方式中,存储器控制器经由逻辑接口接收逻辑写入请求,存储器控制器提供所述逻辑接口以用于访问非易失性存储设备。该逻辑写入请求指示将数据写入非易失性存储设备的逻辑地址。响应于接收到逻辑写入请求,存储器控制器向主机***发送写入请求事件。存储器控制器经由物理接口来从所述主机***接收物理写入命令,存储器控制器提供所述物理接口以用于访问非易失性存储设备。响应于接收到物理写入命令,存储器控制器根据该物理写入命令将数据存储在非易失性存储设备中。

Description

管理存储设备
技术领域
本说明书描述了与管理存储设备有关的技术。
背景技术
计算机、电话、和其它电子设备常常使用非易失性存储设备来存储数据。通常,一个或多个子***管理对存储设备的访问以允许数据被存储和检索。
发明内容
在一些实施方式中,固态驱动器或其它存储设备能够使用逻辑接口以及物理接口来与其它设备交互。逻辑接口可以允许所连接的设备根据抽象出关于存储设备的物理配置的细节的逻辑寻址方案来读取和写入数据。物理接口可以允许访问特定物理存储位置,例如允许读取、写入、或擦除固态驱动器中的NAND闪存的特定物理页和块。
通过提供逻辑接口和物理接口二者,存储设备可以在依赖于主机***使用物理接口执行管理任务的同时经由逻辑接口来提供对数据的访问。例如,存储设备的存储器控制器可以将管理功能中的一些或全部卸载到通过物理接口通信的主机***。当经由逻辑接口接收到逻辑请求时,存储器控制器可以将事件提供给主机***以作为对逻辑请求的通知。然后,存储器控制器可以经由物理接口从主机***接收指导存储器控制器如何执行逻辑请求的命令。这样,例如,主机***可以指定数据应当被写入哪些物理存储位置,并且主机***可以负责诸如垃圾收集和耗损均衡的任务。管理任务向主机***的卸载可以透明地进行,使得存储设备在经由逻辑接口通信的设备看来是标准存储设备。因此,逻辑接口可以在允许主机***进行的定制化管理的同时允许使用标准闪存驱动器和命令集来访问存储设备,所述标准闪存驱动和命令集诸如高速非易失性存储器(NVMe)或高级主机控制器接口(AHCI)标准。
在一些实施方式中,存储设备可以准许主机***对从一个存储设备向另一存储设备的迁移过程进行增强。主机***可以使用各种技术来将虚拟机的访问从源驱动器转移至目的地驱动器。作为示例,目的地驱动器的L2P映射表可以用例如无效物理地址的代码来填充,以指示其数据还未被复制到目的地驱动器的逻辑地址。如果虚拟机请求对被映射至该代码的逻辑地址的数据进行访问,则目的地驱动器、主机***、和源驱动器可以协作以从源驱动器提供适当的数据以满足该请求。作为另一示例,在虚拟机保持对源驱动器的访问的同时,主机***可开始将数据从源驱动器复制到目的地驱动器。在发生迁移的同时,源驱动器向主机***提供关于对源驱动器的写入请求的信息。主机***可以跟踪所发生的写入并且对目的地驱动器执行这些写入,以确保目的地驱动器包括反映在迁移开始之后发生的写入的数据。
在一般方面,由一个或多个处理设备执行的方法包括:在存储器控制器处经由逻辑接口接收逻辑写入请求,该存储器控制器提供该逻辑接口以用于访问非易失性存储设备,该逻辑写入请求指示将数据写入非易失性存储设备的逻辑地址;响应于接收到该逻辑写入请求,由存储器控制器向主机***发送写入请求事件;在存储器控制器处经由物理接口来从主机***接收物理写入命令,该存储器控制器提供该物理接口以用于访问非易失性存储设备,该物理写入命令包括用于将数据写入非易失性存储设备的指令;以及响应于从主机***接收到物理写入命令,由存储器控制器根据该物理写入命令来将数据存储在非易失性存储设备中。
此方面和其它方面的其它实施方式包括对应的***、装置、以及在计算机存储设备上编码的、被配置为执行所述方法的动作的计算机程序。一个或多个计算机的***能够依靠安装在***上的软件、固件、硬件、或者它们的组合来配置,其操作致使***执行所述动作。一个或多个计算机程序能够通过具有指令来配置,所述指令在被数据处理装置执行时致使所述装置执行所述动作。
实施方式可以包括下列特征中的一个或多个。例如,发送所述写入请求事件包括发送指示以下的写入请求事件:(i)存储所述数据的写入缓冲区的缓冲区地址以及(ii)由所述逻辑写入请求指示的所述逻辑地址。接收所述物理写入命令包括接收指示以下的物理写入命令:(i)存储所述数据的所述写入缓冲区的写入缓冲区地址以及(ii)存储所述数据的所述非易失性存储设备的一个或多个物理页;以及将所述数据存储在所述非易失性存储设备中包括将所述数据存储在由所述物理写入命令指示的所述非易失性存储设备的所述一个或多个物理页中。由所述存储器控制器接收与所述逻辑写入请求相对应的数据。经由所述物理接口向所述主机***发送所述写入请求事件包括:在不将所述数据发送至所述主机***的情况下向所述主机***发送所述写入请求事件。经由所述物理接口从所述主机***接收所述物理写入命令包括:在不从所述主机***接收所述数据的情况下接收所述物理写入命令。接收所述数据包括:通过直接存储器存取(DMA)转移来从不同于所述主机***的***接收所述数据。在将所述数据存储在所述非易失性存储设备中之后:由所述存储器控制器更新由所述存储器控制器管理的逻辑至物理映射表;以及由所述存储器控制器发送对由所述逻辑写入请求指示的写入的确认.
实施方式可以包括下列特征中的一个或多个。例如,响应于接收到所述逻辑写入请求,由所述存储器控制器分配用于存储所述数据的写入缓冲区。由所述存储器控制器将所述数据存储在所分配的写入缓冲区中;以及在将所述数据存储在所述非易失性存储设备中之后,由所述存储器控制器对存储所述数据的所述写入缓冲区解除分配。分配所述写入缓冲区包括:在易失性存储器中分配写入缓冲区。在将所述数据存储在所分配的写入缓冲区中之后并且在将所述数据存储在所述非易失性存储设备中之前,提供对由所述逻辑写入请求指示的写入的肯定。经由所述逻辑接口接收所述逻辑写入请求包括:经由高速非易失性存储器(NVMe)接口或高级主机控制器接口(AHCI)接口接收所述逻辑写入请求。经由所述物理接口从所述主机***接收所述物理写入命令包括:经由***组件高速互连(PCI-e)接口来接收所述物理写入命令。经由所述物理接口从所述主机***接收所述物理写入命令:包括接收指示将所述数据写入其中的一个或多个物理NAND闪存页的所述物理写入命令。
在另一个一般方面,一种方法包括:由主机***向客户机设备提供虚拟环境并且向所述客户机设备提供对由所述主机***管理的源存储设备的访问;暂停用于所述客户机设备的所述虚拟环境并且中断所述客户机对所述源存储设备的访问;发起所述源存储设备的内容向目的地存储设备的迁移;以及在所述源存储设备向所述目的地存储设备的迁移完成之前,恢复用于所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问。
此方面和其它方面的其它实施方式包括对应的***、装置、以及在计算机可读存储装置上编码的、被配置为执行所述方法的动作的计算机程序。一个或多个计算机的***能够依靠安装在***上的软件、固件、硬件、或者它们的组合来配置,其操作致使***执行所述动作。一个或多个计算机程序能够通过具有指令来配置,所述指令在被数据处理装置执行时致使所述装置执行所述动作。
实施方式可包括下列特征中的一个或多个。例如,所述动作包括:从所述目的地存储设备接收事件,所述事件指示所述目的地存储设备接收到与其数据还未从所述源存储设备复制到所述目的地存储设备的特定逻辑地址相对应的读取命令;以及响应于接收到所述事件,发布将与所述特定逻辑地址相对应的数据从所述源存储设备复制到所述目的地存储设备的命令。恢复用于所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问包括:以所述客户机设备无法察觉的方式,将所述客户机设备的访问从所述源存储设备转移至所述目的地存储设备。恢复用于所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问包括:在从所述源存储设备向所述目的地存储设备的数据迁移完成之前,允许所述客户机设备使用与所述源存储设备的映射相同的、先前所使用的逻辑地址与所存储的数据的映射来向所述目的地存储设备发布命令,而无需将访问限制于对其数据已经被复制到所述目的地存储设备的逻辑地址的访问。发起所述源存储设备的内容向目的地存储设备的迁移包括:向所述目的地存储设备的逻辑至物理映射中的每个逻辑地址指派预定代码,所述预定代码指示来自所述逻辑地址的数据还没有从所述源存储设备转移;以及在向所述逻辑至物理映射中的每个逻辑地址指派所述预定代码之后,发布命令以将数据从源存储设备复制到所述目的地存储设备。所述动作包括:由所述主机***确定对于其数据还没有从所述源存储设备复制到所述目的地地址的特定逻辑地址,所述目的地存储设备的所述逻辑至物理映射中的、与所述特定逻辑地址相关联的值不同于预定代码;以及基于确定与所述特定逻辑地址相关联的所述值不同于所述预定代码,确定不从所述源驱动器复制所述特定逻辑地址的数据。
在另一个一般方面,一种方法包括:在目的地存储设备处存储逻辑至物理映射,该逻辑至物理映射指示逻辑地址至所述目的地存储设备的物理地址的映射;在所述逻辑至物理映射中将预定代码指派给其数据还未从源存储设备迁移至所述目的地存储设备的逻辑地址;以及作为所述源存储设备的内容向所述目的地存储设备的迁移的一部分,在所述目的地存储设备处接收将数据从所述源存储设备复制到所述目的地存储设备的写入命令。
此方面和其它方面的其它实施方式包括对应的***、装置、以及在计算机可读存储装置上编码的、被配置为执行所述方法的动作的计算机程序。一个或多个计算机的***能够依靠安装在***上的软件、固件、硬件、或者它们的组合来配置,其操作致使***执行所述动作。一个或多个计算机程序能够通过具有指令来配置,所述指令在被数据处理装置执行时致使所述装置执行所述动作。
实施方式可以包括下列特征中的一个或多个。例如,所述动作包括:在将所述预定代码指派给其数据还未迁移的所述逻辑地址之后,在所述目的地存储设备处接收与特定逻辑地址相关联的读取命令,所述读取命令由客户机设备发布;在所述目的地存储设备处确定所述特定逻辑地址已经被指派了所述预定代码;以及响应于确定所述特定逻辑地址已经被指派了所述预定代码:在所述目的地存储设备处暂停所述读取操作;以及向主机***发布事件。所述动作包括:接收所述主机***响应于所述事件而发布的写入命令,该写入命令指令对所述特定逻辑地址的写入;写入由所述写入命令指示的数据并且更新所述逻辑至物理映射以(i)指示与所述特定逻辑地址相对应的数据的物理地址,并且(ii)使所述预定代码从与所述特定逻辑地址相关联解除;以及在所述目的地存储设备处恢复所述读取操作并且响应于所述读取命令而提供与所述特定逻辑地址相对应的数据。所述预定代码是无效物理地址。所述预定代码是指示所述目的地存储设备没有存储与所关联的逻辑地址相对应的有效数据的状态标志。在所述逻辑至物理映射中将所述预定代码指派给其数据还未从所述源存储设备迁移至所述目的地存储设备的逻辑地址包括:在作为将源存储设备的内容向所述目的地存储设备的迁移的一部分的、接收将数据从源存储设备复制到所述目的地存储设备的写入命令之前,将所述预定代码指派给所述逻辑至物理映射中的每个逻辑地址。所述动作包括:响应于接收到将数据从所述源存储设备复制到所述目的地存储设备的写入命令:将数据从所述源存储设备写入所述目的地存储设备;以及在所述逻辑至物理映射中将所述预定代码从与其数据已从所述源存储设备写入所述目的地存储设备的逻辑地址相关联解除。解除所述预定代码包括:用所述目的地存储设备中的有效物理地址来替换所述代码,与所述逻辑地址相对应的数据被存储在所述有效物理地址处。所述动作包括:接收写入命令以针对所述逻辑至物理映射中与所述预定代码相关联的特定逻辑地址来写入数据,其中,所述写入命令不将数据从所述源存储设备复制到所述目的地存储设备;以及响应于接收到该写入命令,执行由该写入命令指示的写入并且在所述逻辑至物理映射中解除所述预定代码与所述特定逻辑地址的关联。
在另一个一般方面,一种方法包括:由主机***向客户机设备提供虚拟环境并且向所述客户机设备提供对由所述主机***管理的源存储设备的访问;在维持所述客户机设备对所述源存储设备的访问的同时发起所述源存储设备的内容向目的地存储设备的迁移;在将所述源存储设备的内容向所述目的地存储设备迁移的同时,跟踪对所述源存储设备的写入并且将对所述源存储设备的写入传递至所述目的地存储设备;在所述源存储设备向所述目的地存储设备的迁移完成之后:暂停用于所述客户机设备的所述虚拟环境并且中断所述客户机对所述源存储设备的访问;以及恢复用于所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问。
此方面和其它方面的其它实施方式包括对应的***、装置、以及在计算机存储设备上编码的、被配置为执行所述方法的动作的计算机程序。一个或多个计算机的***能够依靠安装在***上的软件、固件、硬件、或者它们的组合来配置,其操作致使***执行所述动作。一个或多个计算机程序能够通过具有指令来配置,所述指令在被数据处理装置执行时致使所述装置执行所述动作。
实施方式可以包括下列特征中的一个或多个。例如,暂停所述虚拟环境和恢复所述虚拟环境在所述目的地存储设备包括所述源存储设备上的数据的完整副本之后被执行。所述动作包括:在所述主机***处存储转变表,所述转变表指示:对于与存储在所述源存储设备上的数据相对应的逻辑地址,所述目的地存储设备当前是否存储了与所对应的逻辑地址相关联的当前数据。发起所述源存储设备的内容向目的地存储设备的迁移包括:在将数据从所述源存储设备复制到所述目的地存储设备之前,对所述转变表进行初始化以指示:对于与存储在所述源存储设备上的数据相对应的逻辑地址中的任何一个,所述目的地存储设备没有存储当前数据。所述动作包括:发布一个或多个命令以将与特定逻辑地址相对应的数据从所述源驱动器复制到所述目的地驱动器;以及在发布所述一个或多个命令之后,更新所述转变表以指示所述目的地存储设备包括所述特定逻辑地址的当前数据。所述动作包括:在所述转变表中识别具有指示所述目的地存储设备没有存储所述逻辑地址的当前数据的状态值的逻辑地址;以及发布命令以将所识别的逻辑地址中的每一个的数据从所述源存储设备复制到所述目的地存储设备。所述动作包括:从所述源存储设备接收写入事件,所述写入事件指示所述源存储设备接收到针对特定逻辑地址的写入命令或者针对所述特定逻辑地址执行了写入;以及响应于接收到所述写入事件,更新所述转变表以指示:所述目的地存储设备没有存储所述特定逻辑地址的当前数据。所述动作还包括:基于所述转变表确定从所述源存储设备向所述目的地存储设备的数据迁移已完成。暂停所述虚拟环境和恢复所述虚拟环境响应于基于所述转变表确定从所述源存储设备向所述目的地存储设备的数据的迁移已完成而被执行。确定从所述源存储设备向所述目的地存储设备的数据的迁移已完成包括:确定所述转变表指示所述目的地存储设备存储与所述源存储设备相关联的每个逻辑地址的当前数据。恢复用于所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问包括:以所述客户机设备不可察觉的方式,将所述客户机设备的访问从所述源存储设备转移至所述目的地存储设备。
有利实施方式能够包括下列特征中的一个或多个。例如,存储设备能够通过逻辑接口和物理接口二者来提供访问。可以在允许定制化的管理技术的同时提供标准化的逻辑接口。存储器控制器的处理要求可以被降低。诸如垃圾收集、耗损均衡、以及对写入数据的物理区域的选择的管理功能可以被卸载到主机***。写入操作可以由主机***管理,而无需向主机***转移数据以及从其转移数据。虚拟机数据能够有效地从一个驱动器迁移至另一个驱动器。能够支持多个数据迁移选项。
本说明书中所描述的主题的一个或多个实施方式的细节在附图和下面的描述中阐述。主题的其它可能特征、方面、和优点将根据说明书、附图、和权利要求书而变得显而易见。
附图说明
图1是图示用于管理存储设备的***的示例的框图。
图2是图示存储设备的示例的框图。
图3是图示用于管理存储设备的***的示例的框图。
图4和图5是图示在存储设备之间迁移数据的示例的框图。
图6图示了对管理存储设备的示例进行图示的流程图。
各附图中相似的附图标记和名称指示相似的元素。
具体实施方式
图1是图示用于管理存储设备的***100的示例的框图。***100包括存储设备102、主机108、客户机104、和应用106。例如,存储设备102准许其它设备从存储设备102中的非易失性存储器存储和检索数据。存储设备102可以是包括NAND闪存的固态驱动器(SSD),或者存储设备102可以是另一形式的存储模块。主机108是管理存储设备102的计算机***。在一些实施方式中,主机108是向一个或多个虚拟机或虚拟环境提供处理资源和存储资源的虚拟化服务器。客户机104和应用106是具有对存储设备102的访问权的附加模块的示例。如下面进一步描述的,存储设备102被配置为与主机108协作以执行数据存储、数据检索、维护任务、以及对存储设备102的其它管理。
存储设备102提供物理接口和逻辑接口二者以用于访问存储器。物理接口使用对存储设备102的存储器的物理寻址来提供访问。例如,物理地址空间中的每个物理地址可以对应于存储器中的特定存储位置。通常,向存储器中的实际数据存储电路的物理地址的指派在存储设备102的使用期间不改变。逻辑接口使用对存储设备102的存储器的逻辑寻址来提供访问。例如,逻辑地址可以是从正在执行的程序或外部***的角度看起来某些数据驻留的地址,但是逻辑地址不永久地对应于任何特定存储器电路或存储位置。随着数据被写入到存储设备102,逻辑地址被映射和重新映射至具有不同物理地址的不同存储位置。如下面进一步描述的,存储设备102维持逻辑至物理映射,所述映射指示哪些物理地址对应于哪些逻辑地址,并且这些映射常常随着存储设备102被使用而改变。通常,逻辑寻址抽象出在存储器设备上的何处物理地存储数据的细节,而物理寻址允许命令引用存储器设备的特定物理存储位置。
通过物理接口118来提供存储设备102的物理接口。事件接口120与物理接口一起被使用以允许对存储设备102的更大的控制。物理接口118和事件接口120允许通过主机108的定制化管理并且允许存储设备102将存储器控制器的许多典型功能卸载(offload)到主机108。对存储设备102的逻辑访问通过逻辑接口110来提供,其允许***使用标准化协议来与存储设备102通信。例如,逻辑接口110可以允许使用诸如NVMe、AHCI、单根I/O虚拟化(SR-IOV)的标准、和/或其它通信方法的访问。对于使用逻辑接口110来访问存储设备102的***,存储设备102看起来是标准驱动器,尽管主机108提供对于存储设备102的定制管理。
逻辑接口110、事件接口120、和物理接口118均可以被实现为队列对,例如包括在存储设备102处接收的传入消息的输入队列以及由存储设备102发送的传出消息的输出队列的双向接口。例如,在物理接口118的一个队列中,存储设备102可以接收引用存储器设备的特定物理页或块的命令。在物理接口118的另一队列中,存储设备102可以提供肯定、错误消息、数据、或其它信息。
主机108包括控制和执行存储设备102的维护的管理模块114。管理模块114可以是内核驱动器、应用、或者在主机108上运行的其它软件模块。管理模块114使用事件接口120和物理接口118来与存储设备102通信。在一些实施方式中,物理接口118和事件接口120使用连接至主机108的***组件高速互连(PCIe)来实现。
存储设备102经由事件接口120将事件发送至管理模块114,例如以通知主机108需要来自主机108的输入的动作或条件。存储设备102可以发送读取事件以指示接收到从存储设备102读取数据的请求,并且可以发送写入事件以指示向存储设备102写入数据的请求。
管理模块114使用物理接口118将命令发送至存储设备102并且从存储设备102接收肯定。管理模块114经由物理接口118提供的命令使用物理寻址来引用存储设备102的存储器中的特定物理数据存储位置。例如,管理模块114可以提供的命令的示例包括读取命令、写入命令、复制命令、和擦除命令。所述命令可以指定与存储器的特定页或块有关的操作。作为示例,一个命令可以请求将数据写入到特定物理页,并且另一命令可请求擦除特定物理块。
如上面所讨论的,物理接口118可以队列对,例如,用于使管理模块114发送命令的请求队列以及用于使存储设备102发送操作完成通知的完成队列。所述命令是指示存储设备102应当执行哪些操作的指令。所述命令中的一些可以导致向存储设备102或从存储设备102的数据转移。数据转移通常不直接经由队列对发生,而是通过批量DMA操作发生。例如,物理读取命令可以向主机存储器——例如主机DRAM提供缓冲区指针。存储设备102可以通过批量DMA将所请求的数据转移至由该指针指示的缓冲区,并且然后经由完成队列发送完成通知以指示操作的完成。
物理接口118可允许进行以下操作的命令:(1)将缓冲区的内容写入物理地址、(2)将第一物理地址处的数据复制到第二物理地址、以及(3)擦除物理地址处的数据。通常,这三种命令将不导致主机108与存储设备102之间的DMA数据转移。通过使用复制操作,管理模块114可以执行垃圾收集,而不将数据转移到存储设备102外。如上所指出,物理接口118还可以包括擦除特定物理地址处的数据的命令。
出于调试、完整性、和传统支持的原因,物理接口118还可以支持读取物理地址处的数据、将数据写入到缓冲区的命令,以及其它调试相关命令。从物理地址读取数据以及将数据写入缓冲区的命令通常将导致存储设备102作出的批量DMA操作。
各种设备和模块能够通过存储设备102所提供的逻辑接口110来访问数据存储。经由逻辑接口110对存储设备102的访问可以与经由物理接口118的访问同时发生。即,在一个或多个其它***通过逻辑接口110连接的同时主机108连接至存储设备102。
逻辑接口110可以允许包括读取、写入、和trim的命令操作。例如,trim命令可以被用于指示地址可被擦除或者通过垃圾收集来回收。逻辑接口110还可以允许其它操作,例如诸如创建和销毁逻辑队列对的NVMe内务处理操作等。
经由逻辑接口110通信的***的示例包括客户机104、应用106、和内核块设备122。所描述的104表示客户机操作***,例如在主机108所管理的虚拟环境中运行的操作***。应用106可以是直接地或者通过虚拟化连接而具有对逻辑接口110的访问权的应用。内核块设备122表示主机108的驱动器模块,表明主机108还可以使用标准存储设备驱动器和协议来通过逻辑接口110存储和检索数据。例如,尽管主机108使用物理接口118管理存储设备102,但是主机108的操作***可以另外地访问存储设备102以支持主机108的内核文件***。
由主机的管理模块114经由物理接口118执行的正常运行时操作通常不会导致任何数据转移或批量DMA操作。使用逻辑接口110与存储设备102交互的应用和其它***通常发起数据转移。逻辑读取和写入操作通常导致向存储设备102以及从存储设备的DMA转移。如下面进一步讨论的,存储设备112向管理模块114提供逻辑写入请求的通知,以及已经通过批量DMA转移了数据的缓冲区的缓冲区ID。为了完成逻辑写入,管理模块114可以经由物理接口118发布对于存储设备102的命令以将适当的缓冲区的内容写入到指定的物理地址。此命令可以导致存储设备102拿取已经在存储设备102的缓冲区内的数据并且将它存储在闪存中。
除了所图示的队列对之外,逻辑接口110和物理接口118均具有使用批量DMA机制提供的访问主机108的至少一些存储器地址的隐含能力。因此,例如,存储设备102能够执行对来自逻辑接口110的队列对外部的、应用或虚拟机的数据的批量DMA转移。批量DMA数据转移和队列对可以使用相同的硬件链路——诸如与主机108的PCIe接口来操作。另外,通过队列对发送的命令通知和完成通知以及批量DMA数据转移可以作为直接对***DRAM读取或者写入的DMA操作来执行。
通常,每个客户机虚拟机或应用仅具有对主机DRAM的子集的访问权。PCIe虚拟化可以使用在***硬件中实现的输入/输出存储器单元(IO-MMU)代表应用或虚拟机来限制向它们所拥有的主机DRAM的部分的DMA转移。为了实现这些控制,逻辑队列对可以与PCIe虚拟功能相关联。代表逻辑队列对所发布的每个DMA操作可以用该队列对的虚拟功能来标记。当主机硬件正在处理设备DMA操作——针对批量DMA转移和队列访问操作这两者的操作时,IO-MMU硬件使用DMA的虚拟功能来查阅虚拟功能专用地址映射和权限表以确定DMA操作对于应用和/或虚拟机是否有效。相比之下,物理队列对不限于虚拟功能。因此,为了处理物理队列对上的命令而发布的DMA操作具有对主机DRAM中的全部的访问权。
图2是图示存储设备102的示例的框图。例如,存储设备102可以包括存储器控制器202、随机存取存储器(RAM)204、和非易失性存储设备206。
存储器控制器202可以包括一个或多个处理器,其被配置为处理来自存储设备102的各个接口110、118、120的数据,并且执行如下面进一步描述的其它功能。存储器控制器202的功能可以使用硬件、固件、软件、或其组合来实现。
非易失性存储设备206可以是NAND闪存芯片或者其它数据存储组件。通常,存储设备102包括多个非易失性存储设备206,并且存储器控制器202包括多个通道以并行地访问多个非易失性存储设备206。
RAM 204可以包括易失性动态随机存取存储器(DRAM),其可以被用于存储数据缓冲区208和逻辑至物理(L2P)映射210。例如,存储器控制器202可以对RAM 204的部分进行分配以充当数据缓冲区208以用于在经由逻辑接口110接收的数据被写入到非易失性存储设备之前暂时存储该数据。
L2P映射210提供逻辑地址——例如由外部应用或操作***用来表示存储位置的地址与物理地址——例如实际存储有数据的非易失性存储设备206的物理区域的地址之间的映射。例如,L2P映射210可以被实现为将逻辑地址214映射至物理地址216的表212。在所图示的示例中,逻辑地址“x3517”应于物理地址“x0132”,逻辑地址“x3518”应于物理地址“x8356”,逻辑地址“x3519”对应于物理地址“x9435”。
图3是图示用于管理存储设备的***300的框图。图3图示了图1的存储设备102、客户机104、和管理模块114的交互。图3还图示了由阶段(A)至(I)指示的数据流。图3的示例图示了存储设备102的混合设计如何允许经由逻辑接口110以及物理接口118的通信的示例。在该示例中,存储设备102在向客户机104(例如,虚拟机中的客户机操作***)提供逻辑接口110的同时还向主机108提供物理接口。
在图3的示例中,客户机104使用逻辑接口110发起写入操作。存储设备102和主机108交互以执行写入操作,其中管理模块114指定存储数据的存储设备102的物理位置。存储设备102和主机108的交互允许主机108在不转移待在存储设备102和主机108之间写入的数据的情况下管理所述写入操作。
在阶段(A)期间,客户机104经由逻辑接口110将逻辑写入请求302发送至存储设备102。逻辑写入请求302指示向非易失性存储设备206写入数据的逻辑地址。在所图示的示例中,逻辑写入请求302指示数据应当被存储在目的地逻辑地址“x1234”。逻辑写入请求302还指示从其能够访问待写入的数据的源地址,例如“SourceAddress”。
在阶段(B)期间,响应于接收到逻辑写入请求302,存储器控制器202分配数据缓冲区208以存储与逻辑写入请求320相关联的数据,例如客户机104请求写入的数据。数据缓冲区208可以位于诸如图2所示的RAM 204的易失性存储器中。在分配数据缓冲区208之后,存储器控制器202将待写入的数据转移至数据缓冲区208。例如,存储器控制器202从客户机104通过直接存储器存取(DMA)转移将数据转移至数据缓冲区208。
在阶段(C)期间,存储器控制器202更新L2P映射210以使得由写入请求302指示的逻辑地址对应于(例如,映射至)存储来自客户机104的数据的数据缓冲区208。在所图示的示例中,L2P映射210被更新以使得对于逻辑地址“x1234”,对应的物理地址被指示为数据缓冲区208——例如“Buffer1”。
在一些实施方式中,在将来自客户机104的数据存储在数据缓冲区208中之后,存储器控制器202能够可选地向客户机104提供指示写入操作已完成的肯定。如果在向非易失性储存器的写入完成之前客户机104尝试从逻辑地址“x1234”读取数据,则存储器控制器202能够从存储该数据的数据缓冲区208提供该数据。然而,由于数据当前被存储在易失性RAM 204中,因此在储存器102断电的事件中数据不是持久的。
在阶段(D)期间,响应于接收到逻辑写入请求302,存储器控制器202经由事件接口120将写入请求事件304发送至管理模块114。写入请求事件304通知管理模块114已请求写入操作。由于写入的管理由管理模块114处理,所以写入请求事件304发信号向管理模块示意需要输入来完成写入操作。写入请求事件304指示:操作的类型(例如,写入操作)、与操作关联的逻辑地址(例如,“x1234”)、以及存储待写入的数据的数据缓冲区208的缓冲区标识符(例如,“Buffer1”)。写入请求事件304可以包括写入请求302中的信息中的任何信息或所有信息。存储器控制器202将写入请求事件304提供给管理模块114,而无需将待写入的数据——例如存储在数据缓冲区208中的数据发送至管理模块114。
逻辑写入请求302和/或写入请求事件304可以指示写入请求的大小,例如待写入的数据量。例如,该信息可以通过NVMe接口来提供。在一些实施方式中,写入缓冲区具有固定的大小(例如,4千字节)。因此,对于大小为固定大小或更小的写入,存储器控制器202可以将单个写入请求事件304发送至管理模块114。当客户机***请求比固定的写入缓冲区大小更大的逻辑写入时,存储器控制器202为数据分配多个写入缓冲区,并且存储器控制器202向管理模块114发送多个写入请求事件304。如果对于来自存储器控制器202的所有写入事件使用固定的大小,则写入请求事件304可以省略对待写入的数据的大小的指示,因为存储器控制器202和管理模块114二者都预先知道该事件表示具有固定大小的写入。在一些实施方式中,使用各种大小的写入缓冲区,使得来自客户机***104的逻辑写入总是导致存储器控制器202向主机管理模块114发送单个写入请求事件304。写入请求事件304可以指示存储与写入请求事件304相关联的数据的缓冲区的特定大小。
在阶段(E)期间,响应于接收到写入请求事件304,管理模块114识别来自客户机104的数据应当被存储的非易失性存储设备206的存储位置。例如,管理模块114可以识别数据应当被写入的非易失性存储设备206的特定物理页。例如,管理模块114能够识别表示自由空间的物理页,例如先前已擦除的存储器位置。管理模块114可以执行其它动作以选择存储位置,诸如确定是否需要垃圾收集、执行耗损均衡分析等。一旦管理模块114已识别出应当用于写入操作的存储位置,管理模块114就以物理写入命令的方式将信息发送至存储器控制器202。
除了发送物理写入命令306之外,管理模块114还可以发送其它命令。例如,管理模块可以指示存储器控制器擦除特定块、将数据从一个位置复制到另一位置、或者以其它方式对非易失性存储设备206进行准备以执行物理写入命令306中所指示的写入。
在阶段(F)期间,存储器控制器202经由物理接口118从管理模块114接收物理写入命令306。物理写入命令306包括指令以将数据缓冲区208中的数据写入非易失性存储设备206。物理写入命令306指示(i)存储待写入的数据的数据缓冲区208的缓冲区地址以及(ii)其中要存储数据的非易失性存储设备206的一个或多个物理地址(在图中缩写为“PA”)。所述一个或多个物理地址可以指示非易失性存储设备206的特定页或块。物理写入命令306还可以指示与写入相关联的逻辑地址,或者存储器控制器202可以确定该逻辑地址(例如,基于所识别的缓冲区以及在对应的逻辑写入请求302中所指示的地址)。
在所图示的示例中,物理写入命令306指示缓冲区标识符“Buffer1”,并且指示缓冲区中的数据应当被写入到具有物理地址“x9648”的存储位置。由于存储器控制器202已经将待写入的数据存储在数据缓冲区208中,所以存储器控制器202无需再次转移数据。
在阶段(G)期间,存储器控制器202将数据缓冲区208中的数据存储在非易失性存储设备206中的、由物理写入命令306中的物理地址指示的存储位置(例如,页)处。在所图示的示例中,存储器控制器202将来自被标记为“Buffer1”的数据缓冲区208的数据存储在非易失性存储设备206中的、物理写入命令306所指示的物理地址“x9648”处。
在阶段(H)处,存储器控制器202更新L2P映射210以指示由逻辑写入请求302指示的逻辑地址对应于非易失性存储设备206中实际存储数据的物理地址。在所图示的示例中,存储器控制器202更新L2P映射210以指示逻辑写入请求302所指示的逻辑地址“x1234”对应于物理写入命令306所指示的物理地址“x9648”。在完成向非易失性存储设备的写入操作之后,存储器控制器202解除分配(例如,清除和释放)数据缓冲区208。
在阶段(I)处,如果存储器控制器202还未向客户机104指示写入完成,则存储器控制器202向客户机104发送以指示数据由非易失性存储设备206存储的肯定308。
除了图3所示的写入操作的示例之外,存储设备102可以执行由客户机104使用逻辑接口110发起的读取操作。在一些实施方式中,存储设备102可以响应于读取请求而在没有与主机108的管理模块114交互的情况下提供数据。
逻辑读取请求可以指示应当从其来从一个或多个非易失性存储设备206读取数据的逻辑地址。逻辑读取请求还可以指示与读取请求相关联的数据应当被转移至其的客户机104的目的地地址。存储器控制器202从客户机104接收读取请求,并且作为响应,访问L2P映射210。存储器控制器202能够在L2P映射210内识别由读取请求指示的逻辑地址并且确定与所识别的逻辑地址相关联(例如,映射至所识别的逻辑地址)的物理地址。
存储器控制器202能够检索与所确定的物理地址关联(例如,由非易失性存储设备206存储)的数据。存储器控制器202将所检索的数据提供至由来自客户机104的读取请求指示的客户机104的目的地地址(例如,通过DMA)。存储器控制器202还可以向客户机104提供与所检索的数据相关联的读取操作已完成的肯定。因此,在一些实例下,存储器控制器202响应于来自客户机104的读取请求而直接提供对非易失性存储设备206所存储的数据的访问,而无需管理模块114的介入或协助。
图4是图示用于在存储设备之间迁移数据的***400的框图。***400包括源存储设备402和存储设备102——被称作目的地存储设备102。源存储设备402和目的地存储设备102二者都由管理模块114管理。***还包括最初访问源存储设备402的客户机104。在迁移过程中的大部分期间,管理模块114在允许客户机104的读取和写入访问的同时将客户机104从使用源存储设备402转变为使用目的地存储设备102。
在图4的示例中,在迁移完成之前,例如在目的地存储设备102包括源存储设备402上的数据的完整副本之前,管理模块114将客户机104的访问转移至目的地存储设备102。因此,存在以下可能性:在目的地存储设备102还未存储客户机104尝试读取的数据时,客户机104可能请求从目的地存储设备102的逻辑地址读取。为了应对此场景,目的地存储设备102在L2P映射210中存储指示还未迁移的逻辑地址的代码。当目的地存储设备102确定对于与该代码相关联的逻辑地址的读取操作被请求时,存储设备402、102和管理模块114进行交互以从源存储设备402提供适当的数据。
更详细的,在阶段(A)期间,客户机104最初访问源存储设备402。客户机104可以发送对于源存储设备402所存储的数据的读取请求、从源存储设备402接收数据、以及发送待由源存储设备402存储的数据的写入请求。
在阶段(B)期间,管理模块114准备目的地存储设备102以便将客户机104的访问从源存储设备402转变至指定存储设备102。管理模块114修改目的地存储设备102的L2P映射210(或者发布命令以使目的地存储设备102这样做)使得L2P映射210中的每个逻辑地址与特定代码相关联。例如,所述代码可以是预留的值、标志、或者指示与逻辑地址相关联的数据无效的无效物理地址。例如,该代码能够是不与一个或多个非易失性存储设备206的任何存储位置相对应的物理地址。因此,尝试从映射至该代码的逻辑地址读取数据的读取请求能够提示存储器控制器202生成事件或错误。
在所图示的示例中,目的地存储设备102的每个逻辑地址的物理地址值被设置为“xFFFF”或负1,其不是有效的物理地址。无效地址可以是被存储器控制器202用于在尝试读取时触发不同动作或事件的多个不同的无效地址中的一个。除了将代码存储在L2P映射210的物理地址字段中之外或者作为其替选方案,代码可以作为除了物理地址之外所存储的标志或其它值、或者以另一方式存储的代码来存储。
在阶段(C)期间,管理模块114暂停用于客户机104的虚拟环境并且中断客户机104对源存储设备402的访问。
在阶段(D)期间,管理模块114恢复用于客户机104的虚拟环境并且例如经由目的地存储设备102的逻辑接口110提供客户机104对目的地存储设备102的访问。从客户机104的角度看,不存在一个存储设备已被替换为另一个的指示。客户机104可以继续向目的地存储设备102发布逻辑读取和写入请求就像仍在连接源存储设备402一样。
在转变至目的地存储设备102之后,来自客户机104的写入请求被引导至目的地存储设备102。写入操作可以以与上面关于图3所描述的相同的方式来执行。对目的地存储设备102执行写入操作的过程涉及将物理地址写入L2P映射210。因此,对目的地存储设备102的任何写入将清除指示所关联的数据无效的代码——例如“xFFFF”。从这些地址的后续读取可以由目的地存储设备以正常方式来执行。另外,将数据写入到目的地存储设备102的过程涉及如图3所示使用写入请求事件向管理模块114通知写入。这允许管理模块114确定被写入到目的地存储设备102的数据比还未从源存储设备402迁移的数据更加新,以使得管理模块114能够避免用来自源存储设备402的过期数据覆盖目的地存储设备102中的当前数据。
在阶段(D)之前或之后的某一时刻,管理模块114可以发起源存储设备402所存储的数据向目的地存储设备102的迁移。例如,管理模块114可以发布致使数据从源存储设备402被复制到目的地存储设备102的命令。在一些实例下,经由网络将数据从源存储设备402转移至目的地存储设备102。在一些实例下,如果存储设备402、102直接附接至相同的主机***,则可以在不经由网络进行转移的情况下将数据从源存储设备402转移至目的地存储设备102。
所述复制致使目的地存储设备102的L2P映射210被更新,以使得目的地存储设备102和源存储设备402的逻辑地址映射至存储相同数据的位置。与逻辑地址相对应的物理地址不必在不同的L2P映射中相同,只要物理地址与存储相同数据的位置相对应即可。作为示例,如果存储在两个物理地址所指定的位置中存储的数据相同,则“x1234”的逻辑地址可以映射至源存储设备402中的物理地址“x3745”和目的地存储设备102中的物理地址“x7382”。
在一些实施方式中,除了立即将数据从源存储设备402复制到目的地存储设备102之外,或者代替立即将数据从源存储设备402复制到目的地存储设备102,当客户机104请求从特定逻辑地址来读取数据时管理模块114能够复制那些逻辑地址的数据。因此,客户机104针对源存储设备402所存储的数据来向目的地存储设备102发布附加读取请求时,可以进行复制。例如,当客户机104正在覆盖大量的数据时,响应于读取请求来复制数据而非进行完整复制可以避免对很可能要被覆盖的数据的不必要的复制。
在阶段(E)期间,客户机104经由逻辑接口110向目的地存储设备102发送读取请求404。在此示例中,在迁移完成之前发送读取请求404,并且目的地存储设备102不存储所请求的数据。读取请求404能够包括所请求的数据的逻辑地址——例如,“x2536”。读取请求404还可以指示存储所检索的数据的客户机104的目的地地址。客户机104如同该客户机104正在访问源存储设备402一样来生成读取请求404。因此,客户机104对于读取请求404使用与源存储设备402所使用的逻辑地址相同的逻辑地址,并且该切换不是客户机104可察觉的。
在阶段(F)期间,响应于接收到读取请求404,存储器控制器202在目的地存储设备102的L2P映射210内识别由读取请求404指示的逻辑地址。存储器控制器202确定映射至所识别的逻辑地址的值不是有效物理地址。基于该值,存储器控制器202确定应当经由事件接口120来发布事件。存储器控制器202还确定读取操作应当被停止,并且因此存储器控制器202暂停或阻止读取操作。在所图示的示例中,存储器控制器202确定对于逻辑地址“x2536”,所映射的物理地址为负值——例如“xFFFF”。存储器控制器202还可以确定哪个事件或预定动作与所识别的特定代码相关联。
在一些实施方式中,L2P映射210包括与物理地址分离的、与逻辑地址相关联的状态字段。所述状态字段能够指示经编码的值。在这样的实施方式中,存储器控制器202可以评估与读取请求404所指示的逻辑地址相关联的状态字段以确定是否暂停读取和/或发布事件,而非评估物理地址字段中的值。
在阶段(G)期间,响应于在L2P映射210中检测到代码,存储器控制器202经由事件接口120向管理模块114发送读取事件408。在本示例中,所识别的代码与读取事件相对应,因此存储器控制器202将读取事件408发送至管理模块114。读取事件408指示读取请求404的逻辑地址。在一些实施方式中,读取事件408还包括L2P映射210中所包括的代码。
在阶段(H)期间,管理模块114从源存储设备402的非易失性存储设备410检索与读取事件408相关联的数据。例如,响应于接收到读取事件408,管理模块114确定哪个存储设备包括所请求的数据,并且经由源存储设备402的物理接口或逻辑接口向源存储设备402发布读取命令。源存储设备402提供与管理模块所指定的逻辑地址——例如“x2536”相对应的所请求的数据。
在阶段(I)期间,管理模块114经由物理接口118将物理写入命令414传送至目的地存储设备102。物理写入命令414指令存储器控制器202将从源存储设备402检索的数据写入目的地存储设备102的非易失性存储设备206的、由管理模块114确定的物理地址。在所图示的示例中,物理写入命令将物理地址“x9648”识别为存储数据的存储位置的地址。尽管未图示,写入命令414还可以指示目的地的逻辑地址和/或用于获得待写入的数据的源地址。
在阶段(J)期间,存储器控制器202根据写入命令414来将所检索的数据存储在非易失性存储设备206中。存储器控制器202还更新L2P映射210以指示被映射至读取请求404的逻辑地址的存储位置的物理地址。在所图示的示例中,L2P映射210被更新以使得物理地址“x9648”与逻辑地址“x2356”相关联。
在阶段(K)期间,存储器控制器202解除对客户机104的读取请求404的阻止,并且使用正常过程完成读取。例如,可以响应于触发读取操作被暂停的对逻辑地址的写入或者响应于来自管理模块114的通信来解除对读取请求的阻止。为了完成读取操作,存储器控制器202识别与读取请求404的逻辑地址相关联的物理地址、获得在由已更新的L2P映射指示的物理地址处所存储的数据、并且将所获得的数据提供给客户机104。
图5是图示用于在存储设备之间迁移数据的***500的框图。***500包括源存储设备402和存储设备102——被称作目的地存储设备102。源存储设备402和目的地存储设备102二者都由管理模块114管理。***还包括最初访问源存储设备402的客户机104。在迁移过程中的大部分期间,管理模块114在允许客户机104的读取和写入访问的同时将客户机104从使用源存储设备402转变为使用目的地存储设备102。
在图5的示例中,管理模块114在维持客户机104对源数据存储设备402的访问的同时将数据从源数据存储设备402迁移至目的地数据存储设备102。在迁移完成之后——例如在目的地存储设备102包括源存储设备402上的数据的完整副本之后,可以执行将客户机104的访问从源数据存储设备402向目的地数据存储设备102的转移。然而,在发生复制的同时,客户机104可能对源存储设备402进行附加写入,导致先前复制到目的地存储设备102的数据过期。为了解决这种可能性,管理模块114跟踪对源存储设备402进行的写入,并且也对目的地存储设备102进行相同的写入。结果,对源存储设备402的写入也被传递(propagate)至目的地存储设备102。
更详细的,在阶段(A)期间,客户机104最初访问源存储设备402。客户机104可以发送对于由源存储设备402存储的数据的读取请求、从源存储设备402接收数据、以及发送待由源存储设备402存储的数据的写入请求。
在阶段(B)期间,管理模块114发起由源存储设备402存储的数据向目的地存储设备102的迁移。管理模块114还将存储在主机108处的转变表502初始化,该转变表502允许管理模块114在数据的迁移开始之后跟踪客户机104向哪些逻辑地址进行了写入。例如,转变表502可以包括:第一列504,其包括逻辑地址;以及第二列506,其指示目的地存储设备102当前是否存储与对应的逻辑地址相关联的当前数据的状态。在所图示的示例中,状态值“0”能够指示对应的逻辑地址处的数据在目的地存储设备102处是当前的。状态“1”能够指示对应的逻辑地址处的数据在目的地存储设备102上不是当前的,例如客户机104已将数据写入源存储设备402处的逻辑地址——所述数据未被转移至目的地存储设备102,或者该数据还未从源存储设备402复制。在一些实施方式中,在迁移开始时,管理模块114对转变表502初始化以指示对于所有逻辑地址、在目的地存储设备102处的数据已过期,例如在本示例中所有逻辑地址将具有状态值“1”。
在阶段(C)期间,管理模块114将数据从源存储设备402迁移至目的地存储设备102。随着管理模块114将数据从源存储设备402复制到目的地存储设备102,管理模块114更新转变表502以指示在目的地存储设备102上的已复制的数据有效。例如,在将与逻辑地址“x2356”相对应的数据从源存储设备402复制到目的地存储设备102之后,与逻辑地址“x2356”相对应的状态值被更新为“0”以指示相关联的数据是当前的。
在阶段(D)期间,客户机104在迁移过程期间继续访问源存储设备402。客户机104能够向源存储设备402提供读取请求508,并且读取请求508所指示的数据由源存储设备402提供。即,读取操作不影响目的地存储设备102或迁移过程。
在阶段(E)期间,如上面关于图3所描述的,客户机104向源存储设备402发送写入请求(未示出)。如关于图3所讨论的来对源存储设备402进行写入操作。另外,响应于源存储设备402提供的写入事件,管理模块114更新转变表502。具体的,由于源存储设备402处于正在迁移的过程中,所以管理模块114将目的地存储设备102上与写入的逻辑地址相关联的状态值更新为不是当前的,例如状态值“1”。这指示客户机104作出的写入请求取代该写入请求的逻辑地址的、先前可能已复制的任何数据,即使与该逻辑地址相对应的数据曾经在目的地存储设备处为当前的。
在阶段(F)期间,管理模块114继续从源存储设备402至目的地存储设备102的数据的迁移。例如,管理模块114继续发布对源存储设备402的读取命令以及对目的地存储设备102的写入命令以复制状态值表中具有值“1”的所有逻辑的数据。在与逻辑地址相对应的数据被复制之后,状态值被更新为“0”以指示当前数据驻留在目的地存储设备102上。
在阶段(G)期间,管理模块114确定从源存储设备402至目的地存储设备102的数据迁移已完成。例如,管理模块114检查转变表502并且确定在转变表502中逻辑地址中的每一个或者至少预定量的逻辑地址具有状态值“0”。
在阶段(H)期间,管理模块114向客户机104提供对目的地存储设备102的访问。例如,管理模块114可短暂地停止用于客户机104的虚拟环境,并且然后在以对目的地存储设备102的访问替换对源存储设备402的访问之后恢复该虚拟环境。由于源存储设备402上的数据已被转移至目的地存储设备102,所以源存储设备402可以被擦除或用于另一目的。
在阶段(I)期间,客户机104访问目的地存储设备102。客户机104没有觉察到从源存储设备402至目的地存储设备102的访问切换。即,该变化没有影响客户机104进行的读取和写入访问,并且通常不是客户机104可察觉的。
关于图4和图5所描述的迁移技术可以被组合。例如,迁移可以利用所述技术中的一个来发起,并且可以利用另一技术来完成。类似地,可以在L2P映射中使用无效物理地址或其它代码来避免对无效数据的读取,并且管理模块114还可以使用转变表或其它机制来跟踪待被施加于一个或多个存储设备的写入。
关于图5讨论的迁移技术在客户机104主要进行读取数据的场景下可能更有效。当客户机104工作负荷集中在读取操作上时,可以将每条数据向目的地存储设备102复制一次,因为客户机104没有写入新版本并且复制到目的地的数据没有变得过期。另外,因为客户机104仍在与源存储设备402通信——所述源存储设备402包括客户机104可能希望访问的当前数据中的全部,所以读取操作可以被快速地执行,。
当客户机104正在写入大量数据时图4的迁移技术可能更有效。大量写入可能减慢使用图5的技术的迁移,因为随着新数据被写入到源存储设备402,来自先前已复制的位置的先前数据可能需要被重新复制到目的地存储设备102。如果主机108无法比客户机104将新数据写入到源存储设备402更快地将数据复制到目的地驱动器,所以迁移过程可能进行缓慢或者停顿。主机108可以评估客户机104的写入请求的量或频率或者迁移正在进行的速度。根据该评估,主机108可以确定从图5的迁移技术转变为图4的技术,从而允许在作出完整复制之前暂停对源存储设备402的访问。通过使用图5的技术,访问可以被转移至目的地存储设备102,使得直接对目的地存储设备102进行写入,以替代首先对源存储设备402进行写入。在写入繁重的工作负荷中,从源存储设备402读取数据的需要将相对稀少,因为客户机102主要在生成新数据。
图6描绘了图示用于管理存储设备的过程600的示例的流程图。过程600能够使用一个或多个处理设备来执行。例如,存储设备102的存储器控制器202或另一处理器可以执行过程600的操作。
逻辑写入请求由存储器控制器经由逻辑接口来接收(602)。存储器控制器提供逻辑接口以用于访问非易失性存储设备。逻辑写入请求指示向非易失性存储设备写入数据的逻辑地址。逻辑写入请求可以经由NVMe接口或AHCI接口来接收。
在一些实施方式中,待写入的数据通过直接存储器存储(DMA)转移来接收。例如,该数据可以从应用或虚拟化操作***、或者管理包括存储器控制器的存储设备的主机***之外的其它***接收。
响应于接收到逻辑写入请求,存储器控制器可以分配用于存储数据的写入缓冲区。例如,写入缓冲区可以被分配在诸如DRAM的易失性存储器中。然后,存储器控制器可以将数据存储在所分配的写入缓冲区中。在一些实施方式中,在将数据存储在所分配的写入缓冲区中之后且在将该数据存储在非易失性存储设备中之前提供由逻辑写入请求指示的写入的肯定。
由存储器控制器将写入请求事件发送至主机***(604)。可以由存储器控制器响应于接收到逻辑写入请求来发送写入请求。在一些实施方式中,写入请求事件指示(i)存储待写入的数据的写入缓冲区的缓冲区地址以及(ii)由逻辑写入请求指示的逻辑地址。写入请求事件可以被发送至主机***,而无需将待写入的数据发送至主机***。
在存储器控制器处经由物理接口来从主机***接收物理写入命令(606)。存储器控制器提供用于访问非易失性存储设备的物理接口。物理写入命令指令存储器控制器将数据写入非易失性存储设备。在一些实施方式中,物理写入命令指示(i)存储数据的写入缓冲区的写入缓冲区地址以及(ii)存储待写入的数据的非易失性存储设备的一个或多个物理页。例如,物理写入命令可以指示将数据写入其中的物理NAND闪存页。物理写入命令可以由存储器控制器接收,而无需从主机***接收待写入的数据。物理写入命令可以经由PCI-e接口来接收。
由存储器控制器根据物理写入命令来存储数据(608)。响应于从主机***接收到物理写入命令来存储数据。当物理写入命令例如利用对应的物理地址指示非易失性存储设备的特定物理页时,数据可以被存储在所指定的物理页中。在将数据存储在非易失性存储设备中之后,存储器控制器可以解除对存储写入的数据的写入缓冲区的分配。
在将数据存储在非易失性存储设备中之后,存储器控制器可以更新由存储器控制器管理的逻辑至物理映射表。例如,逻辑写入请求中指示的逻辑地址可以被映射至来自主机***的物理写入命令所指示的物理地址。在将数据存储在非易失性存储设备中之后,还可以提供由逻辑写入请求指示的写入的肯定。
已描述了若干实施方式。然而,将理解,在不脱离本公开的精神和范围的情况下可以作出各种修改。例如,上面所示的各种形式的流程可以在步骤被重新排序、添加、或去除的情况下使用。
本说明书中所描述的功能操作中的全部可被实现于数字电子电路中、或者计算机软件、固件、或硬件中——包括本说明书中所公开的结构及其结构上的等同物、或者它们中的一个或多个的组合中。所公开的技术可被实现为一个或多个计算机程序产品,即其被编码于计算机可读介质上以用于由数据处理设备执行或者控制数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储基板、存储器设备、影响机器可读传播信号的组合物、或者它们中的一个或多个的组合。计算机可读介质可以是非暂时性计算机可读介质。术语“数据处理装置“涵盖了用于处理数据的所有装置、设备、和机器,包括例如可编程处理器、计算机、或者多个处理器或计算机。除了硬件以外,所述装置还可以包括针对所讨论的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理***、操作***、或者它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如机器生成的电、光、或电磁信号,其被生成以对信息进行编码以用于传输至合适的接收器装置。
计算机程序(也称作程序、软件、软件应用、脚本、或代码)可以以包括编译或解释语言的任何形式的编程语言来编写,并且其可以以任何形式来部署,包括作为独立程序或者作为模块、组件、子例程、或者适合在计算环境中使用的其它单元。计算机程序不必对应于文件***中的文件。程序可以被存储在保持其它程序或数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、专用于所讨论的程序的单个文件中、或者多个协作文件(例如,存储一个或多个模块、子程序、或代码部分的文件)中。计算机程序可以被部署为在一个计算机上或者在位于一个地点或跨多个地点分布并通过通信网络互连的多个计算机上执行。
本说明书中所描述的过程和逻辑流程可以由一个或多个可编程处理器来执行,其执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行功能。所述过程和逻辑流程还可以由专用逻辑电路执行并且所述装置也可被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
适合于执行计算机程序的处理器包括例如通用和专用微处理器这两者,以及任何种类的数字计算机的任一个或多个处理器。通常,处理器将从只读存储器或者随机存取存储器或者这二者接收指令和数据。计算机的基本元件是用于执行指令的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘、或光盘,或者操作地耦合以从其接收数据或向其传输数据,或者这二者。然而,计算机无需具有这样的设备。此外,计算机可以被嵌入另一设备中,例如平板计算机、移动电话、个人数字助理(PDA)、移动音频播放器、全球定位***(GPS)接收器,仅举数例。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及CD ROM和DVD-ROM盘。处理器和存储器可以通过专用逻辑电路来补充或者被并入其中。
为了提供与用户的交互,所公开的技术可以被实现于具有以下的计算机上:用于向用户显示信息的显示设备——例如CRT(阴极射线管)或LCD(液晶显示器)监视器;以及用户通过其可以向计算机提供输入的键盘和指示设备——例如鼠标或轨迹球。也可以使用其它种类的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如视觉反馈、听觉反馈或者、触觉反馈;并且可以接收来自用户的任何形式的输入,包括声音、话音、或触觉输入。
实施方式可以包括计算***,其包括后端组件——例如作为数据服务器的后端组件,或者包括中间件组件——例如应用服务器,或者包括前端组件——例如具有用户通过其可以与所公开的技术的实施方式交互的图形用户界面或者Web浏览器的客户端计算机,或者一个或多个这样的后端、中间件、或前端组件的任何组合。***的组件可以通过任何形式或介质的数字数据通信——例如通信网络来互连。通信网络的示例包括:局域网(“LAN”)和广域网(“WAN”),例如互联网。
计算***可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络来交互。客户端和服务器的关系依靠在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生。
尽管本说明书包含许多细节,但是这些细节不应被解释为限制,而应当被解释为对特定实施方式所特有的特征的描述。在本说明书中在分离的实施方式的背景下描述的某些特征也可以被组合地实现于单个实施方式中。相反地,在单个实施方式的背景下描述的各个特征也可以单独地或者以任何合适的子组合来被实现于多个实施方式中。此外,尽管上面可能将特征描述为以某些组合来进行并且甚至初始如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下可以从组合中删去,并且要求保护的组合可以涉及子组合或者子组合的变型。
类似地,尽管在附图中以特定顺序描绘了操作,但是这不应被理解为要求这样的操作以所示的特定顺序或者以连续顺序来执行,或者要求全部图示的操作都被执行以达到所期望的结果。在某些情形中,多任务和并行处理可以是有利的。此外,在上述的实施方式中的各个***组件的分离不应被理解为在所有实施方式中均要求这样的分离,并且应当理解,所描述的程序组件和***通常可以一起集成到单个软件产品中或者被封装到多个软件产品中。
因此,已描述了主题的特定实施方式。其它实施方式在以下权利要求书的范围内。例如,权利要求书中记载的动作可以以不同的顺序来执行并且仍然实现所期望的结果。

Claims (45)

1.一种由一个或多个处理设备执行的方法,所述方法包括:
在存储器控制器处经由逻辑接口接收逻辑写入请求,所述存储器控制器提供所述逻辑接口以用于访问非易失性存储设备,所述逻辑写入请求指示将数据写入所述非易失性存储设备所用的逻辑地址;
响应于接收到所述逻辑写入请求,由所述存储器控制器向主机***发送写入请求事件;
在所述存储器控制器处,经由物理接口来从所述主机***接收物理写入命令,所述存储器控制器提供所述物理接口以用于访问所述非易失性存储设备,所述物理写入命令包括用于将所述数据写入所述非易失性存储设备的指令;以及
响应于从所述主机***接收到所述物理写入命令,由所述存储器控制器根据所述物理写入命令来将所述数据存储在所述非易失性存储设备中。
2.根据权利要求1所述的方法,其中,发送所述写入请求事件包括:发送下述写入请求事件,该写入请求事件指示:(i)存储所述数据的写入缓冲区的缓冲区地址,以及(ii)由所述逻辑写入请求指示的所述逻辑地址。
3.根据权利要求2所述的方法,其中,接收所述物理写入命令包括:接收下述物理写入命令,该物理写入命令指示:(i)存储所述数据的所述写入缓冲区的所述写入缓冲区地址,以及(ii)存储所述数据的所述非易失性存储设备的一个或多个物理页;以及
其中,将所述数据存储在所述非易失性存储设备中包括:将所述数据存储在由所述物理写入命令指示的所述非易失性存储设备的所述一个或多个物理页中。
4.根据权利要求1所述的方法,还包括:由所述存储器控制器接收与所述逻辑写入请求相对应的数据;
其中,经由所述物理接口向所述主机***发送所述写入请求事件包括:在没有将所述数据发送至所述主机***的情况下,向所述主机***发送所述写入请求事件;以及
其中,经由所述物理接口从所述主机***接收所述物理写入命令包括:在没有从所述主机***接收所述数据的情况下,接收所述物理写入命令。
5.根据权利要求4所述的方法,其中,接收所述数据包括:通过直接存储器存取DMA转移,来从不同于所述主机***的***接收所述数据。
6.根据权利要求1所述的方法,还包括:在将所述数据存储在所述非易失性存储设备中之后:
由所述存储器控制器更新由所述存储器控制器管理的逻辑至物理映射表;以及
由所述存储器控制器发送对由所述逻辑写入请求指示的写入的肯定。
7.根据权利要求1所述的方法,还包括:
响应于接收到所述逻辑写入请求,由所述存储器控制器分配用于存储所述数据的写入缓冲区;
由所述存储器控制器将所述数据存储在所分配的写入缓冲区中;以及
在将所述数据存储在所述非易失性存储设备中之后,由所述存储器控制器对存储所述数据的所述写入缓冲区解除分配。
8.根据权利要求7所述的方法,其中,分配所述写入缓冲区包括:在易失性存储器中分配写入缓冲区。
9.根据权利要求7所述的方法,还包括:在将所述数据存储在所分配的写入缓冲区中之后并且在将所述数据存储在所述非易失性存储设备中之前,提供对由所述逻辑写入请求指示的所述写入的肯定。
10.根据权利要求1所述的方法,其中,经由所述逻辑接口接收所述逻辑写入请求包括:经由高速非易失性存储器NVMe接口或高级主机控制器接口AHCI接口接收所述逻辑写入请求。
11.根据权利要求1所述的方法,其中,经由所述物理接口从所述主机***接收所述物理写入命令包括:经由***组件高速互连PCI-e接口来接收所述物理写入命令。
12.根据权利要求1所述的方法,其中,经由所述物理接口从所述主机***接收所述物理写入命令包括:接收指示将要被写入所述数据的一个或多个物理NAND闪存页的所述物理写入命令。
13.一种***,包括:
一个或多个非易失性存储设备;以及
存储器控制器,所述存储器控制器被配置为:
经由逻辑接口接收逻辑写入请求,所述存储器控制器提供所述逻辑接口以用于访问所述一个或多个非易失性存储设备,所述逻辑写入请求指示将数据写入所述一个或多个非易失性存储设备所用的逻辑地址;
响应于接收到所述逻辑写入请求,向主机***发送写入请求事件;
经由物理接口从所述主机***接收物理写入命令,所述存储器控制器提供所述物理接口以用于访问所述一个或多个非易失性存储设备,所述物理写入命令包括用于将所述数据写入所述一个或多个非易失性存储设备的指令;以及
响应于从所述主机***接收到所述物理写入命令,根据所述物理写入命令来将所述数据存储在所述一个或多个非易失性存储设备中。
14.根据权利要求13所述的***,其中,为了发送所述写入请求事件,所述存储器控制器被配置为:发送下述写入请求事件,该写入请求事件指示:(i)存储所述数据的写入缓冲区的缓冲区地址,以及(ii)由所述逻辑写入请求指示的所述逻辑地址。
15.根据权利要求14所述的***,其中,为了接收所述物理写入命令,所述存储器控制器被配置为:接收下述物理写入命令,该物理写入命令指示:(i)存储所述数据的所述写入缓冲区的所述写入缓冲区地址,以及(ii)存储所述数据的所述非易失性存储设备的一个或多个物理页;以及
其中,为了将所述数据存储在所述非易失性存储设备中,所述存储器控制器被配置为:将所述数据存储在由所述物理写入命令指示的所述非易失性存储设备的所述一个或多个物理页中。
16.根据权利要求13所述的***,其中,所述存储器控制器还被配置为接收与所述逻辑写入请求相对应的数据;
其中,为了经由所述物理接口向所述主机***发送所述写入请求事件,所述存储器控制器被配置为:在没有将所述数据发送至所述主机***的情况下,向所述主机***发送所述写入请求事件;以及
其中,为了经由所述物理接口从所述主机***接收所述物理写入命令,所述存储器控制器被配置为:在没有从所述主机***接收所述数据的情况下,接收所述物理写入命令。
17.根据权利要求16所述的方法,其中,为了接收所述数据,所述存储器控制器被配置为:通过直接存储器存取DMA转移,来从不同于所述主机***的***接收所述数据。
18.一种存储指令的机器可读存储设备,所述指令在被一个或多个处理器执行时致使所述一个或多个处理器执行操作,所述操作包括:
在存储器控制器处经由逻辑接口接收逻辑写入请求,所述存储器控制器提供所述逻辑接口以用于访问非易失性存储设备,所述逻辑写入请求指示将数据写入所述非易失性存储设备所用的逻辑地址;
响应于接收到所述逻辑写入请求,由所述存储器控制器向主机***发送写入请求事件;
在所述存储器控制器处,经由物理接口来从所述主机***接收物理写入命令,所述存储器控制器提供所述物理接口以用于访问所述非易失性存储设备,所述物理写入命令包括用于将所述数据写入所述非易失性存储设备的指令;以及
响应于从所述主机***接收到所述物理写入命令,由所述存储器控制器根据所述物理写入命令来将所述数据存储在所述非易失性存储设备中。
19.根据权利要求18所述的机器可读存储设备,其中,发送所述写入请求事件包括:发送下述写入请求事件,该写入请求事件指示:(i)存储所述数据的写入缓冲区的缓冲区地址,以及(ii)由所述逻辑写入请求指示的所述逻辑地址。
20.根据权利要求19所述的机器可读存储设备,其中,接收所述物理写入命令包括:接收下述物理写入命令,该物理写入命令指示:(i)存储所述数据的所述写入缓冲区的所述写入缓冲区地址,以及(ii)存储所述数据的所述非易失性存储设备的一个或多个物理页;以及
其中,将所述数据存储在所述非易失性存储设备中包括:将所述数据存储在由所述物理写入命令指示的所述非易失性存储设备的所述一个或多个物理页中。
21.一种***,包括:
一个或多个处理器以及存储能够操作的指令的一个或多个数据存储设备,所述指令在被所述一个或多个处理器执行时致使所述一个或多个处理器执行操作,所述操作包括:
由主机***向客户机设备提供虚拟环境并且向所述客户机设备提供对由所述主机***管理的源存储设备的访问;
暂停所述客户机设备的所述虚拟环境并且中断所述客户机对所述源存储设备的访问;
发起所述源存储设备的内容向目的地存储设备的迁移;以及在所述源存储设备向所述目的地存储设备的迁移完成之前,恢复所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问。
22.根据权利要求21所述的***,其中,所述操作还包括:
从所述目的地存储设备接收事件,所述事件指示所述目的地存储设备接收到与特定逻辑地址相对应的读取命令,所述特定逻辑地址的数据还未从所述源存储设备复制到所述目的地存储设备;以及
响应于接收到所述事件,发布用于将与所述特定逻辑地址相对应的数据从所述源存储设备复制到所述目的地存储设备的命令。
23.根据权利要求21所述的***,其中,恢复所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问包括:以所述客户机设备无法察觉的方式,将所述客户机设备的访问从所述源存储设备转移至所述目的地存储设备。
24.根据权利要求21所述的***,其中,恢复所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问包括:
在从所述源存储设备向所述目的地存储设备的数据迁移完成之前,允许所述客户机设备使用所述源存储设备先前所使用的逻辑地址与所存储数据的相同映射来向所述目的地存储设备发布命令,而无需将访问限制于对所述数据的数据已经被复制到所述目的地存储设备的逻辑地址的访问。
25.根据权利要求21所述的***,其中,发起所述源存储设备的内容向目的地存储设备的迁移包括:
向所述目的地存储设备的逻辑至物理映射中的每个逻辑地址指派预定代码,所述预定代码指示来自所述逻辑地址的数据还没有从所述源存储设备转移;以及
在向所述逻辑至物理映射中的每个逻辑地址指派所述预定代码之后,发布用于将数据从源存储设备复制到所述目的地存储设备的命令。
26.根据权利要求21所述的***,其中,所述操作还包括:
针对数据还没有从所述源存储设备复制到所述目的地地址的特定逻辑地址,由所述主机***确定所述目的地存储设备的所述逻辑至物理映射中与所述特定逻辑地址相关联的值不同于预定代码;以及
基于确定与所述特定逻辑地址相关联的所述值不同于所述预定代码,确定不从所述源驱动器复制所述特定逻辑地址的数据。
27.一种***,所述***包括:
一个或多个处理器以及存储有能够操作的指令的一个或多个数据存储设备,所述指令在被所述一个或多个处理器执行时致使所述一个或多个处理器执行操作,所述操作包括:
在目的地存储设备处存储逻辑至物理映射,所述逻辑至物理映射指示所述目的地存储设备的逻辑地址至物理地址的映射;
在所述逻辑至物理映射中,将预定代码指派给数据还未从源存储设备迁移至所述目的地存储设备的逻辑地址;以及
在所述目的地存储设备处,接收将数据从所述源存储设备复制到所述目的地存储设备的写入命令,作为将源存储设备的内容向所述目的地存储设备迁移的一部分。
28.根据权利要求27所述的***,其中,所述操作还包括:
在将所述预定代码指派给数据还未迁移的所述逻辑地址之后,在所述目的地存储设备处,接收与特定逻辑地址相关联的读取命令,所述读取命令由客户机设备发布;
在所述目的地存储设备处,确定所述特定逻辑地址已经被指派了所述预定代码;以及
响应于确定所述特定逻辑地址已经被指派了所述预定代码:
在所述目的地存储设备处暂停所述读取操作;以及
向主机***发布事件。
29.根据权利要求28所述的***,其中,所述操作还包括:
接收所述主机***响应于所述事件而发布的写入命令,所述写入命令指令对所述特定逻辑地址的写入;
写入由所述写入命令所指示的数据并且更新所述逻辑至物理映射,以(i)指示与所述特定逻辑地址相对应的数据的物理地址,以及(ii)使所述预定代码解除与所述特定逻辑地址的关联;以及
在所述目的地存储设备处恢复所述读取操作,并且响应于所述读取命令而提供与所述特定逻辑地址相对应的所述数据。
30.根据权利要求27所述的***,其中,所述预定代码是无效物理地址。
31.根据权利要求27所述的***,其中,所述预定代码是状态标志,所述状态标志指示所述目的地存储设备没有存储与所关联的逻辑地址相对应的有效数据。
32.根据权利要求27所述的***,其中,在所述逻辑至物理映射中将所述预定代码指派给数据还未从所述源存储设备迁移至所述目的地存储设备的逻辑地址包括:
在接收用于将数据从源存储设备复制到所述目的地存储设备的写入命令作为将源存储设备的内容向所述目的地存储设备的迁移的一部分之前,将所述预定代码指派给所述逻辑至物理映射中的每个逻辑地址。
33.根据权利要求27所述的***,其中,所述操作还包括:
响应于接收到将数据从所述源存储设备复制到所述目的地存储设备的所述写入命令:
将数据从所述源存储设备写入所述目的地存储设备;以及
在所述逻辑至物理映射中,将所述预定代码解除与数据已从所述源存储设备写入所述目的地存储设备的逻辑地址的关联。
34.根据权利要求33所述的***,其中,将所述预定代码解除包括:用所述目的地存储设备中的有效物理地址来替换所述代码,在所述有效物理地址处存储了与所述逻辑地址相对应的数据。
35.根据权利要求27所述的***,其中,所述操作还包括:
接收写入命令,所述写入命令用于针对所述逻辑至物理映射中与所述预定代码相关联的特定逻辑地址来写入数据,其中,所述写入命令没有将数据从所述源存储设备复制到所述目的地存储设备;以及
响应于接收到所述写入命令,执行由所述写入命令所指示的写入,并且在所述逻辑至物理映射中解除所述预定代码与所述特定逻辑地址的关联。
36.一种***,包括:
一个或多个处理器以及存储能够操作的指令的一个或多个数据存储设备,所述指令在被所述一个或多个处理器执行时致使所述一个或多个处理器执行操作,所述操作包括:
由主机***向客户机设备提供虚拟环境并且向所述客户机设备提供对由所述主机***管理的源存储设备的访问;
在维持所述客户机设备对所述源存储设备的访问的同时,发起所述源存储设备的内容向目的地存储设备的迁移;
在将所述源存储设备的内容向所述目的地存储设备迁移的同时,跟踪对所述源存储设备的写入并且将对所述源存储设备的写入传递至所述目的地存储设备;
在所述源存储设备向所述目的地存储设备的迁移完成之后:
暂停所述客户机设备的所述虚拟环境并且中断所述客户机设备对所述源存储设备的访问;以及
恢复所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问。
37.根据权利要求36所述的***,其中,暂停所述虚拟环境和恢复所述虚拟环境是在所述目的地存储设备包括所述源存储设备上的数据的完整副本之后被执行。
38.根据权利要求36所述的***,其中,所述操作还包括:在所述主机***处存储转变表,所述转变表指示对于与存储在所述源存储设备上的数据相对应的逻辑地址、所述目的地存储设备当前是否存储了与所对应的逻辑地址相关联的当前数据。
39.根据权利要求38所述的***,其中,发起所述源存储设备的内容向目的地存储设备的迁移包括:
在将数据从所述源存储设备复制到所述目的地存储设备之前,对所述转变表进行初始化,以指示对于与存储在所述源存储设备上的数据相对应的逻辑地址中的任何一个、所述目的地存储设备没有存储当前数据。
40.根据权利要求38所述的***,其中,所述操作还包括:
发布一个或多个命令,所述一个或多个命令用于将与特定逻辑地址相对应的数据从所述源驱动器复制到所述目的地驱动器;以及
在发布所述一个或多个命令之后,更新所述转变表,以指示所述目的地存储设备包括所述特定逻辑地址的当前数据。
41.根据权利要求38所述的***,其中,所述操作还包括:
识别所述转变表中具有下述状态值的逻辑地址:该状态值指示所述目的地存储设备没有存储所述逻辑地址的当前数据;以及
发布命令,所述命令用于将每一个所识别的逻辑地址中的数据从所述源存储设备复制到所述目的地存储设备。
42.根据权利要求38所述的***,其中,所述操作还包括:
从所述源存储设备接收写入事件,所述写入事件指示所述源存储设备接收到针对特定逻辑地址的写入命令或者针对所述特定逻辑地址执行了写入;以及
响应于接收到所述写入事件,更新所述转变表,以指示所述目的地存储设备没有存储所述特定逻辑地址的当前数据。
43.根据权利要求38所述的***,其中,所述操作还包括:基于所述转变表,确定从所述源存储设备向所述目的地存储设备的数据迁移已完成;
其中,响应于基于所述转变表确定从所述源存储设备向所述目的地存储设备的数据迁移已完成,执行暂停所述虚拟环境和恢复所述虚拟环境。
44.根据权利要求43所述的***,其中,确定从所述源存储设备向所述目的地存储设备的数据迁移已完成包括:确定所述转变表指示所述目的地存储设备存储了与所述源存储设备相关联的每个逻辑地址的当前数据。
45.根据权利要求36所述的***,其中,恢复所述客户机设备的所述虚拟环境并且向所述客户机设备提供对所述目的地存储设备的访问包括:以所述转移对于所述客户机设备是不可察觉的方式,将所述客户机设备的访问从所述源存储设备转移至所述目的地存储设备。
CN201580033733.8A 2014-06-23 2015-06-18 管理存储设备 Active CN106575271B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010180284.2A CN111522756B (zh) 2014-06-23 2015-06-18 管理存储设备

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/311,920 US9959203B2 (en) 2014-06-23 2014-06-23 Managing storage devices
US14/311,920 2014-06-23
PCT/US2015/036470 WO2015200096A1 (en) 2014-06-23 2015-06-18 Managing storage devices

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202010180284.2A Division CN111522756B (zh) 2014-06-23 2015-06-18 管理存储设备

Publications (2)

Publication Number Publication Date
CN106575271A true CN106575271A (zh) 2017-04-19
CN106575271B CN106575271B (zh) 2020-04-10

Family

ID=53718117

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202010180284.2A Active CN111522756B (zh) 2014-06-23 2015-06-18 管理存储设备
CN201580033733.8A Active CN106575271B (zh) 2014-06-23 2015-06-18 管理存储设备

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202010180284.2A Active CN111522756B (zh) 2014-06-23 2015-06-18 管理存储设备

Country Status (5)

Country Link
US (4) US9959203B2 (zh)
EP (4) EP3158457B1 (zh)
CN (2) CN111522756B (zh)
DK (2) DK3637269T3 (zh)
WO (1) WO2015200096A1 (zh)

Cited By (55)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107402722A (zh) * 2017-07-04 2017-11-28 杭州宏杉科技股份有限公司 一种数据迁移方法及存储设备
CN108345431A (zh) * 2017-12-29 2018-07-31 杭州华为数字技术有限公司 一种数据读取的方法及装置
CN108804342A (zh) * 2017-04-28 2018-11-13 Emc知识产权控股有限公司 对永久性存储装置写入和读取数据的方法和***
CN108959981A (zh) * 2017-05-19 2018-12-07 三星电子株式会社 数据存储装置以及数据存储和保存***
CN108983939A (zh) * 2017-05-31 2018-12-11 西部数据技术公司 使用停止命令进行电源故障处理
CN109086193A (zh) * 2017-06-13 2018-12-25 阿里巴巴集团控股有限公司 监控方法、装置及***
CN109101190A (zh) * 2017-06-20 2018-12-28 三星电子株式会社 利用基础数据识别的对象去重
CN109213691A (zh) * 2017-06-30 2019-01-15 伊姆西Ip控股有限责任公司 用于缓存管理的方法和设备
CN109213438A (zh) * 2017-07-03 2019-01-15 三星电子株式会社 预先管理待分配给写入数据的物理地址的存储装置
CN109213423A (zh) * 2017-06-30 2019-01-15 北京忆恒创源科技有限公司 基于地址屏障无锁处理并发io命令
CN109213705A (zh) * 2017-07-07 2019-01-15 爱思开海力士有限公司 存储装置及其操作方法
CN109388974A (zh) * 2017-08-14 2019-02-26 西部数据技术公司 具有安全读取的非易失性存储器装置
CN109521950A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 存储设备、其操作方法及包括存储设备的存储***
CN109522250A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 根据多播通信协议与主机通信的存储设备和主机通信方法
CN109582599A (zh) * 2017-09-29 2019-04-05 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
CN109656843A (zh) * 2017-10-11 2019-04-19 三星电子株式会社 数据存储装置及桥接装置
CN109656467A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 云网络的数据传输***、数据交互方法、装置及电子设备
CN109726139A (zh) * 2017-10-27 2019-05-07 东芝存储器株式会社 存储器***及控制方法
CN110275757A (zh) * 2018-03-16 2019-09-24 北京忆恒创源科技有限公司 利用***抽象层提供多协议存储设备
CN110287152A (zh) * 2019-06-27 2019-09-27 深圳市腾讯计算机***有限公司 一种数据管理的方法以及相关装置
CN110389909A (zh) * 2018-04-16 2019-10-29 三星电子株式会社 使用深度神经网络优化固态驱动器的性能的***和方法
CN110770690A (zh) * 2017-09-06 2020-02-07 西部数据技术公司 用于切换固件的***和方法
CN110888597A (zh) * 2018-09-07 2020-03-17 三星电子株式会社 存储设备、存储***以及操作存储设备的方法
CN110941572A (zh) * 2018-09-25 2020-03-31 通用电气航空***有限责任公司 用于灵活写入受监管***的内部数据的***和方法
CN111124265A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 数据访问方法、设备和计算机程序产品
CN111279327A (zh) * 2017-10-31 2020-06-12 高通股份有限公司 用于非易失性存储器的写入信用管理
CN111722791A (zh) * 2019-03-22 2020-09-29 株式会社日立制作所 信息处理***、存储***和数据传输方法
CN111868678A (zh) * 2018-03-21 2020-10-30 美光科技公司 混合存储器***
CN111886573A (zh) * 2018-01-12 2020-11-03 格里森技术有限责任公司 存储资源的安全共享
CN111902804A (zh) * 2018-06-25 2020-11-06 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的***和方法
CN111913900A (zh) * 2020-07-21 2020-11-10 大唐微电子技术有限公司 一种主机与外接设备通信的方法、存储介质和电子装置
CN111984553A (zh) * 2019-05-21 2020-11-24 美光科技公司 主机装置物理地址编码
CN112130756A (zh) * 2019-06-25 2020-12-25 美光科技公司 经由多个逻辑地址空间存取的聚合和虚拟化固态驱动器
CN112204514A (zh) * 2018-05-30 2021-01-08 苹果公司 用于保留非易失性存储器的预期寿命的技术
CN112313634A (zh) * 2018-06-29 2021-02-02 美光科技公司 快闪存储器的主机侧缓存安全
CN112346653A (zh) * 2019-08-06 2021-02-09 株式会社日立制作所 驱动器箱、存储***和数据传送方法
CN112732599A (zh) * 2019-10-14 2021-04-30 美光科技公司 具有虚拟化总线和内部逻辑以执行机器学习操作的存储器子***
CN112749111A (zh) * 2019-10-31 2021-05-04 华为技术有限公司 访问数据的方法、计算设备和计算机***
CN112840325A (zh) * 2018-10-30 2021-05-25 美光科技公司 存储装置上的名称空间中的错误检查
CN112930520A (zh) * 2018-09-13 2021-06-08 铠侠股份有限公司 用于使用以太网驱动器及以太网络开放通道驱动器存储数据的***及方法
CN112947852A (zh) * 2019-11-25 2021-06-11 美光科技公司 受存储器子***限制的存储器功能
CN113010449A (zh) * 2019-12-19 2021-06-22 美光科技公司 存储器子***中命令的有效处理
CN113126895A (zh) * 2019-12-30 2021-07-16 爱思开海力士有限公司 存储装置及其操作方法
CN113168399A (zh) * 2019-03-14 2021-07-23 西部数据技术公司 可执行存储器单元
CN113168487A (zh) * 2018-12-03 2021-07-23 惠普发展公司,有限责任合伙企业 逻辑电路***封装
CN113165395A (zh) * 2018-12-03 2021-07-23 惠普发展公司,有限责任合伙企业 逻辑电路***
CN113204311A (zh) * 2020-01-31 2021-08-03 西部数据技术公司 NVMe SGL位存储桶传输
CN113448893A (zh) * 2020-03-10 2021-09-28 联发科技股份有限公司 用于控制多个客户端访问单个存储装置的方法及装置
CN113553099A (zh) * 2020-04-24 2021-10-26 美光科技公司 主机常驻转换层写入命令
CN113678113A (zh) * 2019-03-29 2021-11-19 美光科技公司 计算存储装置与基于网络化的***
CN113711189A (zh) * 2019-02-13 2021-11-26 铠侠股份有限公司 用于管理固态驱动器上的降低电力故障能量需求的***及方法
CN114077402A (zh) * 2020-08-19 2022-02-22 美光科技公司 写入类型指示命令
CN114258534A (zh) * 2019-08-22 2022-03-29 美光科技公司 阶层式存储器***
CN114424284A (zh) * 2019-08-28 2022-04-29 美光科技公司 码字内耗损均衡技术
WO2022252082A1 (zh) * 2021-05-31 2022-12-08 华为技术有限公司 一种数据处理方法、设备及***

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0624582D0 (en) * 2006-12-08 2007-01-17 Visible Computing Ltd USB autorun devices
US9653184B2 (en) 2014-06-16 2017-05-16 Sandisk Technologies Llc Non-volatile memory module with physical-to-physical address remapping
US20160232088A1 (en) * 2014-07-17 2016-08-11 Sandisk Enterprise Ip Llc Garbage Collection in Storage System with Distributed Processors
US9841902B2 (en) * 2014-11-20 2017-12-12 Avago Technologies General Ip (Singapore) Pte. Ltd. Peripheral component interconnect express controllers configured with non-volatile memory express interfaces
WO2016206012A1 (en) * 2015-06-24 2016-12-29 Intel Corporation Systems and methods for isolating input/output computing resources
US10303360B2 (en) * 2015-09-30 2019-05-28 International Business Machines Corporation Replicating data in a data storage system
CN106648440B (zh) * 2015-10-28 2020-07-24 华为技术有限公司 操作存储设备的控制方法和存储设备
EP3916536A1 (en) 2015-12-28 2021-12-01 Huawei Technologies Co., Ltd. Data processing method and nvme storage device
US10599333B2 (en) * 2016-03-09 2020-03-24 Toshiba Memory Corporation Storage device having dual access procedures
CN111752480A (zh) * 2016-03-24 2020-10-09 华为技术有限公司 一种数据写方法、数据读方法及相关设备、***
EP3279810B1 (en) * 2016-06-14 2019-09-04 Huawei Technologies Co., Ltd. Data access method and related apparatus and system
US20170371785A1 (en) * 2016-06-28 2017-12-28 Intel Corporation Techniques for Write Commands to a Storage Device
US11042496B1 (en) * 2016-08-17 2021-06-22 Amazon Technologies, Inc. Peer-to-peer PCI topology
JP6765322B2 (ja) * 2017-02-28 2020-10-07 キオクシア株式会社 メモリシステムおよび制御方法
US10542089B2 (en) * 2017-03-10 2020-01-21 Toshiba Memory Corporation Large scale implementation of a plurality of open channel solid state drives
US10180802B2 (en) 2017-05-18 2019-01-15 International Business Machines Corporation Collision detection at multi-node storage sites
US10732893B2 (en) * 2017-05-25 2020-08-04 Western Digital Technologies, Inc. Non-volatile memory over fabric controller with memory bypass
JP6785205B2 (ja) 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP6982468B2 (ja) 2017-10-27 2021-12-17 キオクシア株式会社 メモリシステムおよび制御方法
US10452502B2 (en) 2018-01-23 2019-10-22 International Business Machines Corporation Handling node failure in multi-node data storage systems
KR20200133817A (ko) * 2018-04-23 2020-11-30 마이크론 테크놀로지, 인크. 호스트 논리적-대-물리적 정보 리프레시
GB201808820D0 (en) * 2018-05-30 2018-07-11 Nordic Semiconductor Asa Direct memory access controller
TWI715116B (zh) * 2018-09-14 2021-01-01 慧榮科技股份有限公司 資料儲存裝置及其刪除命名空間之方法
US11061735B2 (en) 2019-01-02 2021-07-13 Alibaba Group Holding Limited System and method for offloading computation to storage nodes in distributed system
US11416435B2 (en) * 2019-09-03 2022-08-16 Pensando Systems Inc. Flexible datapath offload chaining
CN110765033B (zh) * 2019-10-31 2023-03-10 四川效率源信息安全技术股份有限公司 一种ahci模式下访问硬盘的方法
US11561916B2 (en) * 2020-01-13 2023-01-24 Hewlett Packard Enterprise Development Lp Processing task deployment in adapter devices and accelerators
US11669473B2 (en) * 2020-06-26 2023-06-06 Advanced Micro Devices, Inc. Allreduce enhanced direct memory access functionality
US11734115B2 (en) * 2020-12-28 2023-08-22 Alibaba Group Holding Limited Method and system for facilitating write latency reduction in a queue depth of one scenario
US11656982B2 (en) * 2021-01-15 2023-05-23 Nutanix, Inc. Just-in-time virtual per-VM swap space
US11726699B2 (en) 2021-03-30 2023-08-15 Alibaba Singapore Holding Private Limited Method and system for facilitating multi-stream sequential read performance improvement with reduced read amplification
CN117222992A (zh) * 2021-06-01 2023-12-12 微芯片技术股份有限公司 用于旁路存储器读取请求检测的***和方法
CN114880251B (zh) * 2022-07-12 2023-08-29 荣耀终端有限公司 存储单元的访问方法、访问装置和终端设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1377481A (zh) * 1999-09-30 2002-10-30 M-***闪光盘先锋有限公司 用于可拆卸、有源、个人存储的设备、***及方法
US20100250836A1 (en) * 2009-03-25 2010-09-30 Anobit Technologies Ltd Use of Host System Resources by Memory Controller
US20120239853A1 (en) * 2008-06-25 2012-09-20 Stec, Inc. Solid state device with allocated flash cache
CN104583977A (zh) * 2012-08-23 2015-04-29 苹果公司 主机辅助的存储块的压缩

Family Cites Families (61)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513156B2 (en) 1997-06-30 2003-01-28 Sun Microsystems, Inc. Interpreting functions utilizing a hybrid of virtual and native machine instructions
US6148354A (en) 1999-04-05 2000-11-14 M-Systems Flash Disk Pioneers Ltd. Architecture for a universal serial bus-based PC flash disk
US7173852B2 (en) 2003-10-03 2007-02-06 Sandisk Corporation Corrected data storage and handling methods
US7480761B2 (en) 2005-01-10 2009-01-20 Microsoft Corporation System and methods for an overlay disk and cache using portable flash memory
US8645665B1 (en) 2012-12-14 2014-02-04 Intel Corporation Virtualizing physical memory in a virtual machine system utilizing multilevel translation table base registers to map guest virtual addresses to guest physical addresses then to host physical addresses
US8291295B2 (en) 2005-09-26 2012-10-16 Sandisk Il Ltd. NAND flash memory controller exporting a NAND interface
US20080046641A1 (en) 2006-08-21 2008-02-21 Sandisk Il Ltd. NAND flash memory controller exporting a logical sector-based interface
TWI387878B (zh) 2006-08-21 2013-03-01 Sandisk Il Ltd 輸出以邏輯區段為基礎的介面之非及快閃記憶體控制器
US8151060B2 (en) * 2006-11-28 2012-04-03 Hitachi, Ltd. Semiconductor memory system having a snapshot function
KR100881597B1 (ko) * 2007-02-02 2009-02-03 지인정보기술 주식회사 읽기 요청 처리 시스템 및 방법
US8479194B2 (en) 2007-04-25 2013-07-02 Microsoft Corporation Virtual machine migration
US8566502B2 (en) 2008-05-29 2013-10-22 Vmware, Inc. Offloading storage operations to storage hardware using a switch
US8341459B2 (en) * 2007-08-01 2012-12-25 Brocade Communications Systems, Inc. Data migration without interrupting host access and with data lock for write access requests such that held write access requests do not expire
US8055865B2 (en) * 2007-08-06 2011-11-08 International Business Machines Corporation Managing write requests to data sets in a primary volume subject to being copied to a secondary volume
US8671256B2 (en) 2007-08-27 2014-03-11 International Business Machines Corporation Migrating contents of a memory on a virtual machine
US8191063B2 (en) 2007-09-30 2012-05-29 Symantex Corporation Method for migrating a plurality of virtual machines by associating files and state information with a single logical container
US7831761B2 (en) * 2007-11-07 2010-11-09 Vmware, Inc. Multiple multipathing software modules on a computer system
US20130086311A1 (en) 2007-12-10 2013-04-04 Ming Huang METHOD OF DIRECT CONNECTING AHCI OR NVMe BASED SSD SYSTEM TO COMPUTER SYSTEM MEMORY BUS
US7991921B2 (en) * 2008-03-11 2011-08-02 Freescale Semiconductor, Inc. System and method for reducing power consumption of memory in an I/O controller
JP2009282678A (ja) * 2008-05-21 2009-12-03 Hitachi Ltd フラッシュメモリモジュール及びストレージシステム
US7944946B2 (en) 2008-06-09 2011-05-17 Fortinet, Inc. Virtual memory protocol segmentation offloading
US8321652B2 (en) 2008-08-01 2012-11-27 Infineon Technologies Ag Process and method for logical-to-physical address mapping using a volatile memory device in solid state disks
US8275971B2 (en) 2008-08-27 2012-09-25 International Business Machines Corporation Method and apparatus for managing software controlled cache of translating the physical memory access of a virtual machine between different levels of translation entities
JP4762289B2 (ja) * 2008-10-01 2011-08-31 株式会社日立製作所 特定パターンデータが格納される仮想ボリュームへの記憶領域の割り当てを制御するストレージシステム
JP5166211B2 (ja) * 2008-10-30 2013-03-21 株式会社日立製作所 不揮発性メモリを主記憶に用いた装置
US8452934B2 (en) 2008-12-16 2013-05-28 Sandisk Technologies Inc. Controlled data access to non-volatile memory
US9384062B2 (en) * 2008-12-27 2016-07-05 Vmware, Inc. Artificial neural network for balancing workload by migrating computing tasks across hosts
US8412880B2 (en) 2009-01-08 2013-04-02 Micron Technology, Inc. Memory system controller to manage wear leveling across a plurality of storage nodes
US8738872B2 (en) 2009-04-03 2014-05-27 Peter Chi-Hsiung Liu Methods for migrating data in a server that remains substantially available for use during such migration
US8090911B2 (en) * 2009-04-16 2012-01-03 International Business Machines Corporation Selecting a target number of pages for allocation to a partition
US8688894B2 (en) * 2009-09-03 2014-04-01 Pioneer Chip Technology Ltd. Page based management of flash storage
US8301860B2 (en) * 2009-10-16 2012-10-30 International Business Machines Corporation Identifying dynamically changing virtual storage devices
US9389895B2 (en) 2009-12-17 2016-07-12 Microsoft Technology Licensing, Llc Virtual storage target offload techniques
US8615621B2 (en) 2009-12-24 2013-12-24 St-Ericsson Sa Memory management
US8751738B2 (en) * 2010-02-08 2014-06-10 Microsoft Corporation Background migration of virtual storage
JP5612514B2 (ja) * 2010-03-24 2014-10-22 パナソニック株式会社 不揮発性メモリコントローラ及び不揮発性記憶装置
US8463825B1 (en) 2010-04-27 2013-06-11 Tintri Inc. Hybrid file system for virtual machine storage
US8683148B2 (en) 2010-06-30 2014-03-25 Sandisk Il Ltd. Status indication when a maintenance operation is to be performed at a memory device
US8671238B2 (en) 2010-07-13 2014-03-11 Vmware, Inc. Robust live migration using shared filesystem
US8588228B1 (en) 2010-08-16 2013-11-19 Pmc-Sierra Us, Inc. Nonvolatile memory controller with host controller interface for retrieving and dispatching nonvolatile memory commands in a distributed manner
US8499114B1 (en) 2010-09-30 2013-07-30 Amazon Technologies, Inc. Virtual machine memory page sharing system
US8656388B2 (en) 2010-09-30 2014-02-18 Avaya Inc. Method and apparatus for efficient memory replication for high availability (HA) protection of a virtual machine (VM)
CN102073462B (zh) * 2010-11-29 2013-04-17 华为技术有限公司 虚拟存储迁移方法、***和虚拟机监控器
JP5581256B2 (ja) * 2011-03-28 2014-08-27 株式会社東芝 メモリシステム、コントローラ、およびメモリシステムの制御方法
US9003149B2 (en) * 2011-05-26 2015-04-07 International Business Machines Corporation Transparent file system migration to a new physical location
US8490092B2 (en) 2011-07-06 2013-07-16 Microsoft Corporation Combined live migration and storage migration using file shares and mirroring
US9223502B2 (en) * 2011-08-01 2015-12-29 Infinidat Ltd. Method of migrating stored data and system thereof
US8856191B2 (en) * 2011-08-01 2014-10-07 Infinidat Ltd. Method of migrating stored data and system thereof
JP5720483B2 (ja) * 2011-08-11 2015-05-20 富士通株式会社 移行プログラム、移行装置、および移行方法
US8788788B2 (en) 2011-08-11 2014-07-22 Pure Storage, Inc. Logical sector mapping in a flash storage array
CN104040515B (zh) 2011-09-30 2018-05-11 英特尔公司 在逻辑驱动器模型下呈现直接存取的存储设备
CN103502993A (zh) * 2012-02-22 2014-01-08 松下电器产业株式会社 虚拟计算机***、保密信息保护方法以及保密信息保护程序
US8554963B1 (en) 2012-03-23 2013-10-08 DSSD, Inc. Storage system with multicast DMA and unified address space
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9122401B2 (en) * 2012-08-23 2015-09-01 Apple Inc. Efficient enforcement of command execution order in solid state drives
TWI492051B (zh) 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
US9268682B2 (en) 2012-10-05 2016-02-23 Skyera, Llc Methods, devices and systems for physical-to-logical mapping in solid state drives
US9098402B2 (en) * 2012-12-21 2015-08-04 Intel Corporation Techniques to configure a solid state drive to operate in a storage mode or a memory mode
US9652376B2 (en) * 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
JP2014157391A (ja) * 2013-02-14 2014-08-28 Sony Corp 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US9772907B2 (en) * 2013-09-13 2017-09-26 Vmware, Inc. Incremental backups using retired snapshots

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1377481A (zh) * 1999-09-30 2002-10-30 M-***闪光盘先锋有限公司 用于可拆卸、有源、个人存储的设备、***及方法
US20120239853A1 (en) * 2008-06-25 2012-09-20 Stec, Inc. Solid state device with allocated flash cache
US20100250836A1 (en) * 2009-03-25 2010-09-30 Anobit Technologies Ltd Use of Host System Resources by Memory Controller
CN104583977A (zh) * 2012-08-23 2015-04-29 苹果公司 主机辅助的存储块的压缩

Cited By (90)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108804342B (zh) * 2017-04-28 2023-11-03 Emc知识产权控股有限公司 对永久性存储装置写入和读取数据的方法和***
CN108804342A (zh) * 2017-04-28 2018-11-13 Emc知识产权控股有限公司 对永久性存储装置写入和读取数据的方法和***
CN108959981A (zh) * 2017-05-19 2018-12-07 三星电子株式会社 数据存储装置以及数据存储和保存***
CN108983939B (zh) * 2017-05-31 2021-09-03 西部数据技术公司 使用停止命令进行电源故障处理
CN108983939A (zh) * 2017-05-31 2018-12-11 西部数据技术公司 使用停止命令进行电源故障处理
US11068366B2 (en) 2017-05-31 2021-07-20 Western Digital Technologies, Inc. Power fail handling using stop commands
CN109086193A (zh) * 2017-06-13 2018-12-25 阿里巴巴集团控股有限公司 监控方法、装置及***
CN109101190B (zh) * 2017-06-20 2023-08-15 三星电子株式会社 利用基础数据识别的对象去重
CN109101190A (zh) * 2017-06-20 2018-12-28 三星电子株式会社 利用基础数据识别的对象去重
CN109213423B (zh) * 2017-06-30 2024-01-26 北京忆恒创源科技股份有限公司 基于地址屏障无锁处理并发io命令
CN109213423A (zh) * 2017-06-30 2019-01-15 北京忆恒创源科技有限公司 基于地址屏障无锁处理并发io命令
CN109213691B (zh) * 2017-06-30 2023-09-01 伊姆西Ip控股有限责任公司 用于缓存管理的方法和设备
CN109213691A (zh) * 2017-06-30 2019-01-15 伊姆西Ip控股有限责任公司 用于缓存管理的方法和设备
CN109213438A (zh) * 2017-07-03 2019-01-15 三星电子株式会社 预先管理待分配给写入数据的物理地址的存储装置
CN109213438B (zh) * 2017-07-03 2024-06-04 三星电子株式会社 预先管理待分配给写入数据的物理地址的存储装置
CN107402722B (zh) * 2017-07-04 2020-09-01 杭州宏杉科技股份有限公司 一种数据迁移方法及存储设备
CN107402722A (zh) * 2017-07-04 2017-11-28 杭州宏杉科技股份有限公司 一种数据迁移方法及存储设备
CN109213705A (zh) * 2017-07-07 2019-01-15 爱思开海力士有限公司 存储装置及其操作方法
US11340790B2 (en) 2017-07-07 2022-05-24 SK Hynix Inc. Storage device for migrating data based on random read workload and operating method of the same
CN109388974A (zh) * 2017-08-14 2019-02-26 西部数据技术公司 具有安全读取的非易失性存储器装置
CN110770690A (zh) * 2017-09-06 2020-02-07 西部数据技术公司 用于切换固件的***和方法
CN110770690B (zh) * 2017-09-06 2024-01-23 西部数据技术公司 用于切换固件的***和方法
CN109521950B (zh) * 2017-09-20 2023-05-26 三星电子株式会社 存储设备、其操作方法及包括存储设备的存储***
CN109522250B (zh) * 2017-09-20 2023-03-21 三星电子株式会社 根据多播通信协议与主机通信的存储设备和主机通信方法
CN109522250A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 根据多播通信协议与主机通信的存储设备和主机通信方法
CN109521950A (zh) * 2017-09-20 2019-03-26 三星电子株式会社 存储设备、其操作方法及包括存储设备的存储***
CN109582599A (zh) * 2017-09-29 2019-04-05 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
CN109582599B (zh) * 2017-09-29 2023-12-22 上海宝存信息科技有限公司 数据储存装置以及非挥发式存储器操作方法
CN109656843A (zh) * 2017-10-11 2019-04-19 三星电子株式会社 数据存储装置及桥接装置
US12001374B2 (en) 2017-10-11 2024-06-04 Samsung Electronics Co., Ltd. System and method for providing in-storage acceleration (ISA) in data storage devices
CN109656467B (zh) * 2017-10-11 2021-12-03 阿里巴巴集团控股有限公司 云网络的数据传输***、数据交互方法、装置及电子设备
CN109656467A (zh) * 2017-10-11 2019-04-19 阿里巴巴集团控股有限公司 云网络的数据传输***、数据交互方法、装置及电子设备
CN109726139A (zh) * 2017-10-27 2019-05-07 东芝存储器株式会社 存储器***及控制方法
CN109726139B (zh) * 2017-10-27 2023-08-18 铠侠股份有限公司 存储器***及控制方法
CN111279327B (zh) * 2017-10-31 2023-11-03 高通股份有限公司 用于非易失性存储器的写入信用管理
CN111279327A (zh) * 2017-10-31 2020-06-12 高通股份有限公司 用于非易失性存储器的写入信用管理
CN108345431A (zh) * 2017-12-29 2018-07-31 杭州华为数字技术有限公司 一种数据读取的方法及装置
CN111886573A (zh) * 2018-01-12 2020-11-03 格里森技术有限责任公司 存储资源的安全共享
CN110275757A (zh) * 2018-03-16 2019-09-24 北京忆恒创源科技有限公司 利用***抽象层提供多协议存储设备
CN111868678B (zh) * 2018-03-21 2024-05-14 美光科技公司 混合存储器***
CN111868678A (zh) * 2018-03-21 2020-10-30 美光科技公司 混合存储器***
CN110389909A (zh) * 2018-04-16 2019-10-29 三星电子株式会社 使用深度神经网络优化固态驱动器的性能的***和方法
CN112204514A (zh) * 2018-05-30 2021-01-08 苹果公司 用于保留非易失性存储器的预期寿命的技术
CN111902804A (zh) * 2018-06-25 2020-11-06 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的***和方法
CN111902804B (zh) * 2018-06-25 2024-03-01 阿里巴巴集团控股有限公司 用于管理存储设备的资源并量化i/o请求成本的***和方法
CN112313634A (zh) * 2018-06-29 2021-02-02 美光科技公司 快闪存储器的主机侧缓存安全
CN110888597A (zh) * 2018-09-07 2020-03-17 三星电子株式会社 存储设备、存储***以及操作存储设备的方法
CN112930520A (zh) * 2018-09-13 2021-06-08 铠侠股份有限公司 用于使用以太网驱动器及以太网络开放通道驱动器存储数据的***及方法
CN112930520B (zh) * 2018-09-13 2023-08-15 铠侠股份有限公司 用于使用以太网驱动器及以太网络开放通道驱动器存储数据的***及方法
CN110941572A (zh) * 2018-09-25 2020-03-31 通用电气航空***有限责任公司 用于灵活写入受监管***的内部数据的***和方法
CN110941572B (zh) * 2018-09-25 2023-07-21 通用电气航空***有限责任公司 用于灵活写入受监管***的内部数据的***和方法
CN112840325A (zh) * 2018-10-30 2021-05-25 美光科技公司 存储装置上的名称空间中的错误检查
US11232028B2 (en) 2018-10-30 2022-01-25 Micron Technology, Inc. Error-checking in namespaces on storage devices
CN111124265B (zh) * 2018-10-31 2023-11-10 伊姆西Ip控股有限责任公司 数据访问方法、设备和计算机程序产品
CN111124265A (zh) * 2018-10-31 2020-05-08 伊姆西Ip控股有限责任公司 数据访问方法、设备和计算机程序产品
US11479046B2 (en) 2018-12-03 2022-10-25 Hewlett-Packard Development Company, L.P. Logic circuitry for sensor data communications
CN113165395A (zh) * 2018-12-03 2021-07-23 惠普发展公司,有限责任合伙企业 逻辑电路***
CN113168487A (zh) * 2018-12-03 2021-07-23 惠普发展公司,有限责任合伙企业 逻辑电路***封装
CN113711189B (zh) * 2019-02-13 2023-12-26 铠侠股份有限公司 用于管理固态驱动器上的降低电力故障能量需求的***及方法
CN113711189A (zh) * 2019-02-13 2021-11-26 铠侠股份有限公司 用于管理固态驱动器上的降低电力故障能量需求的***及方法
US11803222B2 (en) 2019-02-13 2023-10-31 Kioxia Corporation Systems and methods for managing reduced power failure energy requirements on a solid state drive
CN113168399A (zh) * 2019-03-14 2021-07-23 西部数据技术公司 可执行存储器单元
CN113168399B (zh) * 2019-03-14 2023-09-19 西部数据技术公司 可执行存储器单元
CN111722791A (zh) * 2019-03-22 2020-09-29 株式会社日立制作所 信息处理***、存储***和数据传输方法
CN111722791B (zh) * 2019-03-22 2024-02-27 株式会社日立制作所 信息处理***、存储***和数据传输方法
CN113678113A (zh) * 2019-03-29 2021-11-19 美光科技公司 计算存储装置与基于网络化的***
CN111984553A (zh) * 2019-05-21 2020-11-24 美光科技公司 主机装置物理地址编码
CN111984553B (zh) * 2019-05-21 2024-05-14 美光科技公司 主机装置物理地址编码
CN112130756A (zh) * 2019-06-25 2020-12-25 美光科技公司 经由多个逻辑地址空间存取的聚合和虚拟化固态驱动器
CN110287152A (zh) * 2019-06-27 2019-09-27 深圳市腾讯计算机***有限公司 一种数据管理的方法以及相关装置
CN112346653B (zh) * 2019-08-06 2024-02-27 株式会社日立制作所 驱动器箱、存储***和数据传送方法
CN112346653A (zh) * 2019-08-06 2021-02-09 株式会社日立制作所 驱动器箱、存储***和数据传送方法
CN114258534A (zh) * 2019-08-22 2022-03-29 美光科技公司 阶层式存储器***
CN114258534B (zh) * 2019-08-22 2022-11-18 美光科技公司 阶层式存储器***
US11688477B2 (en) 2019-08-28 2023-06-27 Micron Technology, Inc. Intra-code word wear leveling techniques
CN114424284A (zh) * 2019-08-28 2022-04-29 美光科技公司 码字内耗损均衡技术
CN112732599A (zh) * 2019-10-14 2021-04-30 美光科技公司 具有虚拟化总线和内部逻辑以执行机器学习操作的存储器子***
CN112749111A (zh) * 2019-10-31 2021-05-04 华为技术有限公司 访问数据的方法、计算设备和计算机***
CN112947852A (zh) * 2019-11-25 2021-06-11 美光科技公司 受存储器子***限制的存储器功能
US11669265B2 (en) 2019-11-25 2023-06-06 Micron Technology, Inc. Memory sub-system-bounded memory function
CN113010449A (zh) * 2019-12-19 2021-06-22 美光科技公司 存储器子***中命令的有效处理
CN113010449B (zh) * 2019-12-19 2024-03-29 美光科技公司 用于存储器子***中命令的有效处理的方法、***和非暂时性计算机可读存储媒体
CN113126895A (zh) * 2019-12-30 2021-07-16 爱思开海力士有限公司 存储装置及其操作方法
CN113204311A (zh) * 2020-01-31 2021-08-03 西部数据技术公司 NVMe SGL位存储桶传输
CN113448893A (zh) * 2020-03-10 2021-09-28 联发科技股份有限公司 用于控制多个客户端访问单个存储装置的方法及装置
CN113553099A (zh) * 2020-04-24 2021-10-26 美光科技公司 主机常驻转换层写入命令
CN111913900A (zh) * 2020-07-21 2020-11-10 大唐微电子技术有限公司 一种主机与外接设备通信的方法、存储介质和电子装置
CN111913900B (zh) * 2020-07-21 2024-05-31 大唐微电子技术有限公司 一种主机与外接设备通信的方法、存储介质和电子装置
CN114077402A (zh) * 2020-08-19 2022-02-22 美光科技公司 写入类型指示命令
WO2022252082A1 (zh) * 2021-05-31 2022-12-08 华为技术有限公司 一种数据处理方法、设备及***

Also Published As

Publication number Publication date
US11797434B2 (en) 2023-10-24
EP3955118A3 (en) 2022-05-18
EP3955119A3 (en) 2022-05-18
US20150370700A1 (en) 2015-12-24
US20180285257A1 (en) 2018-10-04
EP3158457B1 (en) 2020-01-08
US9959203B2 (en) 2018-05-01
US11042478B2 (en) 2021-06-22
CN106575271B (zh) 2020-04-10
EP3637269B1 (en) 2021-11-03
DK3637269T3 (da) 2022-01-03
CN111522756A (zh) 2020-08-11
EP3955118A2 (en) 2022-02-16
US20210271596A1 (en) 2021-09-02
EP3955119A2 (en) 2022-02-16
DK3158457T3 (da) 2020-03-23
US20240061770A1 (en) 2024-02-22
EP3637269A1 (en) 2020-04-15
CN111522756B (zh) 2023-08-15
WO2015200096A1 (en) 2015-12-30
EP3158457A1 (en) 2017-04-26

Similar Documents

Publication Publication Date Title
CN106575271A (zh) 管理存储设备
CN104636181B (zh) 用于迁移虚拟机的方法和***
KR101419004B1 (ko) 비휘발성 메모리 시스템
CN107209683B (zh) 备份映像恢复
EP3382557B1 (en) Method and apparatus for persistently caching storage data in a page cache
US10248322B2 (en) Memory system
DE112013004250T5 (de) Systeme, Verfahren und Schnittstellen für adaptive Persistenz
CN102810068A (zh) 存储装置、存储***和使存储装置虚拟化的方法
CN107615255A (zh) 利用持久存储器的计算装置和方法
US20170177225A1 (en) Mid-level controllers for performing flash management on solid state drives
CN104937564A (zh) 组表格的数据冲洗
US7650476B2 (en) System, method and computer program product for generating a consistent point in time copy of data
CN111651269A (zh) 实现设备虚拟化的方法、装置及计算机可读存储介质
US11385947B2 (en) Migrating logical volumes from a thick provisioned layout to a thin provisioned layout
US10241818B2 (en) In-memory virtual desktop system
JP2014038551A (ja) データ記憶装置、データ記憶装置の制御方法、及びデータ記憶装置の制御プログラム
US11609854B1 (en) Utilizing checkpoints for resiliency of metadata in storage systems
CN107209738A (zh) 储存存储器直接访问
CN101295228A (zh) 虚拟磁带服务器及导出源卷池中的至少一个逻辑卷的方法
US11221985B2 (en) Metadata space efficient snapshot operation in page storage
CN115390876A (zh) 虚拟机qemu程序热升级方法、装置和设备

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 1232638

Country of ref document: HK

CB02 Change of applicant information
CB02 Change of applicant information

Address after: American California

Applicant after: Google limited liability company

Address before: American California

Applicant before: Google Inc.

GR01 Patent grant
GR01 Patent grant