CN116235138A - 一种应用于固态硬盘ssd的数据读取方法及相关装置 - Google Patents
一种应用于固态硬盘ssd的数据读取方法及相关装置 Download PDFInfo
- Publication number
- CN116235138A CN116235138A CN202080103398.5A CN202080103398A CN116235138A CN 116235138 A CN116235138 A CN 116235138A CN 202080103398 A CN202080103398 A CN 202080103398A CN 116235138 A CN116235138 A CN 116235138A
- Authority
- CN
- China
- Prior art keywords
- read
- ssd
- value
- write
- pressure value
- 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.)
- Pending
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)
- Digital Magnetic Recording (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请实施例公开了一种应用于固态硬盘SSD的数据读取方法、装置及固态硬盘SSD,以提高固态硬盘的性能。其中,提供了一种数据读取方法,可包括:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前执行的写操作或擦除操作,以提高SSD的性能。
Description
本申请涉及存储领域,尤其涉及一种应用于固态硬盘SSD的数据读取方法及相关装置。
固态硬盘(Solid State Disk,SSD)是一种广泛应用的存储设备,主要由控制器和存储单元构成。其中,存储单元一般包括NAND Flash等多个闪存颗粒,每个闪存颗粒内部包括一个或者多个裸片(die),每个die包括多个物理块(block),block的容量大小一般在数百KB至数MB之间,每个block包括多个页(page),page的容量大小一般为4KB的倍数(如4KB或者16KB)。SSD通过闪存转换层(Flash Translation Layer,FTL)将数据均匀分布存储在各个NAND Flash上。一般情况下,在NAND Flash上可以执行读、写、擦等操作用于读取或存入数据,但是在同一个NAND Flash上读、写、擦除操作不能同时执行。
如果NAND Flash上正在执行一个写或擦除操作,那么如果一个新的读操作要执行时,可以:1)等待NAND Flash上写或擦除操作执行完;2)将暂停(Suspend)操作下发到NAND Flash上,NAND Flash接收到暂停操作后,会暂停正在执行的写或擦除操作,然后执行读操作。被暂停执行的写或擦除操作要恢复执行,主机可以下发恢复(Resume)操作到NAND Flash上,会恢复执行被暂停执行的写或擦操作。但是,由于这些操作的执行时间差异较大,所以如果对一个写或擦除操作过程中下发的读操作总数量不作限制,只关注到对读时延的影响,这样对写和擦除操作的影响较大。又如果对一个写或擦除操作过程中下发的读操作总数量只限定一个固定的阈值,只关注到对写和擦除操作的影响,这样若等待执行的读操作数量较多时,对读操作的影响较大。
因此,如何提升NAND Flash执行读、写和擦除操作的效率,提高SSD的性能,是本申请亟需解决的问题。
发明内容
本申请实施例提供一种应用于固态硬盘SSD的数据读取方法、装置及固态硬盘SSD,以提高固态硬盘的性能。
第一方面,本申请实施例提供了一种应用于固态硬盘SSD的数据读取方法,可包括:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前执行的写操作或擦除操作。
在本申请实施例中,首先获取SSD的特征值,该特征值包括读写比例值或压力值中的至少一个,由于读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值用于指示所述SSD中等待执行的读操作的数量。因此,通过特征值,可以确定SSD当前执行读、写或擦除操作的效率和压力。若效率较低,压力较大,可以根据获取到的读写比例值或压力值中的至少一个,动态调整一个第一操作过程中允许插入读操 作的数量,以提升NAND Flash执行读、写和擦除操作的效率,进而提高SSD的性能。
在一种可能实现的方式中,所述基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,包括:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。在一个写操作或者擦除操作过程中,SSD每执行一个读操作后,都可以记一次数,以记录到此为止插入的读操作数量。因此,在实施本申请实施例时,通过直接配置一个第一操作过程中允许插入读操作的第一阈值(第一阈值可以为最大数量)后,统计被插入的读操作数量,在达到允许插入的最大数量后,禁止再次插入读操作,以此实现调整读操作数量的目的。通过这种方式可以直观方便的调整允许插入读操作数量,进而提高了SSD的性能。
在一种可能实现的方式中,所述基于所述特征值,动态调整一个第一操作过程中允许执行读操作的数量,包括:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。在本申请实施例中,暂停操作用于在一个第一操作过程中,暂停该第一操作,然后暂停操作使用后在第一操作中插入读操作。因此,本申请实施例可以通过调整暂停操作的约束条件,如:调整暂停操作的使用频率、调整暂停操作的使用数量等,从而动态的调整使用暂停操作后,允许插入读操作的最大数量。
在一种可能实现的方式中,所述基于所述特征值,获取与所述特征值对应的暂停操作策略,包括:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。在本申请实施例中,获取该暂停操作策略的方式可以是从预先存储的映射表中,直接根据该特征值确定。从预存储的映射关系表中确定暂停操作策略,可以快捷方便的节省计算步骤,大大的缩短了获取到暂停操作策略的时间,同时也提高了调整设置允许插入读操作数量时的效率,进而提高了SSD的性能。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。在一个第一操作过程中,本申请实施例通过直接限制暂停操作使用的第二阈值,该第二阈值可以为最大数量,即,通过限制打断一个第一操作执行的次数,进而可以限制允许插入读操作最大数量,从而提高了SSD的性能。例如:限制允许插入读操作最大数量,读操作就不会频繁打断写操作或者擦除操作的执行,因为这时性能(每秒读写次数(Input/Output Operations Per Second,IOPS))主要的瓶颈是写IOPS,所以减小阈值,就能够减少对写操作的打断,SSD的IOPS性能就会较高。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。本申请实施例通过配置发送一次所述暂停操作后允许插入读操作的第三阈值,该第三阈值可以为最大数量,从而控制一个第一操作过程中允许发送所述读操作数量。即通过控制每下发一次暂停操作,控制插入的读操作最大数量,进而控制暂停一次的读操作总的执行时间,进而减少每次暂停操作对第一操作打断的时间,从而提高SSD的性能。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。实施本申请实施例,在读写比例值越大情况下,说明执行读操作的占比越高,因此,这时SSD的IOPS性能主要的瓶颈是写IOPS,此时允许插入读操作的最大数量设置较小的阈值,那么不会有过多的读操作频繁打断写操作的执行。所以减小插入读操作的最大数量,可以能够减少对写操作的打断,从而提高SSD的性能。
在一种可能实现的方式中,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。在本申请实施例中,压力值越大,说明等待执行的度操作数量越多。此时,需要降低允许插入读操作的最大数量,防止过多的读操作会打扰写操作的执行。如果压力值较小,说明计算设备上更专注读操作的读延时,这时应该配置一个较大的允许发送所述暂停操作的最大数量的阈值,允许读操作尽可能多的打断写操作或擦除操作,让读操作尽快执行完成。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比,若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。在本申请实施例中,同时获取到读写比例值和压力值的情况下,若压力值大于第一压力值(如:压力值足够大),此时若想快速提高NAND Flash执行读、写和擦除操作的效率,还需要根据SSD执行的读写比例值,适应性的降低允许插入读操作的第一阈值,减少读操作对第一操作的打断,以便提高SSD的IOPS性能。如果压力值小于第一压力值(压力值足够小),说明此时正在等待的读操作数量不多,计算设备上更专注读操作的读延时,这时可以配置一个较大的允许插入读操作的第一阈值,允许读操作尽可能多的打断写操作或擦除操作,让读操作尽快执行完成。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。实施本申请实施例,在读写比例值越大情况下,说明执行读操作的占比越高,因此,这时SSD的IOPS性能主要的瓶颈是写IOPS,此时允许发送暂停操作的最大数量设置较小的阈值,那么读操作就不会频繁打断写操作的执行。所以减小阈值,就能够减少对写操作的打断,IOPS性能就会较高。例如,当许发送暂停操作的最大数量设置为0时,读操作就不会打扰写操作的进行,此时专注与写操作,反之,读操作和写操作的比例关系比值越小,说明写操作的占比越高,此时SSD的性能更依赖于读操作的执行,所以将允许发送暂停操作的最大数量设置较大的阈值,那么读操作就可以频繁打断写操作的执行,就能够让读操作更快的执行,SSD的性能就会较高。
在一种可能实现的方式中,当所述特征值包括所述压力值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。在本申请实施例中,压力值越大,说明计算设备上更关注IOPS性能,因此在压力值较大的时候,发送所述暂停操作的最大数量可以相应的减小。如果压力值较小,说明计算设备上更专注读操作的读延时,这时应该配置一个较大的允许发送所述暂停操作的最大数量,允许读操作尽可能多的打断写操作或擦除操作,让读操作尽快执行完成。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。在本申请实施例中,如果压力值大于第二压力值,说明计算设备上更关注SSD的IOPS性能,因此在压力值较大的时候按照SSD上读I/O和写I/O的比例来配置允许发送所述暂停操作的第二阈值,减少读操作对第一操作的打断。如果压力值小于所述第二压力值,说明计算设备上更专注读操作的读延时,这时应该配置一个较大的允许发送所述暂停操作的第二阈值,允许读操作尽可能多的打断写操作或擦除操作,让读操作尽快执行完成。
在一种可能实现的方式中,所述SSD包括控制器,所述SSD与计算设备连接;所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述获取所述SSD的特征值包括:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。在本申请实施例中,SSD的读写比例是根据SSD执行的读操作数量和SSD执行的写操作数量确定的,由于并不好直接统计SSD执行的写操作数量。所以,此处SSD执行写操作数量可以用执行SSD中控制器生成的读操作(第二读操作)的数量(计算设备生成的读操作并不计算在内)指示。而且,SSD执行读操作数量可以用执行计算设备生成的读操作(第一读操作)的数量(SSD自己生成的读操作并不计算在内)指示。因此,所述SSD的读写比例值可以由第一读操作的数量和第二读操作数量的比值确定,这种方式更加方便获取。其中,每个读操作均有一个标记位,可以记录该读操作是计算设备生成的还是SSD中控制器自己产生。所以,控制器可以在执行读操作时,简便又精确的分别识别并统计第一读操作和第二读操作的数量。
在一种可能实现的方式中,所述统计所述SSD执行第一读操作的第一数量包括:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述统计所述SSD执行第二读操作的第二数量包括:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。实施本申请实施例,通过统计第一缓存队列中的执行的第一读操作数量和执行的第二读操作数量,以及第二缓存队列中正在等待的读操作数量,可以更加快捷的确定读写比例值和压力值,及时的反馈SSD内的读写比例值和压力值的变化,以便及时调整一个第一操作过程中允许插入读操作的最大数量,保障且进一步的提高SSD的性能。
在一种可能实现的方式中,所述获取所述SSD的特征值,包括:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;所述基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,包括:基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。实施本申请实施例,周期性的记录SSD中 读写比例值和压力值,根据最新的读写比例值和压力值,调整允许插入的读操作的数量,可以及时的调整SSD的适应能力,提高SSD的存储性能。
第二方面,本申请实施例提供了一种固态硬盘SSD,包括控制器和存储阵列;所述控制器耦合至所述存储阵列,用于:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前所述控制器对所述存储阵列进行的写操作或擦除操作。
在一种可能实现的方式中,所述控制器具体用于:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述控制器具体用于:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述控制器具体用于:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比,若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值的情况下,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允 许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,所述SSD与计算设备连接;所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述控制器具体用于:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。
在一种可能实现的方式中,所述控制器具体用于:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述控制器具体用于:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。
在一种可能实现的方式中,所述控制器具体用于:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。
第三方面,本申请实施例提供一种计算设备,所述计算设备可包括处理器;所述计算设备与固态硬盘SSD连接;所述处理器用于:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前在所述SSD中执行的写操作或擦除操作。
在一种可能实现的方式中,所述处理器具体用于:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述处理器具体用于:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;将所述暂停策略发送至所述SSD中,以使所述SSD基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述处理器具体用于:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作 过程中允许插入读操作的第一阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比,若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值的情况下,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述控制器具体用于:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。
在一种可能实现的方式中,所述处理器具体用于:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述处理器具体用于:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。
在一种可能实现的方式中,所述处理器具体用于:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。
第四方面,本申请实施例提供了一种应用于固态硬盘SSD的数据读取装置,可包括:获取单元,用于获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;调整单元,用于基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前执行的写操作或擦除操作。
在一种可能实现的方式中,所述调整单元具体用于:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过 程中允许插入读操作的数量。
在一种可能实现的方式中,所述调整单元具体用于:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述调整单元具体用于:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比,若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值的情况下,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,所述SSD与计算设备连接;所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述获取单元具体用于:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。
在一种可能实现的方式中,所述获取单元还具体用于:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述获取单元还具体用于:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由 所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。
在一种可能实现的方式中,所述获取单元具体用于:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;所述调整单元,具体用于基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。
第五方面,本申请实施例提供一种控制器,所述控制器包括处理组件、存储组件和通信接口,所述处理组件通过所述通信接口读取所述存储组件上存储的指令,执行上述第一方面所述的方法。
第六方面,本申请实施例提供了一种计算机程序,该计算机程序包括指令,当该计算机程序被计算机执行时,使得计算机可以执行上述第二方面中的固态硬盘SSD所执行的流程。
第七方面,本申请实施例提供一种计算机存储介质,用于储存为上述第二方面提供的一种固态硬盘SSD所用的计算机软件指令,其包含用于执行上述第一方面所涉及的程序。
为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例中所需要使用的附图进行说明。
图1是本申请实施例提供的一种应用于固态硬盘SSD的数据读取系统架构示意图。
图2是本申请实施例提供的一种通过暂停操作进行数据读取的方法流程示意图。
图3是本申请实施例提供的一种SSD的逻辑模块示意图。
图4是本申请实施例提供的另一种SSD的逻辑模块示意图。
图5是本申请实施例提供的又一种SSD的逻辑模块示意图。
图6是本申请实施例提供的一种计算设备的逻辑模块示意图。
图7是本申请实施例提供的另一种计算设备的逻辑模块示意图。
图8是本申请实施例提供的一种应用于固态硬盘SSD的数据读取方法的流程示意图。
图9是本申请实施例提供的一种SSD获取读写比例值的流程示意图。
图10是本申请实施例提供的一种SSD统计第一读操作和第二读操作的示意图。
图11是本申请实施例提供的一种基于预存储的映射关系表中获取暂停操作策略的流程示意图。
图12是本申请实施例提供的一种应用于固态硬盘SSD的数据读取装置的结构示意图。
下面将结合本申请实施例中的附图,对本申请实施例进行描述。
本申请中的术语“第一”和“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设 备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
在本说明书中使用的术语“部件”、“模块”、“系统”等用于表示计算机相关的实体、硬件、固件、硬件和软件的组合、软件、或执行中的软件。例如,部件可以是但不限于,在处理器上运行的进程、处理器、对象、可执行文件、执行线程、程序和/或计算机。通过图示,在计算设备上运行的应用和计算设备都可以是部件。一个或多个部件可驻留在进程和/或执行线程中,部件可位于一个计算机上和/或分布在2个或更多个计算机之间。此外,这些部件可从在上面存储有各种数据结构的各种计算机可读介质执行。部件可例如根据具有一个或多个数据分组(例如来自与本地系统、分布式系统和/或网络间的另一部件交互的二个部件的数据,例如,通过信号与其它系统交互的互联网)的信号通过本地和/或远程进程来通信。
首先,对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
(1)固态驱动器(Solid State Drive,SSD),或称固态硬盘,是用固态电子存储芯片阵列而制成的硬盘。SSD由控制单元和存储单元(Flash芯片、DRAM芯片)组成,其芯片的工作温度范围很宽,应用领域广泛。固态硬盘的存储介质通常为两种,一种是采用闪存(Flash芯片)作为存储介质,另外一种是采用DRAM作为存储介质。本申请实施例涉及的固态硬盘为基于闪存的固态硬盘,即采用Flash芯片作为存储介质的SSD。它的外观可以被制作成多种模样,例如:笔记本硬盘、微硬盘、存储卡、U盘等样式。
(2)NAND闪存(NAND Flash),是一种非失性存储技术。NAND Flash的存储单元划分有cell,die,block,page,cell等。cell是最小的记忆单元,多个cell组成一个page(页);多个page组成一个block(块);多个block组成一个die。NAND Flash除了具有断电后仍能保存数据的特性,还具有以下硬件特性:一个记忆单元经过写入(program),表示的数据可由逻辑1变成逻辑0,但无法再经由写入将此单元回复到逻辑1,需经过擦除(erase)才可回复逻辑1。一般快闪存储器中抹除的最小单位称为块(block)。擦除的操作时间一般大于读取和写入的操作时间。目前,大多数SSD的闪存颗粒主要分为单层存储单元(Single-Level Cell,SLC)、双层存储单元(Multi-Level Cell,MLC)、三层存储单元(Trinary-Level Cell,TLC)和四层存储单元(Quadruple-Level Cell,QLC),甚至还可能会出现多层存储单元;其中,TLC包括3D-TLC与2D-TLC;3D-TLC可以细分为32层3D-TLC、64层3D-TLC和96层3D-TLC。
(3)I/O接口,或IO接口,可以是控制对象与被控对象进行信息交换的纽带。本申请的计算设备通过I/O接口与固态硬盘进行数据交换。目前,绝大部分I/O接口涉及的具体程序都是可编程的,即它们的工作方式可由程序进行控制。
(4)Host接口,或数据总线,可以包括SATA、SAS和PCIe等。其中,串行ATA(Serial Advanced Technology Attachment,Serial ATA)是一种计算机总线,负责主板和大容量存储 设备(如硬盘及光盘驱动器)之间的数据传输,主要用于个人计算机;串行ATA与串列SCSI(Serial Attached SCSI,SAS)的两者排线兼容,SATA硬盘可接上SAS接口。SAS(Serial Attached SCSI),是串行连接SCSI接口,即串行连接小型计算机系统接口;与SATA硬盘相同,都是采用串行技术以获得更高的传输速度,并通过缩短连结线改善内部空间等。SAS是并行SCSI接口之后开发出的全新接口,为了改善存储系统的效能、可用性和扩充性,提供与SATA硬盘的兼容性。PCI Express总线(即PCIe)是较旧的PCI/PCI-X总线的高速串行替换;PCI Express基于点到点拓扑,单独的串行链路将每个设备连接到根系统(主机)。由于其共享总线拓扑,可以对单个方向上的PCI总线进行仲裁(在多个主机的情况下),并且一次限制为一个主机;此外,PCI Express总线链路支持任何两个端点之间的全双工通信,同时跨多个端点的并发访问没有固有的限制。
(5)IOPS(Input/Output Operations Per Second),每秒读写次数,也可被称为每秒输入/输出次数。是一个用于计算机存储设备(如硬盘(HDD)、固态硬盘(SSD)或存储区域网络(SAN))性能测试的量测方式,可以视为是每秒的读写次数。
(6)现场可编程逻辑门阵列(Field Programmable Gate Array,FPGA),是一种数字集成电路芯片,FPGA是数字电路的物理实现方式之一。
下面先对本申请实施例所基于的其中一种系统架构进行描述。请参见图1,图1是本申请实施例提供的一种应用于固态硬盘SSD的数据读取系统架构示意图,图1所示的架构主要以固态硬盘SSD为主体,从数据读取角度进行描述。本申请提出的固态硬盘的数据读取方法可以应用于该系统架构。该系统架构中包含了计算设备10(Host,图中以包含处理器101为例进行说明,相当于主机)和固态硬盘(SSD)20;其中,图1以控制器201和存储器202集成在固态硬盘20内部为例进行说明,固态硬盘20可以包括控制器201和存储器202;可选地,控制器201可以为独立于固态硬盘20的处理器件,通过与固态硬盘20中的存储器202连接,执行数据写入、数据读取以及数据擦除等操作;而存储器202也可以为独立的存储器件,在此不再赘述。如图1所示,存储器202还可以包括多个Flash存储区域,如Flash 0、Flash 1、…、Flash N等,N为大于0的整数。其中,所述存储器相当于本申请实施例中的存储阵列。
在上述固态硬盘SSD的数据读取系统中,计算设备10可以下发读操作、写操作、擦除操作到SSD中,固态硬盘中控制器201可以向处理器101返回操作结果。在固态硬盘中,控制器向NAND Flash下发读、写、擦等操作,NAND Flash向控制器返回操作结果。请参考附图2,图2是本申请实施例提供的一种通过暂停操作进行数据读取的方法流程示意图。在图2所示的应用场景中,为了降低计算设备的读时延,固态硬盘的控制器处理读操作时,如果判断该读操作要访问的NAND Flash上正在执行第一操作,第一操作为所述控制器201对存储阵列进行的写操作或擦除操作,控制器让当前读操作等待,先下发暂停(Suspend)操作到该NAND Flash上,暂停正在执行的第一操作,然后在NAND Flash上执行读操作(图2中下发顺序1)。对于已经下发暂停操作后的读操作,控制器直接下发读操作到NAND Flash上执行(图2中下发顺序2)。如果一段时间内没有读操作,控制器会下发恢复(Resume)操作到NAND Flash上恢复执行被暂停的第一操作(如图2中下发顺序3)。
具体地,当处理器101处理数据指令时,可以向固态硬盘20发送数据的读取命令,通过读取命令指示固态硬盘20根据预设的规则读取该固态硬盘20中存储区域的数据。也可以向固态硬盘20发送数据的写命令,通过写命令指示固态硬盘20根据预设的规则将该数据写入该固态硬盘20中的存储区域。还可以向固态硬盘20发送数据的擦除命令,通过擦除命令指示固态硬盘20根据预设的规则擦除该固态硬盘20中存储区域原有存储的数据,以便写入新的数据。
在本申请实施例中,处理器101还可以获取固态硬盘20中的数据信息,以便固态硬盘调整一个第一操作过程中允许插入读操作的最大数量。
固态硬盘20中控制器201可以获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前在所述存储阵列(相当于存储器202)中执行的写操作或擦除操作。
可以理解的是,固态硬盘可以配置在不同的设备中,在不同的设备中对应不同主控的形式,本申请实施例对主控的形式不作限定,比如服务器或者计算机等。
当前述固态硬盘配置在计算机中(即计算设备10为计算机)中,固态硬盘20通过数据总线与电脑的中央处理器CPU进行数据交互,例如,电脑通过数据总线向固态硬盘20发送写命令,将特定的数据写入固态硬盘。
当前述固态硬盘配置在服务器(即:计算设备10为服务器,该服务器为整个服务器网络的主服务器,处理服务器网络中所有的事务)中,服务器通过Wi-Fi、移动网络等或者有线连接的方式进行通信并对数据进行处理,例如,服务器通过数据总线向固态硬盘20发送读取命令,固态硬盘接收到读取命令后,控制器让当前读操作等待,先下发暂停操作到该NAND Flash上,暂停正在执行的第一操作,然后在NAND Flash上执行读操作从存储区域中读取数据。其他结构以及功能类似前述提及的电子设备,在配置了固态硬盘之后的具体数据读取场景也适用本申请实施例图示的应用场景,在此不再赘述。
需要说明的是,本申请实施例中涉及的暂停操作相当于Suspend操作,是用于在一个写操作过程中,暂停该写操作后,插入一定数量的读操作;或者,一个擦除操作过程中,暂停该擦除操作后,插入一定数量的读操作。例如:将暂停操作下发到NAND Flash上,NAND Flash接收到暂停操作后,会暂停正在执行的写或擦除操作(即,第一操作),然后执行读操作。被暂停执行的写或擦除操作要恢复执行,计算设备可以下发恢复操作到NAND Flash上,会恢复执行被暂停执行的写或擦操作。其中,恢复操作相当于Resume操作。
结合图1所示的系统架构,本申请实施例还提供了几种涉及Host与SSD交互的SSD中数据读取的相关设备图示,可以应用于图1所示系统架构。
请参见图3,图3是本申请实施例提供的一种SSD的逻辑模块示意图;如图3所示,本申请实施例中SSD的内置逻辑模块可以包括:SSD控制器201,也是前述图1所示系统架构SSD中控制器201;以及存储模块202,即可包括闪存NAND Flash阵列,也是前述图1所示系统架构中存储器202;还可以包括接口(Interface)模块203,用于与外部设备通 信。其中,控制器201中包括感知模块2011和反馈控制模块2012。该感知模块2011还可以包括获取读写比例值模块和获取压力值模块。
具体的,控制(controller)模块201,为SSD的控制单元(即控制器);可以理解的是,控制器(或称控制器单元)是SSD设备的大脑,承担SSD读写命令的处理、数据分布管理以及NAND Flash管理等等功能。
本申请实施例的控制器中包括感知模块2011和反馈控制模块2012,还可以包括接口(Interface)模块203。其中,该感知模块2011可以用于获取特征值,所述特征值包括读写比例值或压力值中的至少一个。该感知模块2011还可以包括获取读写比例值模块和获取压力值模块。该获取读写比例值模块用于获取SSD的读写比例值;该获取压力值模块用于获取SSD的压力值。例如,获取读写比例值模块可以基于所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值获得读写比例值。获取压力值模块可以基于SSD中等待执行的读操作的数量,获得压力值。如:SSD中等待的读操作数量为10,压力值可以为10,或者是基于预设的映射关系,10个读操作对应的压力值。
反馈控制模块2012可以基于感知模块2011获取到的特征值,如:读写比例值或压力值中的至少一个,动态的调整一个第一操作过程中允许插入读操作的数量。
还可以包括:接口(Interface)模块203,用以连接Host 10而承担读写命令接收和数据传输的功能。
例如:通过如图3所示SSD,可以执行:
1,获取压力值模块在一定的周期内获取压力值。
2,获取读写比例值模块在一定的周期内获取读写比例值。
3,反馈控制模块读取上述压力值和读写比例值。
4,反馈控制模块通过获取的压力值和读写比例值索引得到暂停操作策略,并基于该暂停操作策略调整一个第一操作过程中允许插入读操作的数量。或者,反馈控制模块通过获取的压力值和读写比例值直接调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,请参见图4,图4是本申请实施例提供的另一种SSD的逻辑模块示意图。与上述图3所示的SSD不同,图4所示的SSD的控制器201中,感知模块2011包含获取读写比例值模块,不包含获取压力值模块。因此,与上述图3所示执行流程相比,该SSD可以获取读写比例值,而且反馈控制模块可以基于感知模块2011获取到的读写比例值,调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,请参见图5,图5是本申请实施例提供的又一种SSD的逻辑模块示意图。与上述图3所示的SSD不同,图5所示的SSD的控制器201中,感知模块2011不包含获取读写比例值模块,包含获取压力值模块。因此,与上述图3所示执行流程相比,该SSD可以获取压力值,而且反馈控制模块基于感知模块2011获取到的压力值,调整一个第一操作过程中允许插入读操作的数量。
在申请本实施例中,SSD中的感知模块和反馈控制模块及其中的各模块可以由硬件(如FPGA、硬件加速单元等)实现,也可以由软件实现。
本申请实施例对Host、Host包含的处理器以及Host中的其他内容相关描述,可对应参考下述实施例,所以在本申请实施例中不具体描述和标识。
结合图1所示的系统架构,本申请实施例还提供了另外几种涉及Host与SSD交互的计算机设备示意图,可以应用于图1所示系统架构,请参见图6,图6是本申请实施例提供的一种计算设备的逻辑模块示意图。如图6所示,本申请实施例中计算设备的内置逻辑模块可以包括:处理器101,也是前述图1所示系统架构计算设备中的处理器101。其中,处理器101中包括:感知模块1011和反馈控制模块1012。该感知模块1011还可以包括获取读写比例值模块和获取压力值模块。与计算设备连接的是固态硬盘SSD,SSD包括:控制器201,也是前述图1所示系统架构SSD以及SSD中的控制器201;以及存储模块202,也是前述图1所示系统架构中存储器202;还可以包括接口(Interface)模块203,可以用于与计算设备通信。
本申请实施例的处理器101中涉及了感知模块1011,该感知模块1011还可以包括获取读写比例值模块和获取压力值模块。该感知模块1011可以用于获取特征值,所述特征值包括读写比例值或压力值中的至少一个。其中,感知模块1011中获取读写比例值模块用于获取SSD的读写比例值;感知模块1011中获取压力值模块用于获取SSD的压力值。例如,获取读写比例值模块可以基于所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值获得读写比例值。获取压力值模块可以基于SSD中等待执行的读操作的数量,获得压力值。如:SSD中等待的读操作数量为10,压力值可以为10,或者是基于预设的映射关系,10个读操作对应的压力值。
反馈控制模块1012可以基于感知模块1011获取到的数据,获取暂停操作策略,并将该暂停操作策略发送至SSD中,使得该SSD基于该暂停操作策略调整一个第一操作过程中允许插入读操作的最大数量。
可选的,反馈控制模块1012还可以基于感知模块1011获取到的特征值,获取暂停操作策略;根据该暂停操作策略生成目标指令并向SSD发送,使得该SSD基于该目标指令调整一个第一操作过程中允许插入读操作的数量。
例如:通过如图6所示计算设备,可以执行:
1,获取压力值模块在一定的周期内获取压力值。
2,获取读写比例值模块在一定的周期内计算读写比例值。
3,反馈控制模块读取压力值和读写比例值。
4,反馈控制模块通过获取的压力值和读写比例值索引得到暂停操作策略,并将该暂停操作策略发送至SSD中,使得SSD基于该暂停操作策略调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,与上述图6所示的计算设备不同,该计算设备的处理器101中,感知模块1011包含获取读写比例值模块,不包含获取压力值模块。因此,与上述图6所示的计算设备执行流程相比,该计算设备可以获取读写比例值,而且反馈控制模块可以基于感知模块1011获取到的读写比例值,获取暂停操作策略,并将该暂停操作策略发送至SSD中,使得该SSD可以基于该暂停操作策略调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,与上述图6所示的SSD不同,该计算设备的处理器101中, 感知模块1011不包含获取读写比例值模块,包含获取压力值模块。因此,与上述图6所示的计算设备执行流程相比,该计算设备可以获取压力值。而且反馈控制模块可以基于感知模块1011获取到的压力值,获取暂停操作策略,并将该暂停操作策略发送至SSD中,使得该SSD可以基于该暂停操作策略调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,请参见图7,图7是本申请实施例提供的另一种计算设备的逻辑模块示意图。与上述图6所示的计算设备不同,图7所示计算设备的处理器201中,包含感知模块1011,不包含反馈控制模块。其中,感知模块1011包含获取读写比例值模块和获取压力值模块。而与计算设备连接的SSD的控制器201中包含反馈控制模块2012。因此,与上述图6所示计算设备执行流程相比,该计算设备可以执行:
1,获取压力值模块在一定的周期内获取压力值。
2,获取读写比例值模块在一定的周期内计算读写比例值。
3,向SSD发送压力值和的读写比例值。
需要说明的是,该计算设备向SSD发送压力值和的读写比例值后,SSD的控制器接收到压力值和读写比例值;进而SSD中的反馈控制模块通过获取到的压力值和读写比例值获取暂停操作策略,并基于该暂停操作策略调整一个第一操作过程中允许插入读操作的最大数量。
在一种可能实现的方式中,与上述图7所示的计算设备不同,该计算设备的处理器101中,感知模块1011包含获取读写比例值模块,不包含获取压力值模块。因此,与上述图7所示计算设备执行流程相比,该计算设备获取读写比例值,并将获取到的读写比例值发送至SSD中。SSD的控制器接收到读写比例值;进而SSD的反馈控制模块通过获取到的读写比例值获取暂停操作策略,并基于该暂停操作策略调整一个第一操作过程中允许插入读操作的最大数量。
在一种可能实现的方式中,与上述图7所示的SSD不同,该计算设备的处理器101中,感知模块1011不包含获取读写比例值模块,包含获取压力值模块。因此,与上述图7所示计算设备执行流程相比,该计算设备获取压力值,并将获取到的压力值发送至SSD中。SSD的控制器接收到压力值;进而SSD的反馈控制模块可以通过获取到的压力值获取暂停操作策略,并基于该暂停操作策略调整一个第一操作过程中允许插入读操作的最大数量。
本申请实施例对SSD、SSD包含的控制器以及SSD中的其他内容相关描述,可对应参考上述实施例和下述方法实施例,所以在本申请实施例中不具体描述和标识。
在本申请实施例中,计算设备中的感知模块和反馈控制模块及其中的各模块可以由硬件(如FPGA、硬件加速单元等)实现,也可以由软件实现。
基于上述图1提供的系统架构,以及上述图3提供的固态硬盘的结构,结合本申请中提供的固态硬盘SSD中数据读取的管理方法,对本申请中提出的技术问题进行具体分析和解决。
参见图8,图8是本申请实施例提供的一种应用于固态硬盘SSD的数据读取方法的流程示意图,该方法可应用于上述图1中所述的应用于固态硬盘SSD的数据读取系统架构中,其中的固态硬盘SSD20可以用于支持并执行图8中所示的应用于固态硬盘SSD的数据读取 方法流程步骤S301-步骤S305。下面将结合附图8从固态硬盘中控制器侧进行描述,所述固态硬盘与计算设备相连接。该方法可以包括以下步骤S301-步骤S305。
步骤S301:统计SSD执行读操作的数量。
具体地,SSD可以获取SSD执行读操作的数量,以便用于获取SSD的读写比例值。其获取的方式可以是SSD中的控制器直接统计,或者,通过其他与SSD相连接的计数装置或模块统计后获取。其中,读操作是将保存在存储器中的数据读取出来,SSD执行一个读操作时间要小于执行一个写操作的时间,也小于执行一个擦除操作的时间。而且,SSD在执行一次读操作时都可以记录至此为止执行读操作的数量。
可选的,SSD执行读操作的数量与所述计算设备生成的读操作数量相对应。即,SSD获取的读写比例值为执行计算设备生成的读操作数量与计算设备生成的写操作数量之间的比值。因此,SSD可以统计该SSD执行第一读操作的第一数量,其中,第一读操作为所述计算设备生成的读操作。由于SSD执行的每个读操作均有一个标记位,该标记位可以用于标识该读操作是计算设备生成,还是SSD中的控制器自己产生。所以,SSD可以根据读操作上的标识,识别出第一读操作,进而可以SSD统计执行第一读操作的第一数量。
可选的,SSD可以统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量。其中,第一缓存队列是在SSD中保存有第一读操作和第二读操作的消息队列。
步骤S302:统计SSD执行写操作的数量。
具体的,SSD在获取读写比例值之前需要获取所述SSD执行写操作的数量。其获取的方式也可以是SSD中的控制器直接统计,或者,通过其他与SSD相连接的计数装置或模块统计后获取。其中,SSD执行写操作的时间一般情况下要远大于SSD执行一个读操作的时间。
可选的,SSD执行写操作的数量与所述控制器生成的读操作数量相对应。即,SSD获取所述SSD执行写操作的数量时,可以统计该SSD执行第二读操作的第二数量,其中,第二读操作为所述控制器生成的读操作。由于一般情况下,SSD更新已写入位置的数据时,都会向新位置写入数据,而将原先已写入位置的数据标记为垃圾(无效数据)。当SSD的存储空间写入到一定比例后会触发后台的垃圾回收来释放存储空间(读取有效数据聚合起来搬移到新的存储位置后,擦除原位置的数据),因此在写入新数据时必须有相对应数量的存储空间被释放。所以执行计算设备生成写操作的数量可以和执行控制器自己产生的读操作的数量相对应,因此,在本申请实施例中,可以用控制器生成的读操作来指代执行的写操作的计数。
需要说明的是,本申请实施例并不限制,执行控制器生成的读操作的数量与执行写操作的数量之间的对应关系。SSD执行写操作的数量可以为执行控制器生成的读操作的数量,例如:直接将执行控制器生成的读操作的数量作为执行写操作的数量。或者,SSD执行写操作的数量与执行控制器生成的读操作的数量的呈线性关系。例如:将执行控制器生成的读操作的数量的10倍作为执行写操作的数量。本申请对此并不作具体的限定。
可选的,控制器统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量。其中,第二读操作为所述控制器生成的读操作。第一缓存队列包含有第一读操作和第二读操作。
步骤S303:获取读写比例值。
具体地,SSD获取特征值,所述特征值包括读写比例值,读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值。例如:SSD执行读操作的数量为10,SSD执行写操作的数量为1时,读写比例值为10。可选的,还可以基于预先存储的对应关系,读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量之间比值对应的数值。又例如:SSD执行读操作的数量为10,SSD执行写操作的数量为1时,读写比例值还可以为1/10。
请参考附图9,图9是本申请实施例提供的一种SSD获取读写比例值的流程示意图。如图9所示,SSD中的控制器可以周期性的记录并存储与所述SSD的读写比例值。首先在第一预设周期内,计算读写比例值。其中在计算读写比例值时,控制器处理第一缓存队列中的读操作,第一缓存队列中的读操作包括第一读操作和第二读操作。通过判断这两个计数器的数值,就可以计算读I/O和写I/O的比例关系。计算比值并保存后,可以分别将计数器A和计数器B清零,结束该周期的统计,可以开启下一周期的计算。其中,在控制器里可以包括计数器A和计数器B,计数器A记录的是从计算设备生成的读操作(第一读操作)的数量。计数器B记录的是非计算设备生成的、而是由控制器自己产生的读操作(第二读操作)的数量。需要说明的是,计数器A和计数器B是每执行一个读操作根据相应的策略记一次数,而在第一缓存队列中正在等待的读操作并不统计在内。因此,第一数量和第二数量分别是控制器正在执行或已经执行了的第一读操作和第二读操作。
可选的,SSD可以周期性的记录并存储与所述SSD的读写比例值,获取当前时间点最近周期的目标读写比例值。例如:若每10分钟记录一次读写比例值,则在第5个周期内,SSD需要获取到读写比例值时,第四周期统计好的读写比例值就为SSD要获取到的读取比例值。
步骤S304:获取压力值。
具体的,SSD获取特征值,所述特征值包括压力值。其中,所述压力值指示所述SSD中等待执行的读操作的数量。压力值可以直接等于等待执行的读操作的数量。例如:当SSD中等待执行的读操作的数量为10时,压力值可以为10。还可以将SSD中等待执行的读操作的数量划分为多个等级,该多个等级中的每个等级分别对应不同的压力值。例如:将SSD中等待执行的读操作的数量划分为三个等级,其中,等待执行的读操作的数量小于10,对应的压力值为1;等待执行的读操作的数量10-50,对应的压力值为2;等待执行的读操作的数量大于50,对应的压力值为3。还可以基于预先存储的对应关系,压力值为所述SSD中等待执行的读操作的数量对应的值。例如:根据预先存储的对应关系,压力值=等待执行的读操作的数量*k+b,其中,k、b可以为常数。
可选的,SSD获取第二缓存队列中等待所述SSD执行的所述第一读操作的数量。其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。可以理解的是,SSD中等待执行的第一读操作会由第二缓存队列进入到第一缓存队列中执行。SSD获取第二缓存队列中等待所述SSD执行的所述第一读操作的数量即是获取压力值。
可选的,SSD可以周期性的记录并存储压力值,获取当前时间点最近周期的目标压力 值。例如:若每15分钟记录一次压力值,则在第5个周期内,SSD需要获取到压力值时,第四周期统计好的压力值就为SSD要获取到的压力值。SSD还可以周期性的记录并存储压力值,SSD获取经过预设规则运算后的目标压力值。以便SSD基于所述目标压力值,动态调整一个第一操作过程中允许插入读操作的数量。需要说明的是,统计读写比例值的周期和统计压力值的周期没有直接的联系。
例如:在本申请实施例中,目标压力值为包括当前周期在内的前M个周期对应的压力值中,压力值最大的为目标压力值。请参考附图10,图10是本申请实施例提供的一种SSD统计第一读操作和第二读操作的示意图。如图10所示,业务感知装置每个定时周期T2读取一次第二缓存队列中排队的第一读操作的数量Y_i(i为计数器C的计数值,从0开始,表示为第i个周期),Y_i表征第i个周期的第二缓存队列中等待执行的第一读操作的数量,由于单个读操作执行时间很短,会造成一个周期内的Y_i波动性比较大,因此,为了更好地确定SSD中的压力值,可以使用Y_(i-m+1)到Y_i一共最多M(M大于1)个值的最大值Y_max作为目标压力值(M是预设值),如果i小于M,则使用i个业务压力值的最大值作为目标压力值。例如:M=5,5个周期的压力值分别为15、20、17、16、10,则目标压力值为20。若还没有统计到5个周期,只有3个周期的情况下,且3个周期分别对应的压力值为13、15、8时,则目标压力值为15。
步骤S305:基于特征值,动态调整一个第一操作过程中允许插入读操作的数量。
具体的,SSD可以基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量。其中,所述特征值包括读写比例值或压力值中的至少一个,所述第一操作为当前执行的写操作或擦除操作。该特征值可以用于指示SSD中执行读操作的效率大小(如:读写比例值),或者等待执行读操作的压力大小(如压力值)。因此,SSD可以根据读写比例值、或压力值、或读写比例值和压力值,动态调整一个当前执行的写操作或擦除操作过程中允许插入读操作的数量。例如:当所述读写比例值过大时,说明执行读操作的效率高,会频繁打断当前正在执行的第一操作。所以可以在当前允许插入读操作的数量的基础上,降低一个写操作或擦除操作过程中允许插入读操作的数量,以防止读操作频繁打断写操作或擦除操作的执行,以提高系统性能。
可选的,所述基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,包括:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。其中,第一阈值为第一操作过程中允许插入读操作的最大数量,即,说明在第一操作过程中插入读操作的数量可以小于第一阈值但是不能大于该第一阈值,进而可以调整在一个第一操作过程中允许插入读操作的数量。由于在执行一个第一操作过程中,SSD每打断第一操作并执行一个读操作后,都可以记一次数,以记录到此为止插入的读操作数量。所以在实施本申请实施例时,通过直接配置一个第一操作过程中允许插入读操作的第一阈值后,统计被插入的读操作数量,在达到允许插入的最大数量后,禁止再次插入读操作,以此实现调整读操作数量的目的。通过这种方式可以直观方便的调整允许插入读操作的数量,进而提高了SSD的性能。
可选的,所述基于所述特征值,动态调整一个第一操作过程中允许执行读操作的数量,包括:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在 一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。在本申请实施例中,暂停操作用于在一个第一操作过程中,暂停该第一操作,然后在暂停操作使用后在第一操作中插入读操作。因此,本申请实施例可以通过调整暂停操作的约束条件,如:调整暂停操作的使用频率、调整暂停操作的使用数量等,从而动态的调整使用暂停操作后允许插入读操作的数量。
在一种可能实现的方式中,所述基于所述特征值,获取与所述特征值对应的暂停操作策略,包括:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。在本申请实施例中,获取该暂停操作策略的方式可以是从预先存储的映射表中,直接根据该特征值确定。从预存储的映射关系表中确定暂停操作策略,可以快捷方便的节省计算步骤,大大的缩短了获取到暂停操作策略的时间,同时也提高了调整设置允许插入读操作数量时的效率,进而提高了SSD的性能。例如:请参考下述表1,表1是本申请实施例提供的一种映射关系表,用于基于所述特征值,获取与所述特征值对应的暂停操作策略。其中,该特征值包括读写比例值和压力值。
表1:预存储的映射关系表
在上述表1中,压力值区间表示,将压力值按照一定的策略分别分成P个区间,每个区间都有其对应的暂停操作策略。同理,读写比例值区间表示,将读写比例值按照一定的策略分别分成Q个区间,每个区间都有其对应的暂停操作策略。其中,暂停操作策略分别表示为:一个写操作过程中控制器可以下发暂停操作的最大数量R1、一个写操作过程中控制器每通过一次暂停操作暂停写操作后能够下发的读操作数量R2、一个写操作过程中控制器可以下发的总的读操作数量R3、一个擦除操作过程中控制器可以下发暂停操作的最大数量R4、一个擦除操作过程中控制器每通过一次暂停操作暂停擦除操作后能够下发的读操作数量R5、一个擦除操作过程中控制器可以下发的总的读操作数量R6。
请参考附图11,图11是本申请实施例提供的一种基于预存储的映射关系表中获取暂停操作策略的流程示意图。如图11所示,在预设的周期内,SSD可以获取读写比例值,根据读写比例值确定其所在的区间;SSD还可以获取压力值,根据压力值确定其所在的区间。进而根据上述读写比例值所在的区间和/或压力值所在的区间,确定当前周期所对应的暂停 操作策略。例如:若SSD在获取到的压力值在压力值区间1中,以及SSD获取到的读写比例值在读写比例值区间1时,查表可知,暂停操作策略为R1=8,R2=5,R3=30,R4=8,R5=3,R6=20,因此,在该周期内,一个写操作过程中控制器可以下发暂停操作的最大数量为8、一个写操作过程中控制器每通过一次暂停操作暂停写操作后能够下发的读操作数量为5、一个写操作过程中控制器可以下发的总的读操作数量为30、一个擦除操作过程中控制器可以下发暂停操作的最大数量为8、一个擦除操作过程中控制器每通过一次暂停操作暂停擦除操作后能够下发的读操作数量为3、一个擦除操作过程中控制器可以下发的总的读操作数量为20。
可以理解的是,当表格中对应暂停操作策略包含R1,R2,R3,R4,R5,R6中一个或多个时,说明该表1对其余的未包含的策略并不做过多的限制,或者,是预先设置好的默认值,本申请实施例对比不作具体的限定。
还可以理解的,本表格1中的数值,以及暂停操作策略数目和种类只是适应性的举例,在具体配置过程中,还需要根据SSD的性能适应性的配置,本申请实施例并不作具体的限定。而且,在R1、R2和R3同时存在的情况下或在R4、R5和R6同时存在的情况下,需要限定一个第一操作过程中控制器可以下发暂停操作的最大数量用于一个第一操作过程中每下发一次暂停操作后能够下发的读操作最大数量的乘积,要大于一个第一操作过程中允许插入的读操作最大数量。即,表1中R1和R2的乘积不小于R3,R4和R5的乘积不小于R6。例如:若SSD在获取到的压力值在压力值区间1中,以及SSD获取到的读写比例值在读写比例值区间Q时,查表可知,R1=4,R2=3,R3=8,R4=3,R5=3,R6=5,其中,均满足R1和R2的乘积大于R3,R4和R5的乘积大于R6。若R1和R2的乘积小于R3或者R4和R5的乘积小于R6,此时再限定R3或者R6是没有意义的。
需要说明的是,该预存储的映射关系表中,关于压力值区间和读写比例值区间的划分方式、划分数量均可不相同。
还需要说明的是,上述表1只是本申请提供的其中一种映射方式,本申请实施例还可以包括其他分类方式,例如:预存储的映射表可以包括将特征值进行相关运算后获得的目标数值,以及目标数值对应的暂停操作策略。预存储的映射表中还包括的读写比例值、或压力值、或读写比例值和压力值分别对应的暂停操作策略,本申请对此不作具体的限定。
可选的,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。其中,所述第二阈值为一个第一操作过程中允许发送所述暂停操作的最大数量,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作。在一个第一操作过程中,本申请实施例通过直接限制暂停操作使用的最大数量,即,通过限制打断一个第一操作执行的次数,进而可以限制允许插入读操作最大数量,从而提高了SSD的性能。例如:限制允许发送所述暂停操作的最大数量,就不会频繁暂停正在执行的写操作或者擦除操作以执行读操作,因为这时性能(每秒读写次数(Input/Output Operations Per Second,IOPS))主要的瓶颈是写IOPS,所以减小阈值,就能够减少对写操作的打断,SSD的IOPS性能就会较高。
可选的,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。其中,所述第三阈值为一个第一操作过程中,每发送一次所述暂 停操作后允许插入读操作的最大数量,即,每发送一次所述暂停操作后允许插入读操作的数量上限。本申请实施例通过配置发送一次所述暂停操作后允许插入读操作的最大数量,从而控制一个第一操作过程中允许发送所述暂停操作的最大数量。即通过控制每下发一次暂停操作,控制插入的读操作最大数量,进而控制暂停一次的读操作总的执行时间,进而减少每次暂停操作对第一操作打断的时间,从而提高SSD的性能。
可选的,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。例如,可对应参考上述表1中所涉及的暂停操作策略。在读写比例值越大情况下,说明执行读操作的占比越高,因此,这时SSD的IOPS性能主要的瓶颈是写IOPS,此时允许插入读操作的第一阈值设置较小的阈值,那么不会有过多的读操作频繁打断写操作的执行。所以减小插入读操作的第一阈值,可以能够减少对写操作的打断,从而提高SSD的性能。
可选的,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。例如,可对应参考上述表1中所涉及的暂停操作策略。压力值越大,说明等待执行的读操作数量越多。此时,需要降低允许插入读操作的第一阈值,防止过多的读操作会打扰写操作的执行。如果压力值较小,说明计算设备上更专注读操作的读延时,这时应该配置一个较大的允许发送所述暂停操作的第一阈值的阈值,允许读操作尽可能多的打断写操作或擦除操作,让读操作尽快执行完成。
可选的,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比,若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。在本申请实施例中,同时获取到读写比例值和压力值的情况下,若压力值大于第一压力值(如:压力值足够大),此时若想快速提高NAND Flash执行读、写和擦除操作的效率,还需要根据SSD执行的读写比例值,适应性的降低允许插入读操作的第一阈值,减少读操作对第一操作的打断,以便提高SSD的IOPS性能。如果压力值小于第一压力值(压力值足够小),说明此时正在等待的读操作数量不多,计算设备上更专注读操作的读延时,这时可以配置一个较大的允许插入读操作的第一阈值,允许读操作尽可能多的打断第一操作,让读操作尽快执行完成。
可选的,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。例如,可对应参考上述表1中所涉及的暂停操作策略。在读写比例值越大情况下,说明执行读操作的占比越高,因此,这时SSD的IOPS性能主要的瓶颈是写IOPS,此时允许发送暂停操作的第二阈值设置较小的阈值,那么读操作就不会频繁打断第一操作的执行。所以减小阈值,就能够减少对写操作的打断,IOPS性能就会较高。例如,当许发送暂停操作的第二阈值设置为0时,读操作就不会打扰第一操作的进行,此时专注与写操作,反之,读操作和写操作的比例关系比值越小,说明写操作的占比越高,此时SSD的性能更依赖于读操作的执行,所以将允许发送暂停操作的第二阈值设置较大的阈值,那么读操作就可以频繁打断第一操作的执行,就能够让读操作更快的执行,SSD的性能就会较高。
可选的,当所述特征值包括所述压力值时,所述一个第一操作过程中允许发送所述暂 停操作的第二阈值与所述压力值成反比。例如,可对应参考上述表1中所涉及的暂停操作策略。压力值越大,说明计算设备上更关注IOPS性能,因此在压力值较大的时候,发送所述暂停操作的第二阈值可以相应的减小。如果压力值较小,说明计算设备上更专注读操作的读延时,这时应该配置一个较大的允许发送所述暂停操作的第二阈值,允许读操作尽可能多的打断第一操作,让读操作尽快执行完成。
可选的,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。在本申请实施例中,如果压力值大于第二压力值,说明计算设备上更关注SSD的IOPS性能,因此在压力值较大的时候按照SSD上读I/O和写I/O的比例来配置允许发送所述暂停操作的第二阈值。如果压力值小于所述第二压力值,说明计算设备上更专注读操作的读延时,这时应该配置一个较大的允许发送所述暂停操作的第二阈值,允许读操作尽可能多的打断第一操作,让读操作尽快执行完成。
需要说明的是,在本申请实施例中,第一压力值和第二压力值的大小之间没有特殊联系。例如:第一压力值和第二压力值可以相同,也可以不同;第一压力值可以大于第二压力值,也可以小于第二压力值。上述两个压力值,用户可以根据SSD的实际性能具体设置,本申请实施例对此不作具体的限定。
在本申请实施例中,可以首先获取SSD的特征值,该特征值包括读写比例值或压力值中的至少一个。由于读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值用于指示所述SSD中等待执行的读操作的数量。所以,通过获取的特征值,可以确定SSD当前执行读、写或擦除操作的效率和压力。若效率较低,压力较大,可以根据获取到的读写比例值或压力值中的至少一个,动态调整一个第一操作过程中允许插入读操作的数量,以提升NAND Flash执行读、写和擦除操作的效率,进而提高SSD的性能。
需要说明的是,本申请实施例中的方法实现在上述图3-图5所述的固态硬盘,以及图6、图7所示的计算设备中同样适用,其具体实施方式还可以对应参考上述图8所示的方法实施例,本申请实施例在此不再赘述。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的相关装置。
请参见图12,图12是本申请实施例提供的一种应用于固态硬盘SSD的数据读取装置的结构示意图,该数据读取装置10可以包括获取单元401和调整单元402,其中,各个单元的详细描述如下。
获取单元401,用于获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;
调整单元402,用于基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前执行的写操作或擦除操作。
在一种可能实现的方式中,所述调整单元402具体用于:基于所述特征值,确定所述 第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述调整单元402具体用于:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
在一种可能实现的方式中,所述调整单元402具体用于:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。
在一种可能实现的方式中,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比,若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。
在一种可能实现的方式中,当所述特征值包括所述压力值的情况下,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
在一种可能实现的方式中,所述SSD与计算设备连接;所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述获取单元401具体用于:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。
在一种可能实现的方式中,所述获取单元401还具体用于:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述获取单元401还具体用于:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队 列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。
在一种可能实现的方式中,所述获取单元401具体用于:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;所述调整单元402,具体用于基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。
需要说明的是,本申请实施例中所描述的固态硬盘SSD中数据读取的管理装置10中各功能单元的功能可参见上述图8中所述的方法实施例中步骤S301-步骤S305的相关描述,此处不再赘述。
本申请实施例还提供了一种控制器,所述控制器包括处理组件、存储组件和通信接口,所述处理组件通过所述通信接口读取所述存储组件上存储的指令,用于执行上述各实施例中任一实施例中涉及固态硬盘SSD中数据读取的管理方法和功能。
本申请实施例还提供了一种包含指令的计算机程序产品,其在计算机上运行时,使得计算机执行上述各实施例中任一实施例中涉及固态硬盘SSD中数据读取的管理方法和功能。
本申请实施例提供一种计算机存储介质,用于储存为上述第二方面提供的一种固态硬盘SSD所用的计算机软件指令,其包含用于执行上述第一方面所涉及的程序。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可能可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者 说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以为个人计算机、服务端或者网络设备等,具体可以是计算机设备中的处理器)执行本申请各个实施例上述方法的全部或部分步骤。其中,而前述的存储介质可包括:U盘、移动硬盘、磁碟、光盘、只读存储器(Read-Only Memory,缩写:ROM)或者随机存取存储器(Random Access Memory,缩写:RAM)等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
Claims (35)
- 一种应用于固态硬盘SSD的数据读取方法,其特征在于,包括:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前执行的写操作或擦除操作。
- 根据权利要求1所述方法,其特征在于,所述基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,包括:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。
- 根据权利要求1所述方法,其特征在于,所述基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,包括:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在所述第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
- 根据权利要求3所述方法,其特征在于,所述基于所述特征值,获取与所述特征值对应的暂停操作策略,包括:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。
- 根据权利要求3或4所述方法,其特征在于,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。
- 根据权利要求3或4所述方法,其特征在于,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。
- 根据权利要求2所述方法,其特征在于,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。
- 根据权利要求2所述方法,其特征在于,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
- 根据权利要求2所述方法,其特征在于,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比;若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
- 根据权利要求5所述方法,其特征在于,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。
- 根据权利要求5所述方法,其特征在于,当所述特征值包括所述压力值的时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
- 根据权利要求5所述方法,其特征在于,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
- 根据权利要求1-12所述的任意一项方法,其特征在于,所述SSD包括控制器,所述SSD与计算设备连接;所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述获取所述SSD的特征值包括:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。
- 根据权利要求13所述方法,其特征在于,所述统计所述SSD执行第一读操作的第一数量包括:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述统计所述SSD执行第二读操作的第二数量包括:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。
- 根据权利要求1-14所述的任意一项方法,其特征在于,所述获取所述SSD的特征值,包括:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;所述基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,包括:基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。
- 一种固态硬盘SSD,其特征在于,包括:控制器和存储阵列;所述控制器耦合至所述存储阵列,用于:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前所述控制器对所述存储阵列进行的写操作或擦除操作。
- 根据权利要求16所述SSD,其特征在于,所述控制器具体用于:基于所述特征值,确定所述第一操作过程中允许插入读操作的第一阈值;根据所述第一阈值,动态调整在一个第一操作过程中允许插入读操作的数量。
- 根据权利要求16所述SSD,其特征在于,所述控制器具体用于:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
- 根据权利要求18所述SSD,其特征在于,所述控制器具体用于:基于所述特征值,从预存储的映射关系表中,获取与所述特征值对应的所述暂停操作策略,所述映射关系表包括所述特征值与所述暂停操作策略之间的对应关系。
- 根据权利要求18或19所述SSD,其特征在于,所述暂停操作策略为一个第一操作过程中允许发送所述暂停操作的第二阈值。
- 根据权利要求18或19所述SSD,其特征在于,所述暂停操作策略为一个第一操作过程中,每发送一次所述暂停操作后允许插入读操作的第三阈值。
- 根据权利要求17所述SSD,其特征在于,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比。
- 根据权利要求17所述SSD,其特征在于,当所述特征值包括所述压力值时,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
- 根据权利要求19所述SSD,其特征在于,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述读写比例值成反比;若所述压力值小于所述第一压力值,所述一个第一操作过程中允许插入读操作的第一阈值与所述压力值成反比。
- 根据权利要求20所述SSD,其特征在于,当所述特征值包括所述读写比例值时,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比。
- 根据权利要求20所述SSD,其特征在于,当所述特征值包括所述压力值的情况下,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
- 根据权利要求20所述SSD,其特征在于,当所述特征值包括所述读写比例值和所述压力值时,若所述压力值大于第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述读写比例值成反比;若所述压力值小于所述第二压力值,所述一个第一操作过程中允许发送所述暂停操作的第二阈值与所述压力值成反比。
- 根据权利要求16-27所述的任意一项SSD,其特征在于,所述SSD与计算设备连接;所述SSD执行读操作的数量与所述计算设备生成的读操作数量相对应,所述SSD执行写操作的数量与所述控制器生成的读操作数量相对应;所述特征值包括所述读写比例值;所述控制器具体用于:统计所述SSD执行第一读操作的第一数量,所述第一读操作为所述计算设备生成的读操作;统计所述SSD执行第二读操作的第二数量,所述第二读操作为所述控制器生成的读操作;将所述第一数量和所述第二数量的比值作为所述SSD的读写比例值。
- 根据权利要求28所述SSD,其特征在于,所述控制器具体用于:统计所述SSD执行的第一缓存队列中所述第一读操作的所述第一数量;所述控制器具体用于:统计所述SSD执行的所述第一缓存队列中所述第二读操作的所述第二数量;所述压力值指示第二缓存队列中等待所述SSD执行的所述第一读操作的数量,其中,所述第一缓存队列中的第一读操作是由所述第二缓存队列进入到所述第一缓存队列的,且所述第二缓存队列中不存在所述第二读操作。
- 根据权利要求16-29所述的任意一项SSD,其特征在于,所述控制器具体用于:周期性的记录并存储与所述SSD的特征值;获取当前时间点最近周期的目标特征值;基于所述目标特征值,动态调整一个第一操作过程中允许插入读操作的数量。
- 一种计算设备,其特征在于,所述计算设备包括处理器;所述计算设备与固态硬盘SSD连接;所述处理器用于:获取所述SSD的特征值,所述特征值包括读写比例值或压力值中的至少一个,所述读写比例值为所述SSD执行读操作的数量和所述SSD执行写操作的数量的比值,所述压力值指示所述SSD中等待执行的读操作的数量;基于所述特征值,动态调整一个第一操作过程中允许插入读操作的数量,所述第一操作为当前在所述SSD中执行的写操作或擦除操作。
- 根据权利要求31所述计算设备,其特征在于,所述处理器具体用于:基于所述特征值,获取与所述特征值对应的暂停操作策略,所述暂停操作策略为在一个第一操作过程中发送暂停(Suspend)操作的约束条件,所述暂停操作用于暂停所述第一操作后在所述第一操作中插入读操作;将所述暂停策略发送至所述SSD中,以使所述SSD基于所述暂停操作策略,动态调整一个第一操作过程中允许插入读操作的数量。
- 一种控制器,所述控制器包括处理组件、存储组件和通信接口,其特征在于,所述处理组件通过所述通信接口读取所述存储组件上存储的指令,执行如权利要求1-15中任意一项所述的方法。
- 一种计算机存储介质,其特征在于,所述计算机存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述权利要求1-15任意一项所述的方法。
- 一种计算机程序,其特征在于,所述计算机程序包括指令,当所述计算机程序被计算机执行时,使得所述计算机执行如权利要求1-15中任意一项所述的方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/119447 WO2022067686A1 (zh) | 2020-09-30 | 2020-09-30 | 一种应用于固态硬盘ssd的数据读取方法及相关装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116235138A true CN116235138A (zh) | 2023-06-06 |
Family
ID=80949394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080103398.5A Pending CN116235138A (zh) | 2020-09-30 | 2020-09-30 | 一种应用于固态硬盘ssd的数据读取方法及相关装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116235138A (zh) |
WO (1) | WO2022067686A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115840542B (zh) * | 2023-02-24 | 2023-06-02 | 浪潮电子信息产业股份有限公司 | 一种硬盘的请求处理方法、系统、存储介质和电子设备 |
CN117809725B (zh) * | 2024-03-01 | 2024-05-14 | 四川云海芯科微电子科技有限公司 | 一种闪存颗粒筛选分级方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445418A (zh) * | 2016-09-27 | 2017-02-22 | 郑州云海信息技术有限公司 | 一种固态硬盘中读写服务自适应的方法和装置 |
CN106681661B (zh) * | 2016-12-23 | 2020-02-07 | 郑州云海信息技术有限公司 | 一种固态硬盘中读写调度方法及装置 |
CN108984108A (zh) * | 2017-06-05 | 2018-12-11 | 北京忆恒创源科技有限公司 | 用于调度io命令的方法与固态存储设备 |
US20190056870A1 (en) * | 2017-08-15 | 2019-02-21 | ScaleFlux, Inc. | Reducing solid state Storage device read tail latency |
-
2020
- 2020-09-30 WO PCT/CN2020/119447 patent/WO2022067686A1/zh active Application Filing
- 2020-09-30 CN CN202080103398.5A patent/CN116235138A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
WO2022067686A1 (zh) | 2022-04-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10042563B2 (en) | Segmenting read requests and interleaving segmented read and write requests to reduce latency and maximize throughput in a flash storage device | |
CN102171649B (zh) | 用于用单个命令对多个不连续地址范围的传送进行排队的方法和系统 | |
CN107908571B (zh) | 一种数据写入方法、闪存装置及存储设备 | |
TW202040366A (zh) | 固態驅動機及其分配方法 | |
KR101924022B1 (ko) | 메모리 시스템 및 그것의 페이지 교체 방법 | |
WO2011128928A1 (en) | Storage device | |
US10042585B2 (en) | Pervasive drive operating statistics on SAS drives | |
KR20130024271A (ko) | 하드 디스크 드라이브와 불휘발성 메모리를 포함하는 스토리지 시스템 | |
CN111065997A (zh) | 用于存储介质的协同数据迁移 | |
CN114746834A (zh) | 基于分区状态的分区附加命令调度 | |
US11269559B2 (en) | Data processing device | |
KR20170110810A (ko) | 데이터 처리 시스템 및 그것의 동작 방법 | |
CN116235138A (zh) | 一种应用于固态硬盘ssd的数据读取方法及相关装置 | |
CN111796759A (zh) | 多平面上的片段数据读取的计算机可读取存储介质及方法 | |
CN115113799A (zh) | 主机命令的执行方法及装置 | |
CN114253461A (zh) | 混合通道存储设备 | |
KR102366512B1 (ko) | 논리 블록 어드레싱 범위 충돌 크롤러 | |
CN114253462A (zh) | 提供混合通道存储设备的方法 | |
CN114746835A (zh) | 用中间填充保持分区开放 | |
CN116974491A (zh) | 固态硬盘的存储优化方法、装置、计算机设备及存储介质 | |
KR102425470B1 (ko) | 데이터 저장 장치 및 그것의 동작 방법 | |
KR20240073166A (ko) | 저장 디바이스 열 로드에 기초한 제어된 시스템 관리 | |
US9996456B2 (en) | Solid-state disk, and user system comprising same | |
US20220083280A1 (en) | Method and apparatus to reduce latency for random read workloads in a solid state drive | |
KR102088944B1 (ko) | 메모리 컨트롤러 및 이를 포함하는 스토리지 디바이스 |
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 |