CN106557428B - 数据存储设备的映射系统选择 - Google Patents
数据存储设备的映射系统选择 Download PDFInfo
- Publication number
- CN106557428B CN106557428B CN201610860572.6A CN201610860572A CN106557428B CN 106557428 B CN106557428 B CN 106557428B CN 201610860572 A CN201610860572 A CN 201610860572A CN 106557428 B CN106557428 B CN 106557428B
- Authority
- CN
- China
- Prior art keywords
- data
- mapping
- mapping system
- memory
- dsd
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- 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
- G06F12/0253—Garbage collection, i.e. reclamation of unreferenced memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
-
- 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/1004—Compatibility, e.g. with legacy hardware
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1016—Performance improvement
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1041—Resource optimization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/20—Employing a main memory using a specific memory technology
- G06F2212/202—Non-volatile memory
Abstract
本申请涉及数据存储设备的映射系统选择。维持多个映射系统以将存储在数据存储设备(DSD)中的数据的逻辑地址映射至存储数据的所述DSD的至少一个存储器中的位置的物理地址。从主机接收数据以存储在至少一个存储器中,并且将接收到的数据存储到至少一个存储器中的位置中。基于主机针对接收到的数据提供的信息或基于控制器针对接收到的数据确定的信息,从多个映射系统中选择映射系统以映射接收到的数据。
Description
背景技术
数据存储设备(DSD)经常用于将数据记录在存储介质(诸如旋转磁盘或固态存储器)上或者从存储介质复制数据。主机可以使用DSD来使用下发给DSD的写命令或读命令存储数据或者从DSD检索数据。写命令和读命令通常包括数据的逻辑地址。DSD将经常维持映射系统,该映射系统将由主机使用的逻辑地址映射至指示数据被存储或待存储的位置的物理地址。
映射系统的大小通常随着能够存储在DSD中的数据量而增加。与维持映射系统相关联的开销量也可能增加,这能够通过消耗更多的处理或存储器资源来影响DSD的性能。例如,当在DSD可能需要恢复映射系统的启动过程期间时,该增加的开销可能变得明显。此外,一些类型的存储介质(诸如闪存或叠瓦式磁记录(SMR))可以使用间接地址,这能够进一步增加维持映射系统所需的开销量。
附图说明
当结合附图考虑时,本披露的实施例的特征和优势从下面阐述的详细描述将变得更加明显。附图和相关联的描述被提供用来展示本披露的实施例并且不限制所要求保护的范围。
图1是描绘根据一个实施例的数据存储设备(DSD)的框图。
图2描绘了根据一个实施例的用于在启动过程期间或之后不久使用的数据的映射系统的一个示例。
图3描绘了根据一个实施例的具有更大粒度的映射系统的一个示例。
图4是根据一个实施例的用来选择映射系统的主机信息的一个示例。
图5是根据一个实施例的用来选择映射系统的学习信息的一个示例。
图6是根据一个实施例的映射系统选择过程的流程图。
图7是根据一个实施例的映射系统选择子过程的流程图。
图8是根据一个实施例的映射系统加载过程的流程图。
图9是根据一个实施例的在垃圾收集期间执行的重映射过程的流程图。
图10A是根据一个实施例的地址转换过程的流程图的第一部分。
图10B是图10A的流程图的第二部分。
具体实施方式
在以下具体实施方式中,阐述了许多具体细节以提供对本披露的全面理解。然而,对本领域的普通技术人员将明显的是,可以在不具有这些特定细节中的一些的情况下实践所披露的各个实施例。在其他情况下,尚未详细示出熟知的结构和技术,以避免不必要地模糊各个实施例。
系统概要
图1示出根据一个实施例的与主机101通信的数据存储设备(DSD)106的一个示例。主机101和DSD 106可以形成系统,诸如计算机系统(例如,服务器、台式计算机、移动/膝上型计算机、平板计算机、智能手机等)或其他电子设备(诸如数字视频记录仪(DVR))。图1的部件可以或可以不物理地共同定位。在此方面,主机101可以位于远离DSD 106的位置。本领域的普通技术人员还将理解,其他实施例能够包括多于或少于图1示出的那些元件的元件,并且所披露的过程能够在其他环境中实现。例如,其他实施例能够包括与DSD 106通信的不同数量的主机。
如图1的示例实施例所示,DSD 106包括用于跨电力循环存储数据的非易失性存储器(NVM)128。NVM 128能够包括非易失性存储介质,诸如旋转磁盘、磁带或非易失性的固态存储器)。
虽然此处的描述通常指的是固态存储器,但应该理解的是,固态存储器可以包括各种类型的存储器设备中的一种或更多种,诸如闪速集成电路、硫系RAM(C-RAM)、相变存储器(PC-RAM或PRAM)、可编程金属化单元RAM(PMC-RAM或PMCm)、双相联合存储器(OUM)、电阻式RAM(RRAM)、NAND存储器(例如,单层单元(SLC)存储器、多层单元(MLC)存储器或其任何组合)、NOR存储器、EEPROM、铁电存储器(FeRAM)、磁阻式RAM(MRAM)、其他离散NVM芯片或其任何组合。
DSD 106还包括快速存取存储器140,其通常允许比从NVM 128更快地存取数据。例如,存储器140能够包括易失性存储器(诸如动态随机存取存储器(DRAM))或NVM(诸如固态存储器(诸如MRAM))。
如图1所示,DSD 106包括控制器120,该控制器120包括电路(诸如用于执行指令的一个或更多个处理器)并且能够包括微控制器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、硬接线逻辑、模拟电路和/或其组合。在一种实现方式中,控制器120能够包括片上系统(SoC)。
主机接口126被配置成用于将DSD 106与主机101接口,并且可以使用例如以太网或WiFi、或总线标准(诸如串行高级技术附件(SATA)、PCI总线接口(PCIe)、小型计算机系统接口(SCSI)或串行附接的SCSI(SAS))进行接口。如本领域的普通技术人员将理解的,主机接口126能够作为控制器120的部分被包括。
在操作中,主机101通过发送指定与数据相关联的一个或更多个逻辑地址(例如,逻辑块地址(LBA))的写命令到DSD 106以将数据存储在DSD 106中。主机接口126接收写命令,并且控制器120确定用于存储数据的DSD 106的存储器(例如,NVM 128或存储器140)中的位置。控制器120更新映射系统(例如,映射系统12、14、16或18)以便将与数据相关联的逻辑地址映射至存储数据的存储器位置的物理地址。
主机101通过发送指定与从DSD 106中待检索的数据相关联的一个或更多个逻辑地址的读命令来从DSD 106中检索数据。主机接口126接收读命令,并且控制器120使用映射系统来将读命令的逻辑地址转换为指示数据位置的物理地址。然后,控制器120从由物理地址指定的存储器位置中读取所请求的数据并经由接口126将读取的数据返回给主机101。
如以下更加详细讨论的,本披露允许更好的适应数据、存储数据的存储器、和/或数据的使用的多个映射系统。由主机101提供的信息(例如,主机信息20)和/或由控制器120确定的信息(例如,学习信息22)被用来选择可以更好的适合数据、如何使用数据、和/或数据存储在何处的特定映射系统。这通常可以允许对提高DSD 106访问数据的性能或减少需要映射数据的资源量的映射系统的选择。
如图1所示,NVM 128存储用户数据24、主机信息20、学习信息22以及映射系统16和映射系统18。用户数据24包括已经从主机101接收以存储到DSD 106中的数据。尽管用户数据24仅在NVM 128中示出,但在其他实施例中NVM 128和存储器140均能够存储用户数据。
主机信息20包括由主机101提供的关于存储在DSD 106中的数据的信息,该信息能够被控制器120用来选择映射系统。主机信息20的一些示例能够包括数据的优先级、主机101的启动过程期间是否使用该数据的指示或存取该数据的期望频率的指示。以下参照图4的示例更详细地讨论主机信息20。
学习信息22包括由控制器120学习或确定并能够被控制器120用来选择映射系统的信息。学习信息22的一些示例能够包括数据何时被最后存取、数据已经被存取的频率、或者在主机101或DSD 106的启动过程期间使用该数据还是在主机101或DSD 106的启动过程不久以后使用该数据。以下参照图5更详细地讨论学习信息22。
通过在DSD 106处收集主机信息20或学习信息22,控制器120可以使用此信息来选择更好的适合数据、存储数据的存储器、和/或如何访问数据的映射系统。
在一种实现方式中,映射系统16和映射系统18提供映射逻辑地址至物理地址的两种不同粒度以便更好地适合存储数据的存储器的最小单元大小。如以下参照图3中的映射系统18的示例更详细讨论的,映射系统18能够提供更低的粒度从而更大数量的逻辑地址在映射至一个或更多个物理地址时被分组在一起。
控制器120还可以为,例如通常由来自主机101的单个读命令存取的数据,选择更低粒度的映射系统。通过使用具有更低粒度的映射系统,减少存储映射系统所需的空间量并且允许更少的映射系统参量来存取数据通常是可能的。当更新映射系统以考虑数据变化时,更低的粒度还能够允许更低的开销。
存储器140存储固件10、映射系统12、映射系统14以及映射系统16的部分。此外,存储器140还可以临时存储从NVM 128读取的数据、待存储在NVM 128中的数据、从固件10加载的以由控制器120执行的指令和/或执行固件10时使用的数据。在此方面,固件10能够包括用于控制DSD 106的操作的计算机可执行指令。
在一种实现方式中,映射系统12为在启动过程期间或在启动过程之后不久存取的数据提供映射系统。以下参照图2讨论用于在启动期间或启动之后不久存取的数据的映射系统12的一个示例。
映射系统14能够包括具有最快查询时间的映射系统,其能够例如用于映射高优先级数据或频繁存取的数据。查询时间能够包括控制器120将映射系统14中的逻辑地址转换为物理地址所花费的平均时间量。映射系统14的更快查询时间可以归因于以下因素:例如,存储在存储器140中(该存储器通常能够比NVM 128更快地被存取)、和/或者执行映射操作(如转换)所需的低数量的存储器参量。例如,映射系统16在找到具体逻辑地址之前可以使用需要数据结构的若干参量的b树(二叉树)数据结构。另一方面,映射系统14可以使用哈希函数来计算具体逻辑地址的索引以允许仅一个存储器参量转换逻辑地址。
存储在存储器140中的映射系统的部分16能够提供冗余和/或对某些数据的映射的更快存取。映射系统16的这些部分能够用于映射数据,该数据可以具有例如比由映射系统16映射的其他数据更高的优先级或者该数据比由映射系统16映射的其他数据更频繁地存取或较近地存取。在其他实施例中,映射系统18的部分也可以存储在存储器140中。
图2示出了根据一个实施例的映射系统12的一个示例,在该实施例中,映射系统12用于映射在启动过程期间或之后不久存取的数据。如图2所示,映射系统12包括存储在DSD106的存储器(例如,NVM 128或存储器140)中的数据的条目。每个条目包括数据的LBA以及指示数据存储的位置的对应物理块地址。
由于用于存储映射系统12的存储介质和/或映射系统12的大小的原因,映射系统12可以比其他映射系统更早可用。在存储器140为易失性DRAM的实现方式中,更小大小的映射系统12能够允许映射系统12比其他映射系统更快地从非易失性位置加载到存储器140中。
在一个示例中,由于在启动过程期间或之后不久存取的较小数据量,因此映射系统12可以被限制在预定大小或者可以比其他映射系统更小。在一些实现方式中,映射系统12能够仅被限制到在当主机101开启其操作系统时的主机101启动过程期间由主机101请求的逻辑地址。在其他实现方式中,映射系统12还可以包括在启动过程后的预定时间段内请求或写入的数据的条目或逻辑地址。针对这种数据使用映射系统12能够减少包括主机101和DSD 106的系统的启动时间或感知(perceived)启动时间。
在一些实现方式中,主机101可以向DSD 106提供在启动过程期间被存取的或者指示用于在启动过程期间存取的数据的逻辑地址范围的逻辑地址。控制器120可以将此信息用作主机信息20的部分以识别在启动期间存取的数据的逻辑地址。在其他实现方式中,控制器120可以追踪在一个或更多个启动过程期间由主机101请求或写入的逻辑地址。此信息可以由控制器120存储在学习信息22中。
图3描绘了根据实施例的映射系统18的示例,在该实施例中,映射系统18提供比其他映射系统更低的逻辑地址粒度。如以上所指出的,具有更低粒度的映射系统可以提供提高的访问数据的性能或更低的维持映射系统的空间量和开销量。如图3所示,映射系统18的每一行或每一条目覆盖与起始物理块地址(PBA)对应的LBA的范围或PBA的范围。
在一些实现方式中,映射系统18能够用于映射存储在存储器中的数据,该存储器具有最小单元大小以用于存储比与主机101的单个逻辑地址相关联的数据的大小更大的数据。例如,NVM 128可以包括具有能够存储4096字节数据的扇区的旋转磁盘,而主机101可以使用512字节的LBA。然后,通过使用更低粒度的映射系统18,能够映射存储在更大扇区中的数据。在另一示例中,NVM 128能够包括具有4096字节数据的页面大小的闪存,而主机101可以使用512字节的LBA。
控制器120可以使用主机信息20和/或学习信息22来确定应该利用低粒度的映射系统18映射哪些数据。在一个示例中,通常在等于或大于存储器的最小单元大小的块中被连续存取的数据能够由映射系统18映射,因为更大块覆盖针对映射系统18中的给定条目提供的LBA的更大范围。
图4是根据一个实施例的用来选择映射系统的主机信息20的一个示例。如图4的示例所示,主机信息20能够通过其LBA引用该数据并且包括数据的优先级、是否在启动期间使用数据的指示以及数据存取的期望频率。其他实施例可以在主机信息20中包括不同信息。
例如通过使用针对特定类别的数据的特定范围的LBA或通过指示信息的值,主机101可以提供主机信息20。例如,主机101可以使用数据的特定范围的LBA,该数据在启动过程期间使用,具有更高的优先级、或者期望被更频繁地访问。
主机101可以替代地使用指示(如值)来指示更高优先级、启动过程期间数据的存取或期望的数据存取频率。当存储数据时该指示可以作为写命令的部分被发送,或者可以作为单独的销售商特定命令(VSC)的部分被发送。然后,由主机101提供的信息能够用于更新主机信息20并选择映射系统以用于将数据的逻辑地址(例如,LBA)映射至物理地址(例如,PBA)。
图5是根据一个实施例的用来选择映射系统的学习信息22的一个示例。如图5的示例所示,学习信息22能够通过其LBA引用数据并包括存取数据的最后时间、到启动周期的时间接近、数据存取的学习频率以及是否在比预定大小大的块中连续存取数据。在数据已经在DSD中存储特定时间段后,学习信息22中的信息能够由控制器120确定并且在数据的信息发生变化时被更新。其他实施例可以在学习信息22中包括不同信息。
例如在确定是否应该利用不同的映射系统来重新映射特定数据时,可以使用最后存取数据的时间。在一个示例中,能够将在特定时间段内已经被存取的数据重新映射到不同映射系统以提供对数据的更快存取(如果再次存取数据)。在一些实现方式中,当确定是否利用不同映射系统重新映射数据时,控制器120可以考虑多个因素。例如,控制器120可以考虑已经存取数据的频率和自数据被最后存取以来的时间。
示例性映射系统过程
图6是根据一个实施例的映射系统选择过程的流程图。图6的过程能够由执行固件10的控制器120执行。
在框602中,维持多个映射系统,该多个映射系统将存储在DSD 106的至少一个存储器中的数据的逻辑地址映射至指示数据在至少一个存储器中的存储位置的物理地址。如以上讨论的,映射系统可以具有不同的特性(如不同的粒度、尺寸、访问方法、或查询时间)。
在框604中,控制器120从主机101接收数据以用于存储在DSD 106的至少一个存储器中。数据能够作为写命令的部分被接收,该写命令包括待存储的数据、数据的一个或更多个逻辑地址以及与能够被控制器120用作主机信息20的数据相关的可选信息。
在框606中,控制器120将接收到的数据存储到至少一个存储器的位置中。在图1的示例中,接收到的数据能够作为用户数据24存储在NVM 128中。控制器120还可以存储从主机101提供的作为主机信息20的任何附加信息。
在框608中,基于主机信息20和/或学习信息22,控制器120针对接收的数据,从多个映射系统中选择映射系统。在选择映射系统时,控制器120可以考虑一个或更多个因素,如数据的优先权、是否在启动过程期间或之后不久使用数据、数据存取的期望频率或数据的大小。附加地,在选择映射系统时这些因素可以具有不同的权重。
图7是根据一个实施例的映射系统选择子过程的流程图,该映射系统选择子过程能够由执行固件10的控制器120执行。图7的子过程能够作为以上讨论的图6的框608中的选择的部分或作为基于更新后的学习信息22或更新后的主机信息20重新映射数据的部分被执行。
在框702中,控制器120发起选择子过程,并且在框704中,控制器120确定在启动过程期间或启动过程之后不久是否将需要考虑用于重新映射的数据。能够通过使用主机信息20和/或学习信息22进行框704中的确定,该主机信息20和/或学习信息22指示在启动过程期间或自启动过程的预定时间段内将使用或已经使用该数据。在其他实施例中,框704中的确定可以仅考虑在启动过程期间是否需要该数据,这与启动过程之后不久不同。
如果在启动过程期间或之后不久需要该数据,则在框706中控制器120选择在启动过程期间具有最快可用性的映射系统来映射数据。如以上参照图2中的映射系统12的示例讨论的,在启动过程期间具有最快可用性的映射系统能够具有限定的大小或者可以被加载到存储器(例如,存储器140)中,该存储器可用于比其他存储器(例如,NVM 128)较早地的存取数据。
如果在启动过程期间或之后不久不需要该数据,则框708中的控制器120确定数据是否被频繁地访问、近期地访问、或具有高优先级。通过使用主机信息20和/或学习信息22可以作出框708中的判定。
如果确定数据符合框708的标准中的一个或更多个,则在框710中控制器120选择具有最快查询时间的映射系统。如以上参照映射系统14的示例讨论的,具有最快查询时间的映射系统能够存储在与DSD 106的其他存储器相比具有相对快速的存取或读取时间的存储器(例如,存储器140)中。具有最快查询时间的映射系统还可以具有数据结构或存取方法,该数据结构或存取方法允许逻辑地址到物理地址的更快转换。
如果确定数据不符合框708的标准中的的一个或多个标准,则框712中的控制器120确定是否将数据存储在大于阈值大小的部分中。该阈值大小可以对应于特定存储器的最小单元大小(如,闪存的页面大小或旋转磁盘的扇区大小)。
如果在框712中确定数据存储在大于阈值大小的部分中,则在框714中控制器120选择具有比其他映射系统低的逻辑地址粒度的映射系统。如以上参照图3中的映射系统18的示例讨论的,具有更低粒度的映射系统能够减小映射系统的大小并且减少维持映射系统所需的开销。
如果在框712中确定数据未存储在大于阈值大小的部分中,则在框716中控制器120选择具有更高粒度的映射系统(例如,映射系统16)。此映射系统还可以用作存储在较慢存取存储器(例如,NVM 128)中的默认映射系统以用于以下数据:不具有与该数据相关联的主机信息20或学习信息22。
当由控制器120确定或收集数据的信息时,可以将默认映射系统的部分加载到存储器140中以快速访问数据,该数据可以例如比存储在NVM 128中的其他数据更频繁地被访问或可以具有比存储在NVM 128中的其他数据更高的优先级。
通过选择更好适合数据、存储数据的存储器或将如何使用数据的映射系统,提高DSD 106的性能并减少存储映射信息所需的存储器量通常是可能的。其他实施例可以包括与图7示出的这些标准不同的标准或者可以包括少于图7中示出的所有标准。
图8是根据一个实施例的映射系统加载过程的流程图,该映射系统加载过程能够由执行固件10的控制器120执行,在该实施例中存储器140为易失性存储器,诸如DRAM。在图1的示例中,能够以具体顺序将映射系统12、映射系统14以及映射系统的部分16中的每一项加载到存储器140中以便在执行读和写命令时提高DSD 106的性能。尽管将映射系统加载到存储器140中的时间中的一些可能重叠,但是图8的示例实施例提供一种发起映射系统的加载以提高DSD 106的性能的顺序。
在框802中,在主机101或DSD 106的启动过程期间发起图8的过程。在一种实现方式中,当DSD 106接收到针对存储在DSD 106中的数据的初始读命令时,可以发起图8的过程,该初始读命令用来加载主机101的操作系统。在其他实现方式中,当DSD 106从主机101接收启动过程已经开始或结束的指示时,可以发起图8的过程。
在框804中,控制器120在主机101的启动过程期间或之后加载具有最快可用性或恢复时间的映射系统(例如,映射系统12)。这通常能够允许已经被该映射系统映射的数据可用于比被其他映射系统映射的数据在启动过程期间或之后较早地存取。
在框806中,控制器120加载具有最快查询时间的映射系统(例如,映射系统14)。这通常能够允许可能被频繁存取的数据比未被如此频繁的存取的以及被具有更慢查询时间的不同映射系统映射的其他数据更快地存取。
在框808中,控制器120加载存储在NVM 128中的第三映射系统(例如,映射系统16)的部分。第三映射系统的这些部分能够对应于比被映射系统16映射的其他数据更频繁存取的或者具有更高优先级的数据。
图9是根据一个实施例的在垃圾收集(GC)期间执行的重映射过程的流程图。图9的重映射过程能够由执行固件10的控制器120执行。
控制器120可以执行GC过程以便回收存储无效数据的存储器的部分,从而使得回收部分可以存储新数据。无效数据可以包括由于与逻辑地址相关联的数据被删除而可能被丢弃的数据或者针对不同存储器位置中的逻辑地址被写入的新数据。
在框902中,控制器120更新学习信息22或主机信息20。学习信息22的更新能够定期发生(当执行特定动作时、或在执行垃圾收集过程之前)。如以上讨论的,学习信息22能够包括关于数据的观测的度量,其能够随着时间由控制器120确定。当从主机101接收到新信息时,可以更新主机信息20。
在一个示例中,之前以相对高的频率存取的数据可能在更近的时间段内更少使用。然后,控制器120可以更新学习信息22以考虑数据的不频繁使用。在另一示例中,可以更新学习信息22以考虑在主机101的启动过程期间或之后不久不再存取的数据。学习信息22或主机信息20的这些变化能够用于将数据重映射到更合适的映射系统。
在框904中,在GC过程期间选择新的映射系统来映射之前由不同映射系统映射的数据。在选择新的映射系统时,更新后的学习信息22和/或更新后的主机信息20被评估以用于有效数据,该有效数据被留在被垃圾收集的存储器的一部分中。映射选择子过程(如图7的示例子过程)可以被用来确定是否新的映射系统应该用于有效数据。在一些情况下,可以由同一映射系统继续对有效数据中的一些或全部进行映射。
在框906中,控制器120利用在框904中选择的新映射系统来重新映射有效数据。能够利用更适合数据最近被使用或表征的方式的映射系统来重新映射重映射的有效数据。
在其他实施例中,利用不同映射系统对数据进行重映射可以作为定期维护活动的部分发生,该定期维修活动不是GC过程的部分。然而,在GC期间重映射能够利用在GC期间读取有效数据以及限制数据量的需要的益处,考虑该数据量以仅重新映射在GC之后将被保持的有效数据。
图10A和图10B提供根据一个实施例的地址转换过程的流程图,该地址转换过程能够由执行固件10的控制器120执行。当需要读或写存储在DSD 106中的数据时,能够使用图10A和图10B的过程。
在框1002中,控制器120接收LBA以用于转换为PBA。这可以为从主机101接收的读或写命令服务。在框1004中,控制器120确定主机101或DSD 106是否在启动过程中或是否在启动过程之后不久。如果不是,在框1006中控制器120搜索具有最快查询时间的映射系统(例如,映射系统14)。如果在框1008中在映射系统中找到LBA,则图10B中的框1026中,控制器120将LBA转换为在映射系统中识别的PBA。
另一方面,如果在框1008中没有找到LBA,则在框1010中控制器120搜索在启动过程期间具有最快可用性的映射系统(例如,映射系统12)。虽然不是启动过程,但是待存取的数据仍可以由在启动过程期间具有最快可用性的映射系统来映射,并且此映射系统能够具有第二快速查询时间。
在框1012中,控制器120确定是否在框1010的搜索中找到LBA。如果是,该过程前进到图10B中的框1026以便将LBA转换为其相应的PBA。如果在框1010的搜索中没有找到LBA,则该过程前进到图10B中的框1020来搜索存储在存储器140中的映射系统的部分以进行更快速存取。
在框1022中,确定是否在框1020的搜索中找到LBA。如果是,则在框1026中将LBA转换为PBA。如果不是,则在框1024中控制器120搜索NVM128中的一个或更多个映射系统(例如,映射系统16和映射系统18)。在对映射系统中的LBA进行定位之后,控制器120在框1026中将LBA转换为PBA。
返回到图10A中的框1004,如果确定主机101或DSD 106在启动过程或在从启动过程开始的预定量的时间内,则在其中搜索前两个映射系统的顺序与框1006和框1010的顺序相反。在框1014中,控制器120首先搜索在启动过程期间具有最快可用性的映射系统(例如,映射系统12)。在存储器140为易失性存储器的情况下,该映射系统能够是从非易失性存储器位置最快速地恢复或加载到存储器140中的映射系统。
在框1016中,控制器120确定是否在框1014的搜索中找到LBA。如果是,则在图10B的框1026中将LBA转换为PBA。如果不是,则在框1018中控制器120搜索具有最快查询时间的映射系统(例如,映射系统14),从而使得如果由具有最快查询时间的映射系统映射,数据可以更快可用。
如果在框1018的搜索中找到LBA,则控制器120在图10B的框1026中将LBA转换为PBA。如果不是,则该过程前进到图10B中的框1020来搜索存储器140中的映射系统的部分。如果在框1020中执行的搜索中没有找到LBA,则在框1024中控制器120搜索NVM 128中剩余的一个或更多个映射系统来定位LBA。
其他的实施例
所属领域的普通技术人员将了解,结合本文中所揭示的实施例而描述的各种说明性逻辑块、模块及过程可实施为电子硬件、计算机软件或两者的组合。此外,上述过程可以体现在计算机可读介质上,该计算机可读介质使处理器或计算机实施或执行特定功能。
为了清楚地说明硬件和软件的这一可互换性,上文已经将各种说明性部件、框、和模块按照它们的功能进行了一般性描述。该功能是被实现为硬件还是软件取决于具体应用和施加于整个系统上的设计约束。本领域普通技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是此类实现决策不应被解释为致使脱离本披露的范围。
可以利用通用处理器、DSP、ASIC、FPGA或其他可编程逻辑器件、离散门或晶体管逻辑、离散硬件部件或被设计成用于执行在此所描述的功能的其任何组合来实现或执行结合在此披露的示例而描述的各种说明性的逻辑块、单元、模块和控制器。通用处理器可以是微处理器,但在替换方案中,该处理器可以是任何常规的处理器、控制器、微控制器或状态机。处理器也可以实现为计算设备的组合,例如,DSP与微处理器的组合、多个微处理器、与DSP核结合的一个或更多个微处理器、或者任何其他这种配置。
结合在此披露的示例所描述的方法或过程的活动可以在硬件中、在由处理器执行的软件模块中、或在这两者的组合中得到直接体现。该方法或算法的步骤也可以从示例中提供的这些步骤以替换顺序被执行。软件模块可以驻留在RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动介质、光学介质、或者本领域已知的任何其他形式的存储介质中。示例性存储介质耦合到处理器从而使得该处理器可从/向该存储介质读写信息。在替代方案中,可以将存储介质整合至处理器。处理器和存储介质可以驻留在专用集成电路(ASIC)中。
提供了所披露的示例实施例的上述说明书使任何本领域普通技术人员能够制造或使用本披露中的实施例。对这些示例的各种改动对于本领域普通技术人员将是明显的,并且在不脱离本披露的精神或范围的情况下,在此披露的原理可以被应用于其他示例。描述的实施例应被认为在各方面都仅是说明性的而非限制性的,并且因此,本披露的范围是由以下权利要求书而非前述的描述来指示。在权利要求书的等效含义和范围内的所有更改涵盖在权利要求书的范围内。
Claims (19)
1.一种数据存储设备即DSD,包括:
存储数据的存储器;和
控制器,其被配置成用于:
维持多个映射系统,所述多个映射系统将存储在所述存储器中的数据的逻辑地址映射至存储所述数据的所述存储器中的位置的物理地址;
从主机接收数据以存储在所述存储器中;
将所接收到的数据存储到所述存储器的位置中;以及
基于所述接收到的数据的优先级、所述接收到的数据已经被存取或者将被存取的频率的指示以及所述接收到的数据最后被存取的时间中的至少一个,从所述多个映射系统中选择映射系统来映射所述接收到的数据;
其中所述多个映射系统之中具有最快查询时间的映射系统被选择用于映射具有高优先级的数据,已经被或者将被频繁存取的数据或最近被存取的数据。
2.如权利要求1所述的DSD,其中,在选择所述映射系统时,所述控制器使用所述主机提供的信息。
3.如权利要求1所述的DSD,其中,在选择所述映射系统时,所述控制器使用由所述DSD确定的信息。
4.如权利要求1所述的DSD,其中所述控制器进一步被配置成用于选择具有最快查询时间的所述映射系统以用于映射具有低延迟存取需求的数据。
5.如权利要求1所述的DSD,其中,相比于所述多个映射系统中的其他映射系统,具有最快查询时间的所述映射系统需要最小量的存储器参量来执行映射操作。
6.如权利要求1所述的DSD,进一步包括存储具有最快查询时间的所述映射系统的快速存取存储器。
7.如权利要求1所述的DSD,其中具有最快查询时间的所述映射系统具有所述多个映射系统的最小大小。
8.如权利要求1所述的DSD,其中,所述控制器进一步被配置成:基于由所述控制器或所述主机确定的所述数据的更新信息,选择所述多个映射系统的新映射系统以用于映射之前由所述多个映射系统中的不同映射系统映射的数据。
9.如权利要求8所述的DSD,其中所述新映射系统的所述选择是垃圾收集过程的部分,所述垃圾收集过程由所述控制器执行以回收存储无效数据的所述存储器的部分。
10.一种操作数据存储设备即DSD的方法,所述方法包括:
维持多个映射系统,所述多个映射系统将存储在所述DSD的存储器中的数据的逻辑地址映射至存储所述数据的所述存储器中的位置的物理地址;
从主机接收数据以存储在所述存储器中;
将所接收到的数据存储到所述存储器的位置中;以及
基于所述接收到的数据的优先级、所述接收到的数据已经被存取或者将被存取的频率的指示以及所述接收到的数据最后被存取的时间中的至少一个,从所述多个映射系统中选择映射系统来映射所述接收到的数据;
其中所述多个映射系统之中具有最快查询时间的映射系统被选择用于映射具有高优先级的数据,已经被或者将被频繁存取的数据或最近被存取的数据。
11.如权利要求10所述的方法,其中,由所述主机提供的信息被用于选择所述映射系统。
12.如权利要求10所述的方法,其中,由所述DSD确定的信息被用于选择所述映射系统。
13.如权利要求10所述的方法,其中所述方法进一步包括选择具有最快查询时间的所述映射系统以映射具有低延迟存取需求的数据。
14.如权利要求10所述的方法,其中,相比于所述多个映射系统中的其他映射系统,具有最快查询时间的所述映射系统需要最小数量的存储器参量来执行映射操作。
15.如权利要求10所述的方法,具有最快查询时间的所述映射系统存储在快速存取存储器中。
16.如权利要求10所述的方法,其中具有最快查询时间的所述映射系统具有所述多个映射系统的最小大小。
17.如权利要求10所述的方法,进一步包括基于由所述DSD的控制器或所述主机确定的数据的更新信息,选择所述多个映射系统的新映射系统以映射之前由所述多个映射系统的不同映射系统映射的数据。
18.如权利要求17所述的方法,其中所述新映射系统的所述选择是垃圾收集过程的部分以回收存储无效数据的所述存储器的部分。
19.一种存储计算机可执行指令以操作数据存储设备即DSD的非瞬态计算机可读介质,其中,当所述计算机可执行指令由所述DSD的控制器执行时,所述计算机可执行指令使所述控制器:
维持多个映射系统,所述多个映射系统将存储在所述DSD的存储器中的数据的逻辑地址映射至存储所述数据的所述存储器中的位置的物理地址;
从主机接收数据以存储在所述存储器中;
将所接收到的数据存储到所述存储器中的位置中;以及
基于所述接收到的数据的优先级、所述接收到的数据已经被存取或者将被存取的频率的指示以及所述接收到的数据最后被存取的时间中的至少一个,从所述多个映射系统中选择映射系统来映射所述接收到的数据;
其中所述多个映射系统之中具有最快查询时间的映射系统被选择用于映射具有高优先级的数据,已经被或者将被频繁存取的数据或最近被存取的数据。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/871,639 US10013174B2 (en) | 2015-09-30 | 2015-09-30 | Mapping system selection for data storage device |
US14/871,639 | 2015-09-30 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106557428A CN106557428A (zh) | 2017-04-05 |
CN106557428B true CN106557428B (zh) | 2020-10-23 |
Family
ID=58409248
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610860572.6A Active CN106557428B (zh) | 2015-09-30 | 2016-09-28 | 数据存储设备的映射系统选择 |
Country Status (2)
Country | Link |
---|---|
US (1) | US10013174B2 (zh) |
CN (1) | CN106557428B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10990525B2 (en) * | 2018-12-12 | 2021-04-27 | Mipsology SAS | Caching data in artificial neural network computations |
KR20200072854A (ko) * | 2018-12-13 | 2020-06-23 | 에스케이하이닉스 주식회사 | 데이터 처리 시스템 및 그것의 동작방법 |
TWI723634B (zh) * | 2019-10-01 | 2021-04-01 | 創鑫智慧股份有限公司 | 資料處理系統及其資料處理方法 |
US11210215B2 (en) * | 2019-10-01 | 2021-12-28 | Neuchips Corporation | Computing device and operation method thereof |
CN111241090B (zh) * | 2019-12-23 | 2023-11-10 | 华为技术有限公司 | 存储系统中管理数据索引的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8443167B1 (en) * | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
US20150120995A1 (en) * | 2013-10-29 | 2015-04-30 | Western Digital Technologies, Inc. | Data storage device startup |
CN104636263A (zh) * | 2013-09-18 | 2015-05-20 | 英特尔公司 | 异质存储器存取 |
Family Cites Families (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6856556B1 (en) | 2003-04-03 | 2005-02-15 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US20060041719A1 (en) | 2004-08-18 | 2006-02-23 | Chui Jimmy P F | Multi-tier data storage system |
US7502256B2 (en) | 2004-11-30 | 2009-03-10 | Siliconsystems, Inc. | Systems and methods for reducing unauthorized data recovery from solid-state storage devices |
US20060161724A1 (en) | 2005-01-20 | 2006-07-20 | Bennett Alan D | Scheduling of housekeeping operations in flash memory systems |
US7606934B1 (en) | 2005-03-10 | 2009-10-20 | Sun Microsystems, Inc. | Dynamic routing of I/O requests in a multi-tier storage environment |
KR101257848B1 (ko) | 2005-07-13 | 2013-04-24 | 삼성전자주식회사 | 복합 메모리를 구비하는 데이터 저장 시스템 및 그 동작방법 |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
US7613876B2 (en) | 2006-06-08 | 2009-11-03 | Bitmicro Networks, Inc. | Hybrid multi-tiered caching storage system |
US8108692B1 (en) | 2006-06-27 | 2012-01-31 | Siliconsystems, Inc. | Solid-state storage subsystem security solution |
US7765373B1 (en) | 2006-06-27 | 2010-07-27 | Siliconsystems, Inc. | System for controlling use of a solid-state storage subsystem |
US7509441B1 (en) | 2006-06-30 | 2009-03-24 | Siliconsystems, Inc. | Systems and methods for segmenting and protecting a storage subsystem |
US7447807B1 (en) | 2006-06-30 | 2008-11-04 | Siliconsystems, Inc. | Systems and methods for storing data in segments of a storage subsystem |
US8161227B1 (en) | 2006-10-30 | 2012-04-17 | Siliconsystems, Inc. | Storage subsystem capable of programming field-programmable devices of a target computer system |
US8549236B2 (en) | 2006-12-15 | 2013-10-01 | Siliconsystems, Inc. | Storage subsystem with multiple non-volatile memory arrays to protect against data losses |
US7596643B2 (en) | 2007-02-07 | 2009-09-29 | Siliconsystems, Inc. | Storage subsystem with configurable buffer |
US7685338B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685337B2 (en) | 2007-05-24 | 2010-03-23 | Siliconsystems, Inc. | Solid state storage subsystem for embedded applications |
US7685374B2 (en) | 2007-07-26 | 2010-03-23 | Siliconsystems, Inc. | Multi-interface and multi-bus structured solid-state storage subsystem |
US8095851B2 (en) | 2007-09-06 | 2012-01-10 | Siliconsystems, Inc. | Storage subsystem capable of adjusting ECC settings based on monitored conditions |
US8078918B2 (en) | 2008-02-07 | 2011-12-13 | Siliconsystems, Inc. | Solid state storage subsystem that maintains and provides access to data reflective of a failure risk |
US7962792B2 (en) | 2008-02-11 | 2011-06-14 | Siliconsystems, Inc. | Interface for enabling a host computer to retrieve device monitor data from a solid state storage subsystem |
US7733712B1 (en) | 2008-05-20 | 2010-06-08 | Siliconsystems, Inc. | Storage subsystem with embedded circuit for protecting against anomalies in power signal from host |
US8583835B1 (en) | 2008-08-06 | 2013-11-12 | Siliconsystems, Inc. | Command portal for executing non-standard storage subsystem commands |
US8375151B1 (en) | 2009-02-12 | 2013-02-12 | Siliconsystems, Inc. | Command portal for securely communicating and executing non-standard storage subsystem commands |
US9176859B2 (en) | 2009-01-07 | 2015-11-03 | Siliconsystems, Inc. | Systems and methods for improving the performance of non-volatile memory operations |
US8090899B1 (en) | 2009-03-04 | 2012-01-03 | Western Digital Technologies, Inc. | Solid state drive power safe wear-leveling |
US10079048B2 (en) | 2009-03-24 | 2018-09-18 | Western Digital Technologies, Inc. | Adjusting access of non-volatile semiconductor memory based on access time |
US8254172B1 (en) | 2009-09-30 | 2012-08-28 | Western Digital Technologies, Inc. | Wear leveling non-volatile semiconductor memory based on erase times and program times |
US8243525B1 (en) | 2009-09-30 | 2012-08-14 | Western Digital Technologies, Inc. | Refreshing non-volatile semiconductor memory by reading without rewriting |
US9753847B2 (en) | 2009-10-27 | 2017-09-05 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping |
US8135903B1 (en) | 2009-10-30 | 2012-03-13 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory compressing data to improve performance |
US8261012B2 (en) | 2009-10-30 | 2012-09-04 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory comprising power fail circuitry for flushing write data in response to a power fail signal |
US8397107B1 (en) | 2009-12-11 | 2013-03-12 | Western Digital Technologies, Inc. | Data storage device employing data path protection using both LBA and PBA |
US8316176B1 (en) | 2010-02-17 | 2012-11-20 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification |
US8407449B1 (en) | 2010-02-26 | 2013-03-26 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory storing an inverse map for rebuilding a translation table |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US8713066B1 (en) | 2010-03-29 | 2014-04-29 | Western Digital Technologies, Inc. | Managing wear leveling and garbage collection operations in a solid-state memory using linked lists |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US8341339B1 (en) | 2010-06-14 | 2012-12-25 | Western Digital Technologies, Inc. | Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk |
US8612669B1 (en) | 2010-06-28 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for performing data retention in solid-state memory using copy commands and validity and usage data |
US8447920B1 (en) | 2010-06-29 | 2013-05-21 | Western Digital Technologies, Inc. | System and method for managing data access in non-volatile memory |
US8521972B1 (en) | 2010-06-30 | 2013-08-27 | Western Digital Technologies, Inc. | System and method for optimizing garbage collection in data storage |
US8341340B2 (en) | 2010-07-21 | 2012-12-25 | Seagate Technology Llc | Multi-tier address mapping in flash memory |
US8639872B1 (en) | 2010-08-13 | 2014-01-28 | Western Digital Technologies, Inc. | Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk |
US8775720B1 (en) | 2010-08-31 | 2014-07-08 | Western Digital Technologies, Inc. | Hybrid drive balancing execution times for non-volatile semiconductor memory and disk |
US8638602B1 (en) | 2010-09-10 | 2014-01-28 | Western Digital Technologies, Inc. | Background selection of voltage reference values for performing memory read operations |
US8769190B1 (en) | 2010-09-15 | 2014-07-01 | Western Digital Technologies, Inc. | System and method for reducing contentions in solid-state memory access |
US8788779B1 (en) | 2010-09-17 | 2014-07-22 | Western Digital Technologies, Inc. | Non-volatile storage subsystem with energy-based performance throttling |
US8612804B1 (en) | 2010-09-30 | 2013-12-17 | Western Digital Technologies, Inc. | System and method for improving wear-leveling performance in solid-state memory |
US8601313B1 (en) | 2010-12-13 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for a data reliability scheme in a solid state memory |
US8601311B2 (en) | 2010-12-14 | 2013-12-03 | Western Digital Technologies, Inc. | System and method for using over-provisioned data capacity to maintain a data redundancy scheme in a solid state memory |
US8615681B2 (en) | 2010-12-14 | 2013-12-24 | Western Digital Technologies, Inc. | System and method for maintaining a data redundancy scheme in a solid state memory in the event of a power loss |
US8458435B1 (en) | 2010-12-20 | 2013-06-04 | Western Digital Technologies, Inc. | Sequential write thread detection |
US8392635B2 (en) | 2010-12-22 | 2013-03-05 | Western Digital Technologies, Inc. | Selectively enabling a host transfer interrupt |
US8683113B2 (en) | 2011-02-04 | 2014-03-25 | Western Digital Technologies, Inc. | Concurrently searching multiple devices of a non-volatile semiconductor memory |
US8700950B1 (en) | 2011-02-11 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for data error recovery in a solid state subsystem |
US8700951B1 (en) | 2011-03-09 | 2014-04-15 | Western Digital Technologies, Inc. | System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata |
US8769232B2 (en) | 2011-04-06 | 2014-07-01 | Western Digital Technologies, Inc. | Non-volatile semiconductor memory module enabling out of order host command chunk media access |
US9146683B2 (en) | 2011-04-20 | 2015-09-29 | Seagate Technology Llc | Logical block address mapping |
US8862804B2 (en) | 2011-04-29 | 2014-10-14 | Western Digital Technologies, Inc. | System and method for improved parity determination within a data redundancy scheme in a solid state memory |
US8751728B1 (en) | 2011-04-29 | 2014-06-10 | Western Digital Technologies, Inc. | Storage system bus transfer optimization |
US9021178B2 (en) | 2011-05-02 | 2015-04-28 | Western Digital Technologies, Inc. | High performance path for command processing |
US8503237B1 (en) | 2011-05-18 | 2013-08-06 | Western Digital Technologies, Inc. | System and method for data recovery in a solid state storage device |
US8793429B1 (en) | 2011-06-03 | 2014-07-29 | Western Digital Technologies, Inc. | Solid-state drive with reduced power up time |
US8719531B2 (en) | 2011-06-14 | 2014-05-06 | Western Digital Technologies, Inc. | System and method for performing data retention that incorporates environmental conditions |
US8423722B1 (en) | 2011-08-26 | 2013-04-16 | Western Digital Technologies, Inc. | System and method for high performance command processing in solid state drives |
US8700834B2 (en) | 2011-09-06 | 2014-04-15 | Western Digital Technologies, Inc. | Systems and methods for an enhanced controller architecture in data storage systems |
US8713357B1 (en) | 2011-09-06 | 2014-04-29 | Western Digital Technologies, Inc. | Systems and methods for detailed error reporting in data storage systems |
US8707104B1 (en) | 2011-09-06 | 2014-04-22 | Western Digital Technologies, Inc. | Systems and methods for error injection in data storage systems |
US8977803B2 (en) | 2011-11-21 | 2015-03-10 | Western Digital Technologies, Inc. | Disk drive data caching using a multi-tiered memory |
US8724422B1 (en) | 2012-02-29 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for charging back-up charge storage element for data storage device using spindle phase switching elements |
US9003224B2 (en) | 2012-04-25 | 2015-04-07 | Western Digital Technologies, Inc. | Managing unreliable memory in data storage systems |
US8788778B1 (en) | 2012-06-04 | 2014-07-22 | Western Digital Technologies, Inc. | Garbage collection based on the inactivity level of stored data |
US8966343B2 (en) | 2012-08-21 | 2015-02-24 | Western Digital Technologies, Inc. | Solid-state drive retention monitor using reference blocks |
US8788880B1 (en) | 2012-08-22 | 2014-07-22 | Western Digital Technologies, Inc. | Efficient retry mechanism for solid-state memory failures |
US9268682B2 (en) | 2012-10-05 | 2016-02-23 | Skyera, Llc | Methods, devices and systems for physical-to-logical mapping in solid state drives |
US8972826B2 (en) | 2012-10-24 | 2015-03-03 | Western Digital Technologies, Inc. | Adaptive error correction codes for data storage systems |
US9177638B2 (en) | 2012-11-13 | 2015-11-03 | Western Digital Technologies, Inc. | Methods and devices for avoiding lower page corruption in data storage devices |
US8954694B2 (en) | 2012-11-15 | 2015-02-10 | Western Digital Technologies, Inc. | Methods, data storage devices and systems for fragmented firmware table rebuild in a solid state drive |
US9021339B2 (en) | 2012-11-29 | 2015-04-28 | Western Digital Technologies, Inc. | Data reliability schemes for data storage systems |
US9059736B2 (en) | 2012-12-03 | 2015-06-16 | Western Digital Technologies, Inc. | Methods, solid state drive controllers and data storage devices having a runtime variable raid protection scheme |
US20140223255A1 (en) | 2012-12-18 | 2014-08-07 | Western Digital Technologies, Inc. | Decoder having early decoding termination detection |
US9430376B2 (en) | 2012-12-26 | 2016-08-30 | Western Digital Technologies, Inc. | Priority-based garbage collection for data storage systems |
KR20170024714A (ko) * | 2015-08-26 | 2017-03-08 | 에스케이하이닉스 주식회사 | 반도체 시스템 및 그의 동작 방법 |
-
2015
- 2015-09-30 US US14/871,639 patent/US10013174B2/en active Active
-
2016
- 2016-09-28 CN CN201610860572.6A patent/CN106557428B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8443167B1 (en) * | 2009-12-16 | 2013-05-14 | Western Digital Technologies, Inc. | Data storage device employing a run-length mapping table and a single address mapping table |
CN104636263A (zh) * | 2013-09-18 | 2015-05-20 | 英特尔公司 | 异质存储器存取 |
US20150120995A1 (en) * | 2013-10-29 | 2015-04-30 | Western Digital Technologies, Inc. | Data storage device startup |
Also Published As
Publication number | Publication date |
---|---|
US10013174B2 (en) | 2018-07-03 |
US20170090754A1 (en) | 2017-03-30 |
CN106557428A (zh) | 2017-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10761777B2 (en) | Tiered storage using storage class memory | |
US8793429B1 (en) | Solid-state drive with reduced power up time | |
US10915475B2 (en) | Methods and apparatus for variable size logical page management based on hot and cold data | |
KR101390134B1 (ko) | 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리 | |
EP2605142B1 (en) | Lba bitmap usage | |
CN106557428B (zh) | 数据存储设备的映射系统选择 | |
US8984219B2 (en) | Data storage device and method of writing data in the same | |
US10817418B2 (en) | Apparatus and method for checking valid data in memory system | |
US20140095555A1 (en) | File management device and method for storage system | |
US20150052415A1 (en) | Data storage device, operating method thereof and data processing system including the same | |
EP2665065A2 (en) | Electronic device employing flash memory | |
WO2014110095A1 (en) | Method and system for data storage | |
KR102649131B1 (ko) | 메모리 시스템 내 대용량 데이터 저장이 가능한 블록에서의 유효 데이터 체크 방법 및 장치 | |
US11157402B2 (en) | Apparatus and method for managing valid data in memory system | |
US11747979B2 (en) | Electronic device, computer system, and control method | |
KR20200068941A (ko) | 메모리 시스템 내 저장된 데이터를 제어하는 방법 및 장치 | |
KR20200016075A (ko) | 메모리 시스템에서의 유효 데이터 탐색 방법 및 장치 | |
CN111796761A (zh) | 存储器件、控制器以及用于操作控制器的方法 | |
US10235284B2 (en) | Memory system | |
KR20210028729A (ko) | 논리적 대 물리적 테이블 프래그먼트들 | |
US10942848B2 (en) | Apparatus and method for checking valid data in memory system | |
US20110264848A1 (en) | Data recording device | |
US11392310B2 (en) | Memory system and controller | |
US9003261B2 (en) | Memory system | |
US11893269B2 (en) | Apparatus and method for improving read performance in a system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |