CN112424742B - 一种ssd数据读取方法和装置 - Google Patents
一种ssd数据读取方法和装置 Download PDFInfo
- Publication number
- CN112424742B CN112424742B CN201880095631.2A CN201880095631A CN112424742B CN 112424742 B CN112424742 B CN 112424742B CN 201880095631 A CN201880095631 A CN 201880095631A CN 112424742 B CN112424742 B CN 112424742B
- Authority
- CN
- China
- Prior art keywords
- data
- data recovery
- ssd
- recovery step
- timecredit
- 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
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
- Retry When Errors Occur (AREA)
Abstract
一种SSD数据恢复方法及装置,属于计算机技术领域。所述SSD数据恢复方法包括:接收数据读取命令;根据数据读取命令读取数据;基于所述数据读取命令在SSD中的剩余允许停留时间和各个数据恢复步骤的预期执行时间来选择可执行的数据恢复步骤对数据进行恢复。通过事先对数据读取命令打上时间戳,并根据剩余可停留时间,来选择性执行数据恢复流程的不同步骤,从而达到提升命令响应时间,缩短数据恢复时间,降低长尾时延(long tail latency)的目的。
Description
技术领域
本发明涉及涉及计算机技术领域,尤其涉及数据存储技术领域。
背景技术
随着信息化技术的大规模发展,全球对计算和存储的需求越来越高。SSD(SolidState Drive固态硬盘)由于其相对于传统硬盘来说具有高性能、低延迟与低功耗的特性,而被存储市场广泛接受。SSD是用固态电子存储芯片阵列而制成的硬盘,由主控单元和存储单元组成。存储单元通常可以是FLASH芯片或DRAM芯片。使用固态电子存储芯片阵列进行存储的SSD固态硬盘可以极大的降低存储系统的时延,并且由于SSD不需要HDD(Hard DiskDriver硬盘驱动器)所需的机械结构,因此可以获得比HDD高得多的可靠性。一方面,在同等容量下,SSD可以获得比HDD高数百上千倍的IOPS与带宽性能提升;另一方面,在同等性能下,SSD也只需比HDD低得多的容量与功耗,并节省大量宝贵的机房空间。
在SSD的应用中,除了平均时延之外,还存在“长尾延时”(Long Tail Latency)。长尾延时是指,在SSD的IO中,有极少的比例,其响应时间远大于平均响应时间,一般用百分比时延来表示,例如99%IO Latency<200us表示,每100个IO中,有1个IO的响应时间达到200us。由于类似数据库这样的应用对时延敏感,因此长尾延时将造成这类应用的性能波动。
长尾延时的来源有很多,包括SSD内的数据读取命令调度,在后端存储单元上的命令调度,对存储单元的数据恢复,在后端存储单元如Flash上的命令冲突等。
其中数据恢复过程中的长尾延时问题尤为明显,NandFlash从2D时代发展到3D时代,其数据出错的情况越来越多,其数据恢复的方法也越来越多,如果完整执行这些数据恢复方法,耗时将即为可观。以Toshiba BiCS3 Flash为例,其数据恢复方法就有Shift-Read+LDPC HardDecoding/LDPC SoftDecoding,Read Retry+LDPC HardDecoding,RAID三大种方法。以某SSD的具体实现为例,Toshiba BiCS3的一个完整恢复流程包括最大4次Shift-Read+LDPC HardDecoding/LDPC SoftDecoding,39次Read Retry+LDPC HardDecoding,以及1次RAID。如果完整的执行恢复流程,共需要时间约4*100us+39*100us+100us=4.4ms。
第三方设备发送IO读命令到达SSD后,首先需要在SSD内进行命令调度,进入排序队列等待被调度执行,最终从队列中调度出来从SSD内的Cache或者Flash上获取数据,此时该IO命令已经被排队耗费了不少时间,如果在读取Flash时发生数据错误,需要进入数据恢复流程,则往往会因为数据恢复流程的各个步骤引入的时间,导致该IO处理时间增大,超过长尾延时的上限。
发明内容
现有技术提出了多种方法来解决上述命令调度/命令冲突,包括读缓存/基于时间戳的命令重排序/Flash上的命令冲突时的命令重调度等,但是对于“存储单元的数据恢复”过程中对长尾延迟的影响还未见解决方法。
本发明实施例提出了一种SSD数据读取方法和装置,通过事先对读IO命令打上时间戳,在进入数据恢复流程时,根据该IO命令的剩余可停留时间,来选择性执行数据恢复流程的不同步骤,从而达到控制IO时延上限,降低长尾时延(long tail latency)的目的。
本申请的实施例,一方面提供了一种SSD数据读取方法,所述方法包括:主控单元接收数据读取命令,主控单元根据读取命令从存储单元读取数据;计算所述数据读取命令的剩余可停留时间TimeBudget;主控单元基于所述数据读取命令的TimeBudget和SSD中各个数据恢复步骤的预期执行时间TimeCredit选择可执行的数据恢复步骤进行数据恢复。
可选的,所述TimeBudget是所述数据读取命令在SSD中的允许停留时间上限与该读取命令在SSD中已停留时间的差值;所述TimeCredit是数据恢复步骤的预期执行时间。
可选的,所述各个数据恢复步骤的数量为一个或多个。
可选的,所述各个数据恢复步骤是独立的关系。
可选的,所述各个数据恢复步骤中存在部分数据恢复步骤是相同的。
可选的,所述主控单元基于所述数据读取命令的TimeBudget和SSD中各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤进行数据恢复,包括:按照所述各个数据恢复步骤间预定的执行顺序比较各个步骤的TimeCredit和所述数据读取命令的TimeBudget,当所述数据读取命令的TimeBudget小于所比较的数据恢复步骤的TimeCredit时,继续比较下一步骤的TimeCredit和所述数据读取命令的TimeBudget。
可选的,所述主控单元基于所述数据读取命令的TimeBudget和SSD中各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤进行数据恢复,包括:按照所述各个数据恢复步骤间预定的执行顺序顺序比较各个步骤的TimeCredit和所述数据读取命令的TimeBudget,当所述数据读取命令的TimeBudget大于所比较的数据恢复步骤的TimeCredit时,执行所述数据恢复步骤。
可选的,当所述数据读取命令的TimeBudget大于所比较的数据恢复步骤的TimeCredit时,执行所述数据恢复步骤,包括:执行结果为数据恢复成功时,返回成功状态作为所述数据读取命令响应。
可选的,当所述数据读取命令的TimeBudget大于所比较的数据恢复步骤的TimeCredit时,执行所述数据恢复步骤,包括:执行结果为数据恢复失败时,重新计算TimeBudget,并继续比较所述预定的执行顺序中下一数据恢复步骤的TimeCredit和所述重新计算的TimeBudget。
可选的,所述数据恢复的执行结果为数据恢复失败时,重新计算TimeBudget,并继续比较所述预定的执行顺序中下一步骤的TimeCredit和所述重新计算的TimeBudget,当所比较的步骤的TimeCredit大于等于所述数据读取命令的TimeBudget时,继续比较所述预定的执行顺序中下一数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget。
可选的,所述数据恢复的执行结果为数据恢复失败时,重新计算TimeBudget,并继续比较预定顺序中下一步骤的TimeCredit和所述重新计算的TimeBudget,当所比较的步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述下一数据恢复步骤。
可选的,所述按照各恢复步骤间预定的执行顺序顺序比较各个步骤的TimeCredit和所述数据读取命令的TimeBudget,包括:当比较到最后一个步骤,且最后一个步骤的TimeCredit大于所述数据读取命令的TimeBudget时,返回失败+Retry响应。
可选的,所述按照各数据恢复步骤预定的执行顺序比较各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,包括:当比较到最后一个数据恢复步骤,且所述最后一个数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述最后一个数据恢复步骤。
可选的,所述执行所述最后一个数据恢复步骤,执行结果为数据恢复失败时,判断是否已经遍历所有的数据恢复步骤,判断结果是则返回失败状态作为所述数据读取命令响应。
可选的,所述执行所述最后一个数据恢复步骤,执行结果为数据恢复失败时,判断是否已经遍历所有的步骤,判断结果为否则返回Retry状态作为所述数据读取命令响应。
可选的,所述TimeCredit是数据恢复步骤的预期执行时间,包括:不同的数据恢复步骤具有不同的TimeCredit。
本申请的实施例,另一方面提供了一种SSD主控装置,所述SSD主控装置包括:第三方设备接口模块,数据读取模块,数据恢复模块;所述第三方设备接口模块,用于接收读取命令,发送所述数据读取命令给数据读取模块;所述数据读取模块,用于从所述第三方设备接口模块接收所述数据读取命令,并基于所述数据读取命令从SSD的存储单元读取数据,发送给所述数据恢复模块;所述数据恢复模块,用于接收所述数据读取模块发送的数据,并通过计算所述数据读取命令在SSD中的允许停留时间上限与所述数据读取命令在所述SSD中已停留时间的差值,来获得所述数据读取命令的TimeBudget,基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对读取的所述数据进行恢复;其中,所述SSD主控装置中设置有一个或多个数据恢复步骤;所述TimeCredit是数据恢复步骤的预期执行时间。
可选的,所述数据恢复模块基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对读取的所述数据进行恢复,包括:所述数据恢复模块按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所比较的步骤的TimeCredit大于所述数据读取命令的TimeBudget时,继续比较下一数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget。
可选的,所述数据恢复模块基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对读取的所述数据进行恢复,包括:所述数据恢复模块按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所比较的数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复。
本发明另一方面还提供了一种SSD,所述SSD包括:主控单元和存储单元;所述主控单元,用于接收数据读取命令,根据所述数据读取命令从所述存储单元读取数据;并通过计算所述数据读取命令在SSD中的允许停留时间上限与所述数据读取命令在所述SSD中已停留时间的差值,来获得所述数据读取命令的TimeBudget;基于所述数据读取命令的TimeBudget和所述主控单元中预置的各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对读取的所述数据进行恢复;其中,所述主控单元中预置有一个或多个数据恢复步骤;所述存储单元,用于将根据所述数据读取命令读取的所述数据发送给主控单元;所述TimeCredit是数据恢复步骤的预期执行时间。
可选的,所述主控单元基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对读取的所述数据进行恢复,包括:所述主控单元按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所述主控单元判断所比较的步骤的TimeCredit大于所述数据读取命令的TimeBudget时,继续比较下一数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget。
可选的,基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对读取的所述数据进行恢复,包括:所述主控单元按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所述主控单元判断所比较的数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复。
可选的,当所述主控单元判断所比较的步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复,进一步为:执行结果为数据恢复失败时,重新计算TimeBudget,并继续比较预定顺序中下一步骤的TimeCredit和所述重新计算的TimeBudget,当所比较的步骤的TimeCredit大于等于所述数据读取命令的TimeBudget时,继续比较下一步骤的TimeCredit和所述数据读取命令的TimeBudget。
可选的,所述主控单元执行所述数据恢复结果为数据恢复失败时,所述主控单元重新计算TimeBudget,并继续根据预定顺序中下一数据恢复步骤的TimeCredit和所述重新计算的TimeBudget判断是否执行所述下一数据恢复步骤。
本申请上述实施例通过通过事先对读IO命令打上时间戳,在进入数据恢复流程时,根据该IO命令的剩余可停留时间,来选择性执行数据恢复流程的不同步骤,从而达到在SSD的数据读取过程中控制IO时延上限,降低长尾时延(long tail latency)的目的。
附图说明
为了更清楚地说明本申请实施例或背景技术中的技术方案,下面将对本申请实施例或背景技术中所需要使用的附图进行说明。
图1示出了本发明实施例中的一种SSD数据读取方法流程;
图2示出了本发明实施例中的一种SSD示例;
图3示出了本发明实施例中的一种SSD主控单元结构图;
图4示出了本发明实施例中的一种SSD数据恢复方法流程;
图5示出了本发明实施例中的另一种SSD数据恢复方法流程。
具体实施方式
现有技术目前在降低长尾时延的处理主要都是集中在SSD的前后端命令调度上,而本发明实施例主要是针对Flash恢复流程的改进来降低长尾时延。为了便于对发明的理解,下面先对本发明实施例中的一些相关参数进行介绍。
全局时钟:SSD内通常维持有一个全局时钟,该时钟本质上为一个计数器,其值随着时间增加而增加,当计数达到最大值时达到饱和并自动回零重新计数,其计数值范围确保不会在一个IO命令的最大时延内不会由于取值饱和而回零两次。例如:可以将该时钟最大值范围取为120秒。
时间戳:当SSD接收到一个第三方设备发送的IO命令,通常会对该IO命令标记一个“时间戳”信息,该时间戳实际上为接收到该命令时的全局时钟值。这个时间戳信息将伴随着该IO命令在SSD内执行的整个生命周期。
当前停留时间:当前实时的全局时钟值,与时间戳的差值,为该命令在SSD内的停留时间。
命令停留时间上限:SSD内对于IO命令还存在一个允许的命令停留时间上限,即IO命令最多能在SSD内停留的时间,超过这个时间则命令无法被执行。
TimeBudget:TimeBudget为IO命令在SSD中的剩余可停留时间,可以通过IO命令停留时间上限与该命令在SSD中已“停留时间”的差值来计算获取,也可以通过其他多种方式来获取,如通过全局时钟值、时间戳与命令停留时间上限来获取,或者通过计时器来获取。
TimeCredit:SSD中通常包括主控单元和存储单元成,在SSD中,主控单元会对从存储单元中读取的数据进行恢复,数据的恢复流程可分为多个可独立执行的恢复步骤。这些恢复步骤根据存储单元或SSD的不同,而存在不同。例如,对于Toshiba的BiCS3 Flash,可以将数据恢复流程分为3个可以独立执行的步骤:步骤1:Offset 1 Shift-Read+LDPCHardDecoding/SoftDecoding;步骤2:Read Retry+LDPC HardDecoding;步骤3:RAIDRecovery。对于不同的SSD,其数据恢复流程的步骤和具体执行内容都不尽相同,在此不一一例举。SSD通常会事先为每一个恢复步骤设置预期所需的执行时间,称为该步骤的TimeCredit。不同步骤的TimeCredit可以相同也可以不同。
图1为本发明实施例的一种SSD数据读取方法流程图:
S101:接收数据读取命令。
具体可以为,SSD从外界第三方设备接收数据读取命令,数据读取命令可以首先被SSD中的主控单元所接收。其中第三方设备可以是任意的有数据读取需求的设备,如主机设备、终端设备等。
S102:从存储单元读取数据。
SSD中的数据读取方式可以有多种,例如,其读取过程可以为,主控单元根据数据读取命令查找该数据读取命令所要读取的数据所在的存储单元中的存储单元物理地址,并构造包括物理地址的所述数据读取命令;将所述包括物理地址的所述数据读取命令经调度后发送给存储单元,并从存储单元获取所要读取的数据。
S103:计算所述数据读取命令的TimeBudget;基于所述数据读取命令的TimeBudget和各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对数据进行恢复。
主控单元对从存储单元读取的数据进行数据恢复的目的,是为了恢复得到正确的没有bit错误的数据。通常主控单元中会存在一个或者多个可以独立执行的数据恢复步骤,这些数据恢复的执行内容可以是不相同的,且存在固定的执行顺序。
S104:发送所述数据。
SSD在S103中对读取的数据进行数据恢复,并将恢复得到的正确的数据发送给第三方设备。通常恢复成功的数据会和命令响应一同发送给第三方设备;如果数据恢复失败,则不返回数据,通常会返回其他的命令响应,以告知第三方设备数据读取失败,常见的响应有,失败响应。其中,有些情况下,失败响应又分为失败+Retry响应和失败+NOT RETRY响应。失败+Retry响应用于指示第三方设备可以再次重发所述数据读取命令;失败+NOT RETRY响应用于指示第三方设备不必再次重发所述数据读取命令。
主控单元计算所述数据读取命令的TimeBudget;基于所述数据读取命令的TimeBudget和各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤对数据进行恢复的具体步骤可以为图4所示:
S401,首先计算该读取命令当前的TimeBudget。
主控单元从存储单元读取到数据之后,计算所读取数据相对应的数据读取命令此时在SSD中的剩余可停留时间,即该读取命令当前的TimeBudget。
S402,按照SSD内规定的执行顺序,将计算得到的读取命令的TimeBudget与SSD中第一个数据恢复步骤的TimeCredit1进行对比。
其中不同的数据恢复步骤可以对应不同的TimeCredit,此处按照SSD中的执行顺序的第一个数据恢复步骤的预期所需的执行时间TimeCredit用TimeCredit1来表示,第二个数据恢复步骤的预期所需的执行时间TimeCredit用TimeCredit2来表示,依此类推。
S403,若第一数据恢复步骤的TimeCredit和TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第一数据恢复步骤的数据恢复结果为失败,则继续按顺序对比第二个恢复步骤的TimeCredit2和TimeBudget。
如果数据读取命令的TimeBudget不大于某一数据恢复步骤的TimeCredit,则说明当前数据读取命令在SSD中的剩余停留时间不足以完成此TimeCredit所对应的数据恢复步骤,即不满足当前数据恢复步骤的执行条件,如果数据读取命令的TimeBudget大于某一数据恢复步骤的TimeCredit,则说明当前数据读取命令在SSD中的剩余停留时间可以完成此TimeCredit所对应的数据恢复步骤,即满足当前数据恢复步骤的执行条件。
如果是第一数据恢复步骤的数据恢复结果为失败,则还需要重新计算所述数据读取命令的TimeBudget,然后再进行第二个恢复步骤的TimeCredit2和TimeBudget的比较。
S404,若第二数据恢复步骤的TimeCredit和数据读取命令的TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第二数据恢复步骤的数据恢复结果为失败,则继续按顺序对比下一个恢复步骤的TimeCredit和数据读取命令的TimeBudget,若对比结果均为不满足执行条件,即TimeBudget始终不大于任何恢复步骤的TimeCredit,或是数据恢复结果为失败,则一直对比到最后一个数据恢复步骤,比较最后一个恢复步骤的TimeCreditN和数据读取命令TimeBudget。
和S403一样,在此步骤中当前一个数据恢复步骤的比较结果为不符合执行条件时,不需要重新计算数据读取命令的TimeBudget,而当是因为前一个数据恢复步骤执行失败而需要继续比较下一个恢复步骤的TimeCredit和数据读取命令的TimeBudget,此时需要重新计算数据读取命令的TimeBudget。
S408,若S404的比较结果为TimeBudget不大于TimeCreditN,则不执行最后一个数据恢复步骤。此时,由于主控单元并没有执行完所有的数据恢复步骤,或者没有执行任何的数据恢复步骤,且没有恢复得到正确的没有bit错误的数据,因此此时可以向第三方设备返回失败响应,具体可以是返回失败+Retry响应。
S4021,若S402的比较结果为数据恢复命令的TimeBudget大于第一数据恢复步骤的TimeCredit1,则执行第一数据恢复步骤。
S4022,若S4021的第一数据恢复步骤执行数据恢复失败,则重新计算TimeBudget,并前往步骤S403。
S4031,若S403的比较结果为数据恢复命令的TimeBudget大于第二数据恢复步骤的TimeCredit2,则执行第二数据恢复步骤。
S4032,若S4031的第二数据恢复步骤执行数据恢复失败,则重新计算TimeBudget,并前往判断比较TimeBudget和下一个数据恢复步骤的TimeCredit。
S4041,若最后一个数据恢复步骤的的比较结果为数据恢复命令的TimeBudget大于最后一个数据恢复步骤的TimeCreditN,则执行最后一个数据恢复步骤。
S405,若S4041的最后一个数据恢复步骤N执行数据恢复失败,则判断是否已经遍历执行所有的数据恢复步骤。
S407,若S405的判断结果为已经遍历执行所有的数据恢复步骤,则向第三方设备返回失败响应,具体可以是失败+NOTRetry响应。
S408,若S405的判断结果为没有遍历执行所有的数据恢复步骤,则向第三方设备返回失败+RETRY响应。
S406,若S4021,S4031,S4041执行结果为成功,即任何一个执行的数据恢复步骤执行数据恢复成功,则返回成功响应,并返回恢复的数据。
上述数据恢复过程中,数据恢复步骤的执行顺序可以根据需要设置,其中数据恢复步骤可以是部分相同的,如第一数据恢复步骤和第二数据恢复步骤可以是相同的数据恢复步骤,设计人员可能因为认为某一步骤的数据恢复性能较好且耗时较短,希望在一次恢复失败后可以在重复执行该恢复步骤一次或预设次数,执行完预设次数且执行不成功再尝试其他恢复步骤。
图5为连续执行相同数据恢复步骤的一个示例图,其第一数据恢复步骤和第二数据恢复步骤相同,即当第一数据恢复步骤执行失败时,根据重新计算的TimeBudget判断是否能够再执行一次相同的数据恢复步骤。具体执行方法包括:
S501,首先计算该读取命令当前的TimeBudget。
主控单元从存储单元读取到数据之后,计算所读取数据相对应的数据读取命令此时在SSD中的剩余可停留时间,即该读取命令当前的TimeBudget。
S502,按照SSD内规定的执行顺序,将计算得到的读取命令的TimeBudget与SSD中第一个数据恢复步骤的TimeCredit1进行对比。
其中不同类型的数据恢复步骤可以对应不同的TimeCredit,此处按照SSD中的执行顺序的第一个数据恢复步骤和第二数据恢复步骤属于相同恢复步骤,因此预期所需的执行时间TimeCredit都用TimeCredit1来表示。
S503,若第一数据恢复步骤的TimeCredit和TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第一数据恢复步骤的数据恢复结果为失败,则继续按顺序对比第二个恢复步骤的TimeCredit1和TimeBudget。
如果是第一数据恢复步骤的数据恢复结果为失败,则还需要重新计算所述数据读取命令的TimeBudget,然后再进行第二个恢复步骤的TimeCredit1和TimeBudget的比较。
其中,若第一数据恢复步骤的TimeCredit和TimeBudget的对比结果为TimeBudget不大于TimeCredit,且第二数据恢复步骤和第一数据恢复步骤相同,则也可以通过比较两个数据恢复步骤是否相同来判断数据读取命令的TimeBudget是否满足执行第二个数据恢复步骤,而无须再次比较第二个恢复步骤的TimeCredit1和TimeBudget。
S504,若第二数据恢复步骤的TimeCredit和TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第二数据恢复步骤的数据恢复结果为失败,则继续按顺序对比第三个恢复步骤的TimeCredit2和TimeBudget。
如果是第二数据恢复步骤的数据恢复结果为失败,则还需要重新计算所述数据读取命令的TimeBudget,然后再进行第三个恢复步骤的TimeCredit2和TimeBudget的比较。
S505,若第三数据恢复步骤的TimeCredit和数据读取命令的TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第三数据恢复步骤的数据恢复结果为失败,则继续按顺序对比下一个恢复步骤的TimeCredit和数据读取命令的TimeBudget,若对比结果均为不满足执行条件,即TimeBudget始终不大于任何恢复步骤的TimeCredit,或是数据恢复结果为失败,则一直对比到最后一个数据恢复步骤,比较最后一个恢复步骤的TimeCreditN和数据读取命令TimeBudget。
和S504一样,在此步骤中当前一个数据恢复步骤的比较结果为不符合执行条件时,不需要重新计算数据读取命令的TimeBudget,而当是因为前一个数据恢复步骤执行失败而需要继续比较下一个恢复步骤的TimeCredit和数据读取命令的TimeBudget,此时需要重新计算数据读取命令的TimeBudget。
S509,若S505的比较结果为TimeBudget不大于TimeCreditN,则不执行最后一个数据恢复步骤。此时,由于主控单元并没有执行完所有的数据恢复步骤,或者没有执行任何的数据恢复步骤,且没有恢复得到正确的没有bit错误的数据,因此此时可以向第三方设备返回失败响应,具体的,可以是失败+Retry响应。
S5021,若S502的比较结果为数据恢复命令的TimeBudget大于第一数据恢复步骤的TimeCredit1,则执行第一数据恢复步骤。
S5022,若S5021的第一数据恢复步骤执行数据恢复失败,则重新计算TimeBudget,并前往步骤S503。
S5031,若S503的比较结果为数据恢复命令的TimeBudget大于第二数据恢复步骤的TimeCredit1,则再次执行第二数据恢复步骤。
S5032,若S5031的第二数据恢复步骤执行结果仍为失败,则重新计算TimeBudget,并前往判断比较TimeBudget和第三数据恢复步骤的TimeCredit。
S5041,若S504的比较结果为数据恢复命令的TimeBudget大于第三数据恢复步骤的TimeCredit2,则执行第三数据恢复步骤。
S5042,若S5041的第三数据恢复步骤执行数据恢复失败,则重新计算TimeBudget,并前往判断比较TimeBudget和下一个数据恢复步骤的TimeCredit。
S5051,若最后一个数据恢复步骤的的比较结果为数据恢复命令的TimeBudget大于最后一个数据恢复步骤的TimeCreditN,则执行最后一个数据恢复步骤。
S506,若S5051的最后一个数据恢复步骤N执行数据恢复失败,则判断是否已经遍历执行所有的数据恢复步骤。
S508,若S506的判断结果为已经遍历执行所有的数据恢复步骤,则向第三方设备返回失败响应,具体的可以是失败+NOTRetry响应。
S509,若S506的判断结果为没有遍历执行所有的数据恢复步骤,则向第三方设备返回失败+RETRY响应。
S507,若S5021,S5031,S5041,S5051执行结果为成功,即任何一个执行的数据恢复步骤执行数据恢复成功,则返回成功响应,并返回恢复的数据。
在图5的示例中,设置连续判断两次相同的数据恢复步骤,而图5只是一个示例,所述相同的数据恢复步骤的次数可以是其它数值,且执行的位置也可以是其它任意的位置,如数据恢复步骤执行顺序中的第3、第4的执行位置上,所述相同的数据恢复步骤也可以是不连续的。
本申请上述实施例通过通过事先对数据读取命令打上时间戳,在进入数据恢复流程时,根据该读取命令的剩余可停留时间,来选择性执行数据恢复流程的不同步骤,从而达到在SSD的数据读取过程中控制读取命令时延上限,减少不必要的耗时,提升命令响应时间,以及数据读取时间,降低长尾时延(long tail latency)的目的。
图2为本发明实施例的一种SSD的结构图,SSD200可以包括主控单元201,存储单元202,。其中存储单元202可以是Flash芯片也可以是Dram芯片等各种不同类型的固态电子装置。
主控单元201:用于从外部第三方设备接收数据读取命令,并根据数据读取命令从存储单元202读取数据;计算所述数据读取命令的TimeBudget;基于所述数据读取命令的TimeBudget和各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤进行数据恢复。
存储单元202,用于将需要读取的数据发送给主控单元201。
主控单元201根据数据读取命令从存储单元202读取数据的方式有多种,在此不做限定。通常,可以采用物理地址读取的方式,主要方式为,主控单元201接收数据读取命令,根据数据读取命令查找该数据读取命令所要读取的数据所在的存储单元202中的存储单元物理地址,并构造包括物理地址的所述数据读取命令;将所述包括物理地址的所述数据读取命令经调度后发送给存储单元202,并从存储单元202获取所述需读取的数据,然后主控单元201对上述从存储单元202中读取的数据进行恢复。
SSD中的数据读取过程还可以为,存储单元202从主控单元201收数据读取命令,存储单元202根据数据读取命令将存储单元202内部的数据读出,存放在存储单元202内部的缓存中,主控单元201将存储单元202缓存内的数据读取到主控单元201内部,然后主控单元201对上述从存储单元202中读取的数据进行恢复。
其中主控单元201对所读取的数据进行恢复的具体数据恢复过程,具体可以为:
主控单元201从存储单元读取到数据之后,计算所读取数据相对应的数据读取命令此时在SSD中的剩余可停留时间,即该读取命令当前的TimeBudget。
主控单元201按照SSD内规定的数据恢复步骤执行顺序,将计算得到的读取命令的TimeBudget与SSD中第一个数据恢复步骤的TimeCredit1进行对比;其中不同的数据恢复步骤可以对应不同的TimeCredit,此处按照SSD中的执行顺序的第一个数据恢复步骤的预期所需的执行时间TimeCredit用TimeCredit1来表示,第二个数据恢复步骤的预期所需的执行时间TimeCredit用TimeCredit2来表示,依此类推。
若第一数据恢复步骤的TimeCredit和TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第一数据恢复步骤的数据恢复结果为失败,则主控单元201继续按顺序对比第二个恢复步骤的TimeCredit2和TimeBudget;如果数据读取命令的TimeBudget不大于某一数据恢复步骤的TimeCredit,则说明当前数据读取命令在SSD中的剩余停留时间不足以完成此TimeCredit所对应的数据恢复步骤,即不满足当前数据恢复步骤的执行条件,如果数据读取命令的TimeBudget大于某一数据恢复步骤的TimeCredit,则说明当前数据读取命令在SSD中的剩余停留时间可以完成此TimeCredit所对应的数据恢复步骤,即满足当前数据恢复步骤的执行条件。
如果是第一数据恢复步骤的数据恢复结果为失败,则主控单元201还需要重新计算所述数据读取命令的TimeBudget,然后再进行第二个恢复步骤的TimeCredit2和TimeBudget的比较。
若第二数据恢复步骤的TimeCredit和数据读取命令的TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第二数据恢复步骤的数据恢复结果为失败,则主控单元201继续按顺序对比下一个恢复步骤的TimeCredit和数据读取命令的TimeBudget,若对比结果均为不满足执行条件,即TimeBudget始终不大于任何恢复步骤的TimeCredit,或是数据恢复结果为失败,则主控单元201一直对比到最后一个数据恢复步骤,比较最后一个恢复步骤的TimeCreditN和数据读取命令TimeBudget。
若最后一个数据恢复步骤的比较结果为TimeBudget不大于TimeCreditN,则主控单元201不执行最后一个数据恢复步骤。此时,由于主控单元并没有执行完所有的数据恢复步骤,或者没有执行任何的数据恢复步骤,且没有恢复得到正确的没有bit错误的数据,因此此时主控单元201可以向第三方设备返回失败+Retry响应。
若最后一个数据恢复步骤的的比较结果为数据恢复命令的TimeBudget大于最后一个数据恢复步骤的TimeCreditN,则主控单元201执行最后一个数据恢复步骤;若最后一个数据恢复步骤N执行数据恢复失败,则主控单元201判断是否已经遍历执行所有的数据恢复步骤;若判断结果为已经遍历执行所有的数据恢复步骤,则向第三方设备返回失败+NOTRETRY响应;若的判断结果为没有遍历执行所有的数据恢复步骤,则主控单元201向第三方设备返回失败+RETRY响应。
若任意一个数据恢复步骤的执行结果为成功,则主控单元201向第三方设备返回成功响应,并返回恢复的数据。
上述数据恢复过程中,数据恢复步骤的执行顺序可以根据需要设置,其中数据恢复步骤可以是部分相同的,如第一数据恢复步骤和第二数据恢复步骤可以是相同的数据恢复步骤,设计人员可能因为认为某一步骤的数据恢复性能较好且耗时较短,希望在一次恢复失败后可以在重复执行该恢复步骤一次或预设次数,执行完预设次数且执行不成功再尝试其他恢复步骤。
其中主控单元201对所读取的数据进行恢复的具体数据恢复过程中,也可能存在部分数据恢复步骤为相同类型的数据恢复步骤的情况。
本申请上述实施例通过通过事先对数据读取命令打上时间戳,在进入数据恢复流程时,根据该读取命令的剩余可停留时间,来选择性执行数据恢复流程的不同步骤,从而达到在SSD的数据读取过程中控制读取命令时延上限,减少不必要的耗时,提升命令响应时间,以及数据读取时间,降低长尾时延(long tail latency)的目的。
图3为本发明实施例的一种SSD主控装置的结构图,其中SSD主控装置300包括:第三方设备接口模块301,数据读取模块302,数据恢复模块303。
第三方设备接口模块301,用于从第三方设备310接收数据读取命令,并将数据读取命令发送给数据读取模块302。
数据读取模块302,用于从第三方设备接口模块接收数据读取命令,根据数据读取命令查找该数据读取命令所要读取的数据所在的存储单元320中的存储单元物理地址,并构造包括物理地址的所述数据读取命令;将所述包括物理地址的所述数据读取命令经调度后发送给存储单元320,并从存储单元320获取所需要读取的数据,并将所述数据发送给数据恢复模块303。
数据恢复模块303,用于从数据读取模块302接收从存储单元320读出取得数据,并计算所述数据读取命令的TimeBudget,基于所述数据读取命令的TimeBudget和各个数据恢复步骤的TimeCredit选择可执行的数据恢复步骤进行数据恢复。并根据具体的数据恢复步骤执行情况向第三方设备接口模块301返回相应的命令响应,或命令响应和数据,或其他读取结果相关的信息,并由第三方设备接口模块将命令响应,或命令响应和数据发送给第三方设备。其中所返回的信息具体可以是:数据恢复成功则返回数据和成功响应,若数据恢复失败则根据具体情况返回不同类型的失败响应用于指代数据读取的结果。
其中数据在数据恢复模块303中的具体数据恢复过程,为:
数据恢复模块302计算该数据读取命令当前的TimeBudget。
数据恢复模块302从数据读取模块303接收到从存储单元320读取的数据之后,计算所读取数据相对应的数据读取命令此时在SSD中的剩余可停留时间,即该读取命令当前的TimeBudget。
数据恢复模块302按照SSD内规定的数据恢复步骤执行顺序,将计算得到的读取命令的TimeBudget与SSD中第一个数据恢复步骤的TimeCredit1进行对比;其中不同的数据恢复步骤可以对应不同的TimeCredit,此处按照SSD中的执行顺序的第一个数据恢复步骤的预期所需的执行时间TimeCredit用TimeCredit1来表示,第二个数据恢复步骤的预期所需的执行时间TimeCredit用TimeCredit2来表示,依此类推。
若第一数据恢复步骤的TimeCredit和TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第一数据恢复步骤的数据恢复结果为失败,则数据恢复模块302继续按顺序对比第二个恢复步骤的TimeCredit2和TimeBudget;如果数据读取命令的TimeBudget不大于某一数据恢复步骤的TimeCredit,则说明当前数据读取命令在SSD中的剩余停留时间不足以完成此TimeCredit所对应的数据恢复步骤,即不满足当前数据恢复步骤的执行条件,如果数据读取命令的TimeBudget大于某一数据恢复步骤的TimeCredit,则说明当前数据读取命令在SSD中的剩余停留时间可以完成此TimeCredit所对应的数据恢复步骤,即满足当前数据恢复步骤的执行条件。
如果是第一数据恢复步骤的数据恢复结果为失败,则数据恢复模块302还需要重新计算所述数据读取命令的TimeBudget,然后再进行第二个恢复步骤的TimeCredit2和TimeBudget的比较。
若第二数据恢复步骤的TimeCredit和数据读取命令的TimeBudget的对比结果为TimeBudget不大于TimeCredit,或者第二数据恢复步骤的数据恢复结果为失败,则数据恢复模块302继续按顺序对比下一个恢复步骤的TimeCredit和数据读取命令的TimeBudget,若对比结果均为不满足执行条件,即TimeBudget始终不大于任何恢复步骤的TimeCredit,或是数据恢复结果为失败,则数据恢复模块302一直对比到最后一个数据恢复步骤,比较最后一个恢复步骤的TimeCreditN和数据读取命令TimeBudget。
若最后一个数据恢复步骤的比较结果为TimeBudget不大于TimeCreditN,则数据恢复模块302不执行最后一个数据恢复步骤。此时,由于数据恢复模块302并没有执行完所有的数据恢复步骤,或者没有执行任何的数据恢复步骤,且没有恢复得到正确的没有bit错误的数据,因此此时数据恢复模块302可以通过第三方设备接口301向第三方设备310返回失败响应,具体可以为失败+Retry响应。
若最后一个数据恢复步骤的的比较结果为数据恢复命令的TimeBudget大于最后一个数据恢复步骤的TimeCreditN,则数据恢复模块302执行最后一个数据恢复步骤;若最后一个数据恢复步骤N执行数据恢复失败,则数据恢复模块302判断是否已经遍历执行所有的数据恢复步骤;若判断结果为已经遍历执行所有的数据恢复步骤,则通过第三方设备接口301向第三方设备310返回失败响应,具体可以为失败+NOTRetry响应;若的判断结果为没有遍历执行所有的数据恢复步骤,则数据恢复模块302通过第三方设备接口301向第三方设备310返回失败+RETRY响应。
若任意一个数据恢复步骤的执行结果为成功,则数据恢复模块302通过第三方设备接口301向第三方设备310返回成功响应,并返回恢复的数据。
其中数据恢复模块302对所读取的数据进行恢复的具体数据恢复过程中,也可能存在部分数据恢复步骤为相同类型的数据恢复步骤的情况。
上述数据恢复过程中,数据恢复步骤的执行顺序可以根据需要设置,其中数据恢复步骤可以是部分相同的,如第一数据恢复步骤和第二数据恢复步骤可以是相同的数据恢复步骤,设计人员可能因为认为某一步骤的数据恢复性能较好且耗时较短,希望在一次恢复失败后可以在重复执行该恢复步骤一次或预设次数,执行完预设次数且执行不成功再尝试其他恢复步骤。
本申请上述实施例通过通过事先对数据读取命令打上时间戳,在进入数据恢复流程时,根据该读取命令的剩余可停留时间,来选择性执行数据恢复流程的不同步骤,从而达到在SSD的数据读取过程中控制读取命令时延上限,减少不必要的耗时,提升命令响应时间,以及数据读取时间,降低长尾时延(long tail latency)的目的。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (13)
1.一种固态硬盘SSD数据恢复方法,其特征在于,所述方法包括:
接收数据读取命令;
根据所述数据读取命令读取数据;
计算所述数据读取命令在SSD中的剩余可停留时间TimeBudget;
基于所述数据读取命令在SSD中的剩余可停留时间TimeBudget和所述SSD中预置的各个数据恢复步骤的预期执行时间TimeCredit的对比结果,选择可执行的数据恢复步骤对读取的所述数据进行恢复,所述对比结果为按照各个数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget大小的结果;
其中,所述SSD中预置有一个或多个数据恢复步骤。
2.根据权利要求1所述的方法,其特征在于,通过计算在SSD中的允许停留时间上限与所述数据读取命令在所述SSD中已停留时间的差值,来获得所述数据读取命令在SSD中的剩余可停留时间TimeBudget。
3.根据权利要求1所述的方法,其特征在于,所述各个数据恢复步骤中存在部分数据恢复步骤是相同的。
4.根据权利要求1-3任一项所述的方法,其特征在于,
所述基于所述数据读取命令在SSD中的剩余可停留时间TimeBudget和所述SSD中预置的各个数据恢复步骤的预期执行时间TimeCredit的对比结果,选择可执行的数据恢复步骤对读取的所述数据进行恢复包括:
按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所比较的数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述执行所述数据恢复步骤的结果为数据恢复失败时,重新计算所述数据读取命令的TimeBudget,并继续根据预定顺序中下一数据恢复步骤的TimeCredit和所述重新计算的TimeBudget判断是否执行所述下一数据恢复步骤。
6.根据权利要求4所述的方法,其特征在于,所述按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,包括:
当比较到最后一个数据恢复步骤,且所述最后一个数据恢复步骤的TimeCredit大于所述数据读取命令的TimeBudget时,返回失败+Retry响应。
7.根据权利要求1-3任一项所述的方法,其特征在于,不同的数据恢复步骤具有不同的TimeCredit。
8.一种SSD主控装置,其特征在于,所述SSD主控装置包括:第三方设备接口模块,数据读取模块,数据恢复模块;
所述第三方设备接口模块,用于接收数据读取命令,发送所述数据读取命令给数据读取模块;
所述数据读取模块,用于从所述第三方设备接口模块接收所述数据读取命令,并基于所述数据读取命令从SSD的存储单元读取数据,发送给所述数据恢复模块;
所述数据恢复模块,用于接收所述数据读取模块发送的数据,并计算所述数据读取命令在SSD中的剩余可停留时间TimeBudget,基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的预期执行时间TimeCredit的对比结果,选择可执行的数据恢复步骤对读取的所述数据进行恢复,所述对比结果为按照各个数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget大小的结果;
其中,所述SSD主控装置中设置有一个或多个数据恢复步骤。
9.根据权利要求8所述的SSD主控装置,其特征在于,所述数据恢复模块通过计算在SSD中的允许停留时间上限与所述数据读取命令在所述SSD中已停留时间的差值,来获得所述数据读取命令在SSD中的剩余可停留时间TimeBudget。
10.根据权利要求8所述的主控装置,其特征在于,所述数据恢复模块基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit的对比结果,选择可执行的数据恢复步骤对读取的所述数据进行恢复,包括:
所述数据恢复模块按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所比较的数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复。
11.一种SSD,其特征在于,所述SSD包括:主控单元和存储单元;
所述存储单元,用于存储数据;
所述主控单元,用于接收数据读取命令,根据所述数据读取命令从所述存储单元读取数据;并计算所述数据读取命令在SSD中的剩余可停留时间TimeBudget;基于所述数据读取命令的TimeBudget和所述主控单元中预置的各个数据恢复步骤的预期执行时间TimeCredit的对比结果,选择可执行的数据恢复步骤对读取的所述数据进行恢复,所述对比结果为按照各个数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget大小的结果;
其中,所述主控单元中预置有一个或多个数据恢复步骤。
12.根据权利要求11所述的SSD,其特征在于,基于所述数据读取命令的TimeBudget和所述SSD中预置的各个数据恢复步骤的TimeCredit的对比结果,选择可执行的数据恢复步骤对读取的所述数据进行恢复,包括:
所述主控单元按照各数据恢复步骤间预定的执行顺序比较所述各个数据恢复步骤的TimeCredit和所述数据读取命令的TimeBudget,当所述主控单元判断所比较的数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复。
13.根据权利要求12所述的SSD,其特征在于,当所述主控单元判断所比较的数据恢复步骤的TimeCredit小于所述数据读取命令的TimeBudget时,执行所述数据恢复步骤进行数据恢复,进一步为:执行结果为数据恢复失败时,重新计算TimeBudget,并继续比较预定顺序中下一数据恢复步骤的TimeCredit和所述重新计算的TimeBudget以判断是否执行所述下一数据恢复步骤。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2018/095572 WO2020010604A1 (zh) | 2018-07-13 | 2018-07-13 | 一种ssd数据读取方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112424742A CN112424742A (zh) | 2021-02-26 |
CN112424742B true CN112424742B (zh) | 2022-06-14 |
Family
ID=69143211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880095631.2A Active CN112424742B (zh) | 2018-07-13 | 2018-07-13 | 一种ssd数据读取方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112424742B (zh) |
WO (1) | WO2020010604A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114691417A (zh) * | 2022-04-01 | 2022-07-01 | 深圳大普微电子科技有限公司 | 数据恢复方法、装置及其固态硬盘 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789368A (zh) * | 2012-06-21 | 2012-11-21 | 记忆科技(深圳)有限公司 | 一种固态硬盘及其数据管理方法、系统 |
CN103744620A (zh) * | 2013-12-31 | 2014-04-23 | 百度在线网络技术(北京)有限公司 | 一种用于数据存储的方法与设备 |
CN107391317A (zh) * | 2017-09-14 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种数据恢复的方法、装置、设备及计算机可读存储介质 |
CN107451012A (zh) * | 2014-07-04 | 2017-12-08 | 华为技术有限公司 | 一种数据备份方法及流计算系统 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101281788A (zh) * | 2007-04-06 | 2008-10-08 | 群联电子股份有限公司 | 闪存系统及其控制方法 |
CN102323913B (zh) * | 2011-09-01 | 2014-08-20 | 记忆科技(深圳)有限公司 | 固态硬盘的数据读出方法及系统 |
CN102662608B (zh) * | 2012-03-30 | 2015-11-25 | 华为技术有限公司 | 一种降低读延时的方法及装置 |
CN103218271B (zh) * | 2013-04-18 | 2015-09-09 | 华为技术有限公司 | 一种数据纠错方法及装置 |
US10671317B2 (en) * | 2016-05-25 | 2020-06-02 | Samsung Electronics Co., Ltd. | Block cleanup: page reclamation process to reduce garbage collection overhead in dual-programmable NAND flash devices |
CN106293511B (zh) * | 2016-07-26 | 2018-12-04 | 北京理工大学 | 一种面向连续数据存储的动态局部并行数据布局方法 |
CN107291382B (zh) * | 2017-05-19 | 2020-04-28 | 记忆科技(深圳)有限公司 | 一种固态硬盘降低读响应延迟的方法及固态硬盘 |
-
2018
- 2018-07-13 WO PCT/CN2018/095572 patent/WO2020010604A1/zh active Application Filing
- 2018-07-13 CN CN201880095631.2A patent/CN112424742B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102789368A (zh) * | 2012-06-21 | 2012-11-21 | 记忆科技(深圳)有限公司 | 一种固态硬盘及其数据管理方法、系统 |
CN103744620A (zh) * | 2013-12-31 | 2014-04-23 | 百度在线网络技术(北京)有限公司 | 一种用于数据存储的方法与设备 |
CN107451012A (zh) * | 2014-07-04 | 2017-12-08 | 华为技术有限公司 | 一种数据备份方法及流计算系统 |
CN107391317A (zh) * | 2017-09-14 | 2017-11-24 | 郑州云海信息技术有限公司 | 一种数据恢复的方法、装置、设备及计算机可读存储介质 |
Non-Patent Citations (2)
Title |
---|
《High performance DRAM architecture with split row buffer》;M.-K.Lee等;《Electronics Letters》;20161031;第1844-1845页 * |
《应用于固态硬盘的RAID技术的研究》;潘文;《万方学位论文平台》;20150730;第20-45页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112424742A (zh) | 2021-02-26 |
WO2020010604A1 (zh) | 2020-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11151027B2 (en) | Methods and apparatuses for requesting ready status information from a memory | |
US11023167B2 (en) | Methods and apparatuses for executing a plurality of queued tasks in a memory | |
EP2811392B1 (en) | Method and device for reducing read delay | |
US10019196B2 (en) | Efficient enforcement of command execution order in solid state drives | |
EP3474282A2 (en) | Method and apparatus for adjusting demarcation voltages based on cycle count metrics | |
CN109558457B (zh) | 一种数据写入方法、装置、设备及存储介质 | |
WO2017039795A1 (en) | Systems and methods for verification of code resiliency for data storage | |
US20170288705A1 (en) | Shared memory with enhanced error correction | |
US20190341120A1 (en) | Method for maximizing power efficiency in memory interface block | |
JP2010532061A (ja) | フラッシュメモリシステムにおける段階的ガーベッジコレクションおよびハウスキーピング操作 | |
EP3807882A1 (en) | Adaptive watchdog in a memory device | |
US11237760B2 (en) | Measuring performance metrics for data storage devices | |
CN103218271A (zh) | 一种数据纠错方法及装置 | |
CN105022673A (zh) | 一种面向数据并行计算容错的快速并行复算方法 | |
CN106406750A (zh) | 一种数据操作方法及系统 | |
CN112424742B (zh) | 一种ssd数据读取方法和装置 | |
TWI512749B (zh) | 指明錯誤效能之讀取命令 | |
US20120017116A1 (en) | Memory control device, memory device, and memory control method | |
CN102629223A (zh) | 一种数据修复方法及装置 | |
WO2015077625A1 (en) | Adaptive erase of a storage device | |
TWI564809B (zh) | 單一中斷服務常式執行緒中處理關連於多個請求的返回實體的方法以及使用該方法的裝置 | |
US10891179B2 (en) | Data storage device with deadlock recovery capabilities | |
WO2010013437A1 (ja) | 誤り訂正機能付きコントローラ、誤り訂正機能付き記憶装置、及び誤り訂正機能付きシステム | |
CN116755639A (zh) | 闪存接口的性能评估方法及相关装置 | |
CN115080305A (zh) | 一种基于重复读取的数据恢复方法、系统及电子设备 |
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 |