CN107644667B - 对用于各种工作负载的固态驱动器的内部预处理 - Google Patents

对用于各种工作负载的固态驱动器的内部预处理 Download PDF

Info

Publication number
CN107644667B
CN107644667B CN201710468427.8A CN201710468427A CN107644667B CN 107644667 B CN107644667 B CN 107644667B CN 201710468427 A CN201710468427 A CN 201710468427A CN 107644667 B CN107644667 B CN 107644667B
Authority
CN
China
Prior art keywords
workload
data
functional
functional area
parameter
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
Application number
CN201710468427.8A
Other languages
English (en)
Other versions
CN107644667A (zh
Inventor
T.G.哈利特
A.J.诺伊
P.彼得森
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.)
Western Digital Technologies Inc
Original Assignee
Western Digital Technologies Inc
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 Western Digital Technologies Inc filed Critical Western Digital Technologies Inc
Publication of CN107644667A publication Critical patent/CN107644667A/zh
Application granted granted Critical
Publication of CN107644667B publication Critical patent/CN107644667B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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/0629Configuration or reconfiguration of storage systems
    • G06F3/0632Configuration or reconfiguration of storage systems by initialisation or re-initialisation of storage 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/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • 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/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • 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
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • G06F7/582Pseudo-random number generators
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/02Detection or location of defective auxiliary circuits, e.g. defective refresh counters
    • G11C29/028Detection or location of defective auxiliary circuits, e.g. defective refresh counters with adaption or trimming of parameters
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/44Indication or identification of errors, e.g. for repair
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/52Protection of memory contents; Detection of errors in memory contents
    • 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
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0615Address space extension
    • G06F12/0623Address space extension for memory modules
    • 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/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0646Configuration or reconfiguration
    • G06F12/0692Multiconfiguration, e.g. local and global addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/20Employing a main memory using a specific memory technology
    • G06F2212/202Non-volatile memory
    • G06F2212/2022Flash memory
    • 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/7201Logical to physical mapping or translation of blocks or pages
    • 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/7206Reconfiguration of flash memory system
    • 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/7208Multiple device management, e.g. distributing data over multiple flash devices
    • 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/7211Wear leveling
    • 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/0685Hybrid storage combining heterogeneous device types, e.g. hierarchical storage, hybrid arrays
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/40Response verification devices using compression techniques
    • G11C2029/4002Comparison of products, i.e. test results of chips or with golden chip
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C2029/4402Internal storage of test result, quality data, chip identification, repair information

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

公开了内部处理用于各种工作负载的SSD的系统和方法。一种这样的方法涉及:(1)接收预处理参数,其包含跨功能区的无效性分布、工作负载的传输大小和工作负载的随机性,(2)产生工作负载数据,其包含随机数据的百分比和非随机数据的百分比,其中百分比是基于工作负载的随机性参数,(3)使用无效性分布参数以确定功能区的预选择的物理区块地址(PBA),(4)通过使用预选择的传输大小,将工作负载数据的一部分写入到功能区的每个预选择的PBA,直到功能区已满,其中传输大小是基于工作负载参数的传输大小,(5)使用跨功能区的无效性分布参数来将功能区的未被预选择的所有PBA标记为无效,以及(6)重复(2)至(5)直到满足预选择的终止条件。

Description

对用于各种工作负载的固态驱动器的内部预处理
技术领域
本公开的方面总体上涉及固态驱动器(SSD),并且更具体地说,涉及对用于各种工作负载的SSD的内部预处理。
背景技术
在各种消耗类电子产品中,包含非易失性存储器(NVM)的固态驱动器(SSD)经常作为常规的旋转硬盘驱动器的替代或补充,以进行大容量存储。这些非易失性存储器可以包含一个或多个闪存存储器装置,闪存存储器装置可以被逻辑地分为区块,并且每个区块可以被进一步逻辑地分为可寻址页。这些可寻址页可以是任意的各种大小(例如,512字节、1千字节、2千字节、4千字节),该大小可以或不可以匹配主机计算装置使用的逻辑区块地址大小。
在测试SSD的性能时,常常期望在相同或者相似的操作条件下对SSD进行比较。因为没有具有含有无效数据(通常在稳定状态下操作的任何SSD都会发生)的区块的新SSD将比频繁使用的SSD执行得更快,测试者常常使得SSD进入与实际使用下的稳定状态条件相似的状态。因此,在执行测试SSD前,测试者通常通过一次或多次地写入SSD,将SSD预处理至稳定状态条件。
但是,大容量SSD的预处理可能是耗时的过程,需要顺序的然后是随机的多次全驱动写入,以保证所有逻辑区块地址(LBA)是有效的,映射到间接表中,以及其他此类任务。随着驱动器变得越来越大,该过程时间显著地增大,使得测量和表征稳定状态性能非常耗时。例如,3.84太字节(TB)的驱动器可能对预处理的一个状态花费28或者更多个小时,或者对预处理的其他状态花费4天或更多天。相应地,需要预处理SSD的改善方法。
发明内容
在一方面,本公开涉及用于内部预处理包含非易失性存储器(NVM)的固态驱动器(SSD)的方法,该方法包含(1)接收多个预选择的预处理参数,所述参数包含跨功能区(Ribbon)的无效性分布、工作负载的传输大小和工作负载的随机性,(2)产生工作负载数据,该工作负载数据包含随机数据的预选择的百分比和非随机数据的预选择的百分比,其中随机数据的预选择的百分比和非随机数据的预选择的百分比是基于工作负载的随机性参数,(3)使用跨功能区的无效性分布参数,以确定NVM的功能区的多个预选择的物理区块地址(PBA),(4)通过使用预选择的传输大小将工作负载数据的一部分写入至功能区的每个预选择的PBA,直到功能区已满,其中预选择的传输大小是基于工作负载参数的传输大小,(5)使用跨功能区的无效性分布参数来将功能区的未被预选择的所有PBA标记为无效,以及(6)重复(2)至(5),直到满足预选择的终止条件。
在另一方面,本公开涉及用于内部预处理固态驱动器(SSD)的系统,该系统包含存储器、非易失性存储器(NVM)、耦合至存储器和NVM的处理器,并且该处理器配置为(1)接收多个预选择的预处理参数,所述参数包含跨功能区的无效性分布、工作负载的传输大小和工作负载的随机性(2)产生工作负载数据,该工作负载数据包含随机数据的预选择的百分比和非随机数据的预选择的百分比,其中随机数据的预选择的百分比和非随机数据的预选择的百分比是基于工作负载的随机性参数,(3)使用跨功能区的无效性分布参数,以确定NVM的功能区的多个预选择的物理区块地址(PBA),(4)通过使用预选择的传输大小将工作负载数据的一部分写入至功能区的每个预选择的PBA,直到功能区已满,其中预选择的传输大小是基于工作负载参数的传输大小,(5)使用跨功能区的无效性分布参数来将功能区的未被预选择的所有PBA标记为无效,以及(6)重复(2)至(5),直到满足预选择的终止条件。
附图说明
图1是根据本公开的一个实施例的固态装置(SSD)的方框图,该SSD可以通过预选择的工作负载对SSD执行内部预处理。
图2是根据本公开的一个实施例的通过预选择的工作负载来对SSD进行内部预处理的流程的流程图。
图3是根据本公开的一个实施例的基于预选择的参数的4功能区SSD的示例性无效性布局。
图4是根据本公开的一个实施例的跨功能区的无效性分布参数的随机样本数据的表格以及对应的曲线图,所述参数可以用于内部预处理SSD。
图5是根据本公开的一个实施例的跨功能区参数的无效性分布的部分体积样本数据的表格以及对应的曲线图,所述参数可以用于内部预处理SSD。
图6是根据本公开的一个实施例的基于预选择的参数的10功能区SSD的示例性无效性布局。
具体实施方式
现在参考附图,示出了基于预选择的参数的集合,来为用于各种工作负载的SSD进行内部预处理的系统和方法。一个这样的方法涉及通过以下方式来对包含非易失性存储器(NVM)的SSD进行内部预处理:(1)接收多个预选择的预处理参数,所述参数包含跨功能区的无效性分布、工作负载的传输大小和工作负载的随机性(2)产生工作负载数据,该工作负载数据包含随机数据的预选择的百分比和非随机数据的预选择的百分比,在这种情形中,随机数据的预选择的百分比和非随机数据的预选择的百分比是基于工作负载的随机性参数,(3)使用跨功能区的无效性分布参数,以确定NVM的功能区的多个预选择的物理区块地址(PBA),(4)通过使用预选择的传输大小将工作负载数据的一部分写入至功能区的每个预选择的PBA,直到功能区已满,在这种情形中,预选择的传输大小是基于工作负载参数的传输大小,(5)使用跨功能区的无效性分布参数来将功能区的未被预选择的所有PBA标记为无效,以及(6)重复(2)至(5),直到满足预选择的终止条件。在一个方面,当NVM中的每个功能区已满时,预选择的终止条件被满足。用于内部预处理SSD的一个这样的系统包含存储器、非易失性存储器(NVM)、和耦合到存储器和NVM的处理器,并且该处理器配置为执行如上所述的方法。
与外部处理SSD(例如,使用主机)的相关的现有预处理技术相比,本文所述的系统和方法的方面可以涉及内部预处理SSD。因此,本文所述的进行内部预处理的系统和方法允许对SSD性能的更加快速的表征,特定是当驱动器的设计发生变化时(例如,在固件或者其他地方中)。此外,进行内部预处理的这些系统和方法可以显著地缩短代码测试循环,和/或允许固件开发者有更多机会进行和细调性能调整。
图1是根据本公开的一个实施例的固态装置(SSD)的方框图,该SSD可以通过预选择的工作负载来执行SSD的内部预处理。系统100包含主机102和耦合到主机102的SSD存储装置104。主机102向SSD存储装置104提供命令,用以在主机102和SSD存储装置104之间传递数据。例如,主机102可以向SSD存储装置104提供写入命令,用以向SSD存储装置104写入数据,或者向SSD存储装置104提供读取命令,用以从SSD存储装置104读取数据。主机102可以是具有数据存储或取回的需求的任何系统或者装置,且具有用于与SSD存储装置104通信的兼容接口。例如,主机102可以是计算装置、个人计算机、便携式计算机、或工作站、服务器、个人数字助理、数字照相机、数字电话等。
SSD存储装置104包含主机接口106、控制器108、存储器110和非易失性存储器112。主机接口106耦合到控制器108,并且有助于主机102和控制器108之间的通信。此外,控制器108耦合到存储器110和非易失性存储器112。主机接口106可以是任何类型的通信接口,诸如集成驱动电子(IDE)接口、通用串行总线(USB)接口、串行外设(SP)接口、高级技术附件(ATA)接口、小型计算机系统接口(SCSI)和IEEE 1394(火线)接口等。在一些实施例中,主机102包含SSD存储装置104。在其他实施例中,SSD存储装置104对于主机102是远程的,或者包含在与主机102通信耦合的远程计算系统中。例如,主机102可以通过无线通信链路与SSD存储装置104进行通信。
控制器108控制SSD存储装置104的操作。在各种实施例中,控制器108通过主机接口106从主机102接收命令,并且执行命令以在主机102和非易失性存储器112之间传递数据。控制器108可以包含任何类型的处理装置,诸如微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件等,用于控制SSD存储装置104的操作。
在一些实施例中,本文所述的由控制器108执行的一些或所有功能可以替代地通过SSD存储装置104的另一个元件执行。例如,SSD存储装置104可以包含微处理器、微控制器、嵌入式控制器、逻辑电路、软件、固件或者任何类型的处理装置,用于通过控制器108执行本文所述的一个或多个功能。在一些实施例中,本文所述的由控制器108执行的一个或多个功能替代地通过主机102执行。在一些实施例中,本文所述的由控制器108执行的一些或所有功能可以替代地通过另一个元件(诸如在包含非易失性存储器元件和磁性存储元件的混合驱动器中的控制器)执行。
存储器110可以是任何存储器、计算装置或者能够存储数据的系统。例如,存储器110可以是随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、同步动态随机存取存储器(SDRAM)、闪存存储器、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)等。在各种实施例中,控制器108使用存储器110或者其部分,用以在主机102和非易失性存储器112之间传递数据的期间存储数据。例如,存储器110或者存储器110的部分可以是高速缓存存储器。
非易失性存储器(NVM)112从控制器108接收数据并且存储数据。非易失性存储器112可以是任何类型的非易失性存储器,诸如闪存存储系统、固态驱动器、闪存卡、安全数字(SD)卡、通用串行总线(USB)存储器装置、紧凑型闪存卡、智能媒体装置、闪存存储阵列等。
控制器108或者NVM 112可以配置为执行任何过程,用以通过本文所述的预选择的工作负载来内部预处理SSD。
图2是根据本公开的一个实施例的通过预选择工作负载来对SSD进行内部预处理的过程200的流程图。在特定的实施例中,过程200可以通过图1的控制器108(例如,在SSD处)执行。
在区块202中,过程接收多个预选择的预处理参数,所述参数包含跨功能区的无效性分布,工作负载的传输大小和工作负载的随机性。在一个方面,过程从主机(诸如图1的主机102)接收预选择的预处理参数。在一个方面,预选择的预处理参数也可以包含功能区参数的年龄。
在一个方面,跨功能区的无效性分布参数可以指定在特定功能区中无效的多个物理区块地址(PBA)。在另一个方面,跨功能区的无效性分布参数可以指定百分比,该百分比表明在特定功能区中无效的物理区块地址(PBA)的数目。在若干实施例中,跨功能区的无效性分布参数可以为特定的功能区或者多个功能区(例如,功能区的阵列)指定无效信息。
在一个方面,功能区的年龄参数可以指定在SSD中任何特定的功能区被擦除的次数(例如,擦除循环数)。
在一个方面,工作负载的传输大小可以指定待写入SSD中的特定的功能区或者所有的功能区的数据的预选择的传输大小。在一个方面,工作负载的传输大小可以是4千字节(Kb)或者达到64Kb。该参数常常对诸如该过程的内部算法、以及诸如垃圾收集等其他算法具有显著的影响。
在一个方面,工作负载的随机性参数指定在0和1之间的值(例如,百分比),在这种情形中,0对应于是完全顺序的(例如,没有随机性),并且1对应于是完全随机的。在一个方面,工作负载的随机性参数对诸如垃圾收集和碎片整理等算法具有显著的影响。在一个方面,工作负载的随机性参数应用于SSD中的所有的功能区。在另一个方面,工作负载的随机性参数可以包含SSD中的每个功能区的分别的参数。
在区块204中,过程产生工作负载数据,该工作负载数据包含随机数据的预选择百分比和非随机数据的预选择百分比,在这种情形中,随机数据的预选择百分比和非随机数据的预选择百分比是基于工作负载的随机性参数。在一个方面,过程可以使用随机数发生器来产生随机数据。在一个这样的方面,过程可以使用伪随机数发生器(PRNG),其可以具有长的周期长度和相等的均匀性。在一个方面,工作负载的随机性参数可以是100%。在这样的情况中,随机数据的预选择百分比将是100%,并且工作负载数据将只包含随机数据。在另一个方面,工作负载的随机性参数可以是0%。在这样的情况中,非随机数据的预选择百分比将是100%,并且工作负载数据将只包含非随机(例如,顺序的)数据。
在一个方面,随机数据和非随机数据可以是逻辑区块地址,其通常可以存储在SSD中的存储器地址处。在一些方面,工作负载数据也可以包含附加的数据,诸如任意的主机数据。在一个这样的方面,任意的数据可以使用随机数种子(例如,诸如任何或所有预处理参数)来产生。在一个方面,工作负载数据的附加数据可以包含任何或者所有的预处理参数。在一个方面,工作负载数据可以被看作包含作为元数据的一部分和作为任意主机数据的另一部分。元数据可以包含随机数据和非随机数据,在这种情形中,这样的数据可以是逻辑区块地址。元数据可以进一步包含循环冗余校验(CRC),在这种情形中,可以使用对应的逻辑区块地址作为种子来产生CRC。
在区块206中,过程使用跨功能区的无效性分布参数来确定NVM的功能区的多个预选择的物理区块地址(PBA)。在一个方面,过程确定在待写入的功能区中的PBA的数目和适当的间隙(slot)。例如,如果跨功能区的无效性分布参数是50%,则过程可以选择一半的PBA用于写入数据。使用跨功能区的无效性分布参数的和工作负载的传输大小参数均可以确定适当的间隙。
在区块208中,过程然后使用预选择的传输大小将部分工作负载数据写入功能区的每个预选择PBA中(例如,在区块206中确定的),直到功能区已满,在这种情形中,预选择的传输大小是基于工作负载参数的传输大小。
在区块210中,过程使用跨功能区的无效性分布参数来将功能区的未被预选择的所有PBA标记为无效。
在区块212中,过程重复区块204至210,直到满足预选择的终止条件。在一个方面,当NVM中的每个功能区已满时,满足预选择的终止条件。在其他方面,当一些功能区已满并且其他功能区被完全擦除时,可以满足预选择的终止条件。
在一个方面,过程也搜索SSD的间接表中的孔(例如,零)。过程然后可以从工作负载数据或者其他随机数据将随机数据写入每个孔。实际上,过程从而可以将随机映射分配到间接表中的孔。间接表是用于映射逻辑区块地址(LBA)于物理区块地址的大表格。在一个方面,间接表可以实现为平面阵列、树或者其他适当的数据结构。
在一个方面,过程基于功能区参数的年龄,来更新SSD的功能区擦除计数表。在一个方面,预选择的预处理参数也可以包含每个功能区的擦除计数。
在一个方面,过程可以以不同的顺序执行动作的序列。在另一个方面,过程可以跳过一个或多个动作。在其他方面,一个或多个动作是同时执行的。在一些方面,可以执行附加的动作。
过程的其他变化可以包含将其他类型的参数向下传递至驱动器。这些新参数可以包含,但是不限于,NAND电压阈值、NAND缺陷映射和其他指定的实施参数,在这种情形中,NAND与NVM中常用的NAND闪存相关。
图3是根据本公开的一个实施例的基于预选择的参数的4功能区SSD的无效性布局300的示例。在一个方面,代表可能的SSD布局的示例性布局300可以使用标注的参数(例如,预选择的参数)通过图2的预处理方法/过程来产生。如图3的顶部可见,预选择的参数包含[50%、50%、10%、90%]的跨功能区无效性参数的集合、[14、15、16、17]的功能区的年龄参数的集合、[20、22、24、26]的擦除计数参数的集合、8千字节或kB的(多个)工作负载的传递(“Xfer”)大小参数(例如,2个LBN,在这种情形下,1个LBN具有4kB的大小)、以及90%的工作负载的随机性(例如,在这种情形下,传递的10%将与最后的LBN连续,有效地非随机)。在其他实施例中,可以使用这些参数的子集。
如图3中的参数列表可见,存在编号为0至3的4个功能区,以及每个功能区内的20个物理区块地址(PBA/间隙)。布局300具有表格状的格式,该表格的列为“功能区PBA间隙偏移”编号和功能区编号。在表格的顶部,为每个功能区编号列出了诸如年龄的功能区元数据(其也可以被称为序列或者“seq”)和擦除计数。在表格的下部中,表格阐明了功能区的每个地址/间隙的内容,以及随机数据(例如,参见间隙偏移0和1处的功能区0)、非随机数据(例如,参见在间隙偏移16和17处的功能区1)或者无效数据是否存储在相应的间隙(例如,存储器位置)中。在一个方面,因为它列出了“RandLBN[0]”和“RandLBN[0]+1”,尽管在功能区0以及间隙偏移0和1处阐明的数据可能看起来至少部分是顺序的,但两个间隙区块作为单元被写入并且是全体随机的。
如表格下方可见,计算出的无效性(间隙无效/总间隙)准确地对应于在每个功能区的跨功能区的无效性参数。如从表格中可见,预处理过程每次将随机或非随机数据(例如,在间隙0和1处的功能区0)写入2个PBA,在这种情形中,被写入的PBA的数目对应于工作负载的传输大小。如在表格中可见,预处理过程以与工作负载的随机性参数相对应的比率(在这种情况下为90%)将随机数据(例如,随机LBA)来分散非随机数据(例如,非随机LBA)。因此,大约每10次传递,写入指定的间隙的数据可以是非随机的或者顺序的。在其他实施例中,过程可以根据参数以不同的方式操作。尽管在图3中未示出,被写入的每个间隙可以包含附加的数据,诸如元数据和任意的主机数据。元数据可以包含随机LBA和非随机LBA。元数据可以进一步包含循环冗余校验(CRC),在这种情形中,可以使用对应的逻辑区块地址作为种子来产生CRC。在一个方面,逻辑区块地址(LBA)作为数据完整性检查存储在功能区(例如,SSD)中的每个间隙(例如,PBA)处,使得所存储的LBA可以与存储在间接表中的对应的LBA相匹配。
图4是根据本公开的一个实施例的跨功能区的无效性分布参数的随机样本数据的表格402以及对应的曲线图404,该参数可以用于内部预处理SSD。在图4的示例中,假设存在10个功能区。表格402示出了功能区编号以及对应的无效性分布和年龄。例如,功能区0具有100的无效性和0的年龄。曲线图404示出了无效性相对于功能区编号,并且得到的曲线在随机分配的采样数据下是相当线性的。
图5是根据本公开的一个实施例的跨功能区的无效性分布参数的部分体积样本数据的表格502以及对应的曲线图504,该参数可以用于内部预处理SSD。在图5的示例中,再次假设存在10个功能区。表格502示出了功能区编号以及对应的无效性分布和年龄。例如,功能区0具有100的无效性和0的年龄。曲线图504示出了无效性相对于功能区编号,以及在部分体积分配样本数据下的结果曲线。在一个方面,部分体积可以被限定为工作负载,在这种情形中,仅使用驱动器的LBA的子集。这导致图5所示的特性,在这种情形中,更多的功能区具有高无效性,这是因为逻辑区块地址重复,并且以较高的频率使得其先前的功能区位置无效。
图6是根据本公开的一个实施例的基于预选择的参数的10功能区SSD的示例性无效性布局600。如从图6中可见,每个功能区存在20个逻辑区块编号(LBN),在这种情形中,每个LBN由多个LBA构成。布局600具有表格状的格式,其具有功能区编号、年龄(也可以被称为顺序或“seq”)、功能区布局和无效性(例如,跨功能区的无效性分布)的列。例如,功能区0具有73的年龄、10的无效性和对应的布局,其阐明10个LBN已经被无效。在布局600的下方示出了参数602的列表。
尽管以上描述含有本发明的许多具体实施例,但这些实施例不应被解释为对本发明范围的限制,而是作为其具体实施例的示例。相应地,本发明的范围不应由所示的实施例来确定,而是由所附权利要求及其等同来确定。
上述各种特征和过程可以彼此独立使用,也可以以各种方式组合使用。所有可能的组合和子组合旨在落入本公开的范围内。此外,在一些实施方式中可以省略某些方法、事件、状态或过程区块。本文所述的方法和过程也不限于任何特定的序列,并且与其相关的区块或状态可以以适合的其他顺序来执行。例如,所描述的任务或事件可以以具体公开以外的顺序执行,或者可以在单个区块或状态中以多个组合执行。示例性任务或事件可以串行、平行或以一些其他适当的方式来执行。任务或事件可以从公开的示例性实施例中被添加或删除。本文所述的示例性系统和部件可以与所描述的示例以不同方式配置。例如,与所公开的示例性实施例相比,元件可以被添加、删除或者重新排列。

Claims (18)

1.一种用于内部预处理包括非易失性存储器的固态驱动器的方法,所述方法包括:
(1)接收多个预选择的预处理参数,所述预处理参数包括跨功能区的无效性分布、工作负载的传输大小、以及工作负载的随机性;
(2)产生工作负载数据,所述工作负载数据包括随机数据的预选择百分比和非随机数据的预选择百分比,其中所述随机数据的预选择百分比和所述非随机数据的预选择百分比是基于所述工作负载的随机性参数;
(3)使用所述跨功能区的无效性分布参数来确定所述非易失性存储器的功能区的多个预选择的物理区块地址;
(4)使用预选择的传输大小将所述工作负载数据的一部分写入所述功能区的每个所述预选择的物理区块地址中,直到所述功能区已满,其中所述预选择的传输大小是基于所述工作负载的传输大小参数;
(5)使用所述跨功能区的无效性分布参数来将所述功能区的未被预选择的所有物理区块地址标记为无效;以及
(6)重复(2)至(5),直到满足预选择的终止条件。
2.根据权利要求1所述的方法,其中重复(2)至(5)直到满足所述预选择的终止条件包括重复(2)至(5)直到在所述非易失性存储器中的每个功能区已满。
3.根据权利要求1所述的方法:
其中所述接收所述多个预选择的预处理参数包括,从位于所述固态驱动器处的主机接收所述多个预选择的预处理参数;
其中所述产生所述工作负载数据包括,在所述固态驱动器处产生所述工作负载数据;
其中所述确定所述多个预选择的物理区块地址包括,在所述固态驱动器处确定所述多个预选择的物理区块地址;以及
其中所述将所述工作负载数据的一部分写入所述功能区的每个所述预选择的物理区块地址包括,在所述固态驱动器处将所述工作负载数据的一部分写入所述功能区的每个所述预选择的物理区块地址。
4.根据权利要求1所述的方法,进一步包括:
搜索所述固态驱动器的间接表中的孔;以及
从所述工作负载数据将随机数据写入每个所述孔。
5.根据权利要求1所述的方法,其中所述多个预选择的预处理参数进一步包括功能区的年龄;
所述方法进一步包括:
基于所述功能区的年龄参数,更新所述固态驱动器的功能区擦除计数表。
6.根据权利要求1所述的方法,其中所述产生所述工作负载数据包括使用伪随机数发生器以产生所述工作负载数据。
7.根据权利要求1所述的方法,其中所述工作负载的传输大小参数包括4k区块或者64k区块中的至少一个。
8.根据权利要求1所述的方法,其中所述工作负载的随机性参数是在0和1之间的值,包含端值。
9.根据权利要求1所述的方法,进一步包括:
使用所述工作负载数据的随机数据或所述工作负载数据的非随机数据中的任一个,确定所述多个物理区块地址的中的每一个的逻辑区块地址;以及
其中所述将所述工作负载数据的所述部分写入所述功能区的每个所述预选择的物理区块地址包括,将所述逻辑区块地址中的一个写入所述功能区的每个所述预选择的物理区块地址。
10.一种用于内部预处理固态驱动器的系统,所述系统包括:
存储器;
非易失性存储器;
处理器,所述处理器耦合至所述存储器和所述非易失性存储器,且配置为:
(1)接收多个预选择的预处理参数,所述预选择的预处理参数包括跨功能区的无效性分布、工作负载的传输大小、以及工作负载的随机性;
(2)产生工作负载数据,所述工作负载数据包括随机数据的预选择百分比和非随机数据的预选择百分比,其中所述随机数据的预选择百分比和所述非随机数据的预选择百分比是基于所述工作负载的随机性参数;
(3)使用所述跨功能区的无效性分布参数来确定所述非易失性存储器的功能区的多个预选择的物理区块地址;
(4)使用预选择的传输大小将所述工作负载数据的一部分写入所述功能区的每个所述预选择的物理区块地址中,直到所述功能区已满,其中所述预选择的传输大小是基于所述工作负载的传输大小参数;
(5)使用所述跨功能区无效性分布参数来将所述功能区的未被预选择的所有物理区块地址标记为无效;以及
(6)重复(2)至(5),直到满足预选择的终止条件。
11.根据权利要求10所述的系统,其中所述处理器进一步配置为重复(2)至(5),直到所述非易失性存储器中的每个功能区已满。
12.根据权利要求10所述的系统,其中所述处理器进一步配置为从主机接收所述多个预选择的预处理参数。
13.根据权利要求10所述的系统,其中所述处理器进一步配置为:
搜索所述固态驱动器的间接表中的孔;以及
从所述工作负载数据将随机数据写入每个所述孔。
14.根据权利要求10所述的系统:
其中所述多个预选择的预处理参数进一步包括功能区的年龄;以及
其中所述处理器进一步配置为基于所述功能区的年龄参数来更新所述固态驱动器的功能区擦除计数表。
15.根据权利要求10所述的系统,其中所述处理器进一步配置为使用伪随机数发生器以产生所述工作负载数据。
16.根据权利要求10所述的系统,其中工作负载参数的所述传输大小包括4k区块或者64k区块中的至少一个。
17.根据权利要求10所述的系统,其中工作负载参数的所述随机性是在0和1之间的值,包括端值。
18.根据权利要求10所述的系统,其中所述处理器进一步配置为:
使用所述工作负载数据的随机数据或所述工作负载数据的非随机数据中的任一个,确定所述多个物理区块地址中的每一个的逻辑区块地址;以及
将所述逻辑区块地址中的一个写入所述功能区的每个所述预选择的物理区块地址。
CN201710468427.8A 2016-07-21 2017-06-20 对用于各种工作负载的固态驱动器的内部预处理 Active CN107644667B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/216,541 2016-07-21
US15/216,541 US9965198B2 (en) 2016-07-21 2016-07-21 Internally preconditioning solid state drives for various workloads

Publications (2)

Publication Number Publication Date
CN107644667A CN107644667A (zh) 2018-01-30
CN107644667B true CN107644667B (zh) 2021-01-26

Family

ID=60890398

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710468427.8A Active CN107644667B (zh) 2016-07-21 2017-06-20 对用于各种工作负载的固态驱动器的内部预处理

Country Status (4)

Country Link
US (1) US9965198B2 (zh)
KR (1) KR101903577B1 (zh)
CN (1) CN107644667B (zh)
DE (1) DE102017112751B4 (zh)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10298834B2 (en) 2006-12-01 2019-05-21 Google Llc Video refocusing
US10567464B2 (en) 2015-04-15 2020-02-18 Google Llc Video compression with adaptive view-dependent lighting removal
US10341632B2 (en) 2015-04-15 2019-07-02 Google Llc. Spatial random access enabled video system with a three-dimensional viewing volume
US10444931B2 (en) 2017-05-09 2019-10-15 Google Llc Vantage generation and interactive playback
US10419737B2 (en) 2015-04-15 2019-09-17 Google Llc Data structures and delivery methods for expediting virtual reality playback
US10275898B1 (en) 2015-04-15 2019-04-30 Google Llc Wedge-based light-field video capture
US10546424B2 (en) 2015-04-15 2020-01-28 Google Llc Layered content delivery for virtual and augmented reality experiences
US10412373B2 (en) 2015-04-15 2019-09-10 Google Llc Image capture for virtual reality displays
US10540818B2 (en) 2015-04-15 2020-01-21 Google Llc Stereo image generation and interactive playback
US10469873B2 (en) 2015-04-15 2019-11-05 Google Llc Encoding and decoding virtual reality video
US10275174B2 (en) * 2016-08-23 2019-04-30 Samsung Electronics Co., Ltd. System and method for pre-conditioning a storage device
US10679361B2 (en) 2016-12-05 2020-06-09 Google Llc Multi-view rotoscope contour propagation
US10594945B2 (en) 2017-04-03 2020-03-17 Google Llc Generating dolly zoom effect using light field image data
US10474227B2 (en) 2017-05-09 2019-11-12 Google Llc Generation of virtual reality with 6 degrees of freedom from limited viewer data
US10354399B2 (en) 2017-05-25 2019-07-16 Google Llc Multi-view back-projection to a light-field
US10965862B2 (en) 2018-01-18 2021-03-30 Google Llc Multi-camera navigation interface
US11967391B2 (en) 2021-08-06 2024-04-23 SK Hynix Inc. System and method for testing multicore SSD firmware based on preconditions generation

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872320A (zh) * 2010-04-16 2010-10-27 浪潮电子信息产业股份有限公司 一种关于ssd硬盘可靠性及性能的测试及统计方法
CN102411993A (zh) * 2011-11-24 2012-04-11 曙光信息产业股份有限公司 固态硬盘的测试方法和装置
CN103049397A (zh) * 2012-12-20 2013-04-17 中国科学院上海微系统与信息技术研究所 一种基于新型存储器的固态硬盘内部缓存管理方法及系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5347489A (en) 1992-04-21 1994-09-13 Intel Corporation Method and circuitry for preconditioning shorted rows in a nonvolatile semiconductor memory incorporating row redundancy
US5537357A (en) 1994-06-27 1996-07-16 Intel Corporation Method for preconditioning a nonvolatile memory array
JPH11213691A (ja) 1998-01-20 1999-08-06 Toshiba Corp 不揮発性半導体記憶装置
US6233178B1 (en) 1999-10-14 2001-05-15 Conexant Systems, Inc. Method and apparatus for pre-conditioning flash memory devices
US7580905B2 (en) * 2003-12-15 2009-08-25 Intel Corporation Adaptive configuration of platform
US7433228B2 (en) 2005-09-20 2008-10-07 Spansion Llc Multi-bit flash memory device having improved program rate
US8239618B2 (en) 2010-05-27 2012-08-07 Dell Products L.P. System and method for emulating preconditioning of solid-state device
US8422303B2 (en) * 2010-12-22 2013-04-16 HGST Netherlands B.V. Early degradation detection in flash memory using test cells
US9524800B2 (en) 2012-09-26 2016-12-20 International Business Machines Corporation Performance evaluation of solid state memory device
US20140214793A1 (en) * 2013-01-29 2014-07-31 Nec Laboratories America, Inc. Cost-Effective Data Layout Optimization Over Heterogeneous Storage Classes

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872320A (zh) * 2010-04-16 2010-10-27 浪潮电子信息产业股份有限公司 一种关于ssd硬盘可靠性及性能的测试及统计方法
CN102411993A (zh) * 2011-11-24 2012-04-11 曙光信息产业股份有限公司 固态硬盘的测试方法和装置
CN103049397A (zh) * 2012-12-20 2013-04-17 中国科学院上海微系统与信息技术研究所 一种基于新型存储器的固态硬盘内部缓存管理方法及系统

Also Published As

Publication number Publication date
DE102017112751A1 (de) 2018-01-25
KR20180010975A (ko) 2018-01-31
DE102017112751B4 (de) 2022-06-15
KR101903577B1 (ko) 2018-10-04
US20180024753A1 (en) 2018-01-25
US9965198B2 (en) 2018-05-08
CN107644667A (zh) 2018-01-30

Similar Documents

Publication Publication Date Title
CN107644667B (zh) 对用于各种工作负载的固态驱动器的内部预处理
US9842030B2 (en) Data storage device and flash memory control method
US9229876B2 (en) Method and system for dynamic compression of address tables in a memory
KR101818578B1 (ko) 비휘발성 메모리를 갖는 시스템을 위한 동적 및 정적 데이터의 처리
US9747202B1 (en) Storage module and method for identifying hot and cold data
US8239639B2 (en) Method and apparatus for providing data type and host file information to a mass storage system
US9152559B2 (en) Metadata storage associated with wear-level operation requests
CN110678836A (zh) 用于键值存储的持久性存储器
US20150106557A1 (en) Virtual Memory Device (VMD) Application/Driver for Enhanced Flash Endurance
US9715445B2 (en) File differentiation based on data block identification
US20130145085A1 (en) Virtual Memory Device (VMD) Application/Driver with Dual-Level Interception for Data-Type Splitting, Meta-Page Grouping, and Diversion of Temp Files to Ramdisks for Enhanced Flash Endurance
US20110099323A1 (en) Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
EP1548599A2 (en) Faster write operations to nonvolatile memory by manipulation of frequently accessed sectors
US20110161621A1 (en) Micro-update architecture for address tables
CN109753234B (zh) 存储器系统及非易失性存储器的控制方法
US20190294345A1 (en) Data-Retention Controller Using Mapping Tables in a Green Solid-State-Drive (GNSD) for Enhanced Flash Endurance
US10372382B2 (en) Methods and apparatus for read disturb detection based on logical domain
US20150186259A1 (en) Method and apparatus for storing data in non-volatile memory
US10621085B2 (en) Storage system and system garbage collection method
US20150178194A1 (en) Systems and methods of address-aware garbage collection
CN113127085B (zh) 从nand媒体快速引导的固态存储装置
CN105224238A (zh) 存储器管理方法、存储器存储装置及存储器控制电路单元
CN116994636B (zh) 存储芯片随机磨损测试方法、装置及其存储介质
CN114415949B (zh) 扫描回收block方法、系统、存储介质及设备

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