CN110399312A - 提高固态硬盘读性能的方法、固态硬盘及存储介质 - Google Patents
提高固态硬盘读性能的方法、固态硬盘及存储介质 Download PDFInfo
- Publication number
- CN110399312A CN110399312A CN201910692420.3A CN201910692420A CN110399312A CN 110399312 A CN110399312 A CN 110399312A CN 201910692420 A CN201910692420 A CN 201910692420A CN 110399312 A CN110399312 A CN 110399312A
- Authority
- CN
- China
- Prior art keywords
- nomap
- order
- hard disk
- solid state
- state hard
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/10—Address translation
- G06F12/1009—Address translation using page tables, e.g. page table structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种提高固态硬盘读性能的方法、固态硬盘及存储介质,其中方法包括:接收主机发送的命令;当命令是读命令时,根据预设的Nomap映射表判断读命令是否为Nomap命令;当读命令是Nomap命令时,控制预置的Nomap数据生成器反馈读命令对应的Nomap数据至主机。本发明通过识别接收到的读命令是Nomap命令时,通过Nomap数据生成器直接将数据发送至主机,不需要对该读命令进行进一步的处理,从而优化了固态硬盘对Nomap命令的处理流程,提升了固态硬盘的读性能。
Description
技术领域
本发明涉及数据存储技术领域,尤其涉及一种提高固态硬盘读性能的方法、固态硬盘及存储介质。
背景技术
SSD(固态硬盘)已经被广泛应用于各种场合,随着计算机的性能要求提升,作为关键因素之一的存储设备的性能是影响全局性能的重点因素。
现有的固态硬盘软硬件主要包括主控、固件算法和闪存三部分,其中主控(SOC)负责从主机接收命令、数据传输、命令状态返回主机。固件算法包括接口驱动模块、FTL模块和闪存驱动模块,其中,接口驱动模块负责从主控端接收命令,然后将命令切割成4KB大小的节点(适配FTL的4KB映射颗粒度机制),一个命令会切成很多的4KB节点,以及命令完成后将完成状态反馈至主控;FTL模块负责缓存的管理、映射表的管理、垃圾回收以及磨损均衡;闪存驱动模块根据4KB节点的操作类型发起对闪存阵列的操作,以及状态的检查。
通常地,通过对目前一些主流的性能测试工具测试模型的分析,我们发现一种数据类型极大地影响测试结果。这种特殊的数据,称为Nomap数据(无映射数据),其代表对应的逻辑空间不存在有效数据。发生这种情形主要是因为固态硬盘在出厂后从来没有写入数据或者主机端通过特殊的命令(TRIM,SecurityErase等)废弃了其中数据。对于这种数据,主机只预期其返回特定的数据(如全0)。而根据上述结构的固态硬盘,针对这种数据进行处理时,主控先从主机获取命令信息缓存在内部高速存储器(SRAM)中,然后固件算法的接口驱动模块从主控的SRAM取出命令后从逻辑上切割成若干个4KB节点(Nomap节点),然后发往FTL模块,FTL模块首先检查这些4KB节点是否命中Cache(Nomap类型的节点肯定不会命中Cache),如果没命中则查询映射表以确认数据是否存储在闪存上(Nomap类型的数据也不会在闪存上),最后为4KB节点分配一块4KB大小的Nomap数据类型的DRAM,通知主控将这一块数据传输给主机。由此可知,现有的固态硬盘针对Nomap数据的处理的流程过于复杂,大大浪费了资源,降低了固态硬盘的读性能。
发明内容
本发明提供了一种提高固态硬盘读性能的方法、固态硬盘及存储介质,以解决现有的固态硬盘针对Nomap数据的处理流程过于复杂而大大浪费了资源的技术问题。
为了解决上述问题,本发明提供了一种提高固态硬盘读性能的方法,其特征在于,其包括:主控接收主机发送的命令;当命令是读命令时,根据主控内预设的Nomap映射表判断读命令是否为Nomap命令;当读命令是Nomap命令时,主控控制其预置的Nomap数据生成器直接反馈与Nomap命令对应的Nomap数据至主机。
作为本发明的进一步改进,主控存储有固件算法,固件算法中包括FTL映射表;Nomap映射表是预先设置于主控内的一张映射表,由主控进行维护,其包括多个条目,且每一个条目对应FTL映射表的一个逻辑地址区间,逻辑地址区间涵盖了FTL映射表的多个条目,Nomap映射表的每一个条目的初始值均为1。
作为本发明的进一步改进,Nomap表的映射颗粒度大于固件内的FTL映射表;Nomap映射表的映射颗粒度的大小为32MB。
作为本发明的进一步改进,Nomap数据生成器直接生成与Nomap命令对应的具有固定模式的Nomap数据并通过PCIe链路发给主机。
作为本发明的进一步改进,根据预设的Nomap映射表判断读命令是否为Nomap命令的步骤包括:解析读命令并确认读命令指向的至少一个逻辑地址区间;判断Nomap映射表中与至少一个逻辑地址区间对应的所有的条目的值是否均为1;若是,则确定读命令为Nomap命令;若否,则确定读命令不是Nomap命令,传输至固件算法处理。
作为本发明的进一步改进,当读命令不是Nomap命令时,固件算法解析读命令并确认读命令指向的至少一个逻辑地址区间;读取至少一个逻辑地址区间对应的物理存储空间存储的数据,并反馈至主机。
作为本发明的进一步改进,接收主机发送的命令的步骤之后,还包括:当命令是写命令时,解析写命令并确认写命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置0,再将写命令的数据存储至至少一个逻辑地址区间对应的物理存储空间;当命令是擦除命令时,解析擦除命令并确认擦除命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置1,再将至少一个逻辑地址区间对应的物理存储空间存储的数据擦除。
作为本发明的进一步改进,方法还包括:间隔预设时间段提取Nomap映射表并存储至固态硬盘的闪存;每检测到固态硬盘重新上电,则从闪存中读取Nomap映射表。
为了解决上述问题,本发明还提供了一种固态硬盘,包括存储器和处理器,处理器耦接存储器,存储器上存储有可在处理器上运行的计算机程序,处理器执行计算机程序时,实现上述任一项提高固态硬盘读性能的方法中的步骤。
为了解决上述问题,本发明还提供了一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现上述任一项提高固态硬盘读性能的方法中的步骤。
相比于现有技术,本发明在主控接收到主机发送的命令之后,通过自身内预先设置的Nomap映射表判断该命令是否为Nomap命令,若是,则通过主控内预置的Nomap数据生成器直接反馈与Nomap命令对应的Nomap数据至主机,而不需要再经固态硬盘的固件算法对命令处理后反馈给主机,从而大大缩减了针对于Nomap数据的处理流程,节省了存储资源,提升了固态硬盘的读性能。
附图说明
图1展示了本发明提高固态硬盘读性能的方法第一个实施例流程示意图;
图2展示了本发明固态硬盘一个实施例的结构示意图;
图3展示了本发明提高固态硬盘读性能的方法第二个实施例流程示意图;
图4展示了本发明提高固态硬盘读性能的方法第三个实施例流程示意图;
图5展示了本发明提高固态硬盘读性能的方法第四个实施例流程示意图;
图6展示了本发明提高固态硬盘读性能的***第一个实施例的功能模块示意图;
图7展示了本发明提高固态硬盘读性能的***第二个实施例的功能模块示意图;
图8展示了本发明固态硬盘一个实施例的的示意框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用来限定本发明。
图1展示了本发明提高固态硬盘读性能的方法的一个实施例。在本实施例中,该提高固态硬盘读性能的方法应用于固态硬盘。如图2所示,该固态硬盘包括主控1、闪存2、DRAM缓存3,主控1分别与闪存2、DRAM缓存3电性连接,主控1内存储有固件算法,该固件算法用于驱动主控1去执行自动信号处理,耗损平衡,错误校正码(ECC),坏块管理、垃圾回收算法、与主机(如电脑)通信、以及执行数据加密等任务。主控1内预置有Nomap数据生成器11。
具体地,主控1用于接收主机发送的命令,并在接收到命令之后,判断该命令是否为读命令,当命令是读命令时,根据主控1内预设的Nomap映射表判断读命令是否为Nomap命令;当读命令是Nomap命令时,主控1控制Nomap数据生成器11反馈与Nomap命令对应的Nomap数据至主机。
需要说明的是,主机发送至固态硬盘的命令包括但不限于读命令、写命令、擦除命令等。
需要说明的是,Nomap映射表是预先设置于主控1的SRAM内的一张映射表,其包括多个条目,条目的具体数量跟固态硬盘的容量以及Nomap映射表的映射颗粒度的大小相关,此外,主控1的固件算法中包括一张FTL映射表,该FTL映射表包括多个逻辑地址区间,记录了固态硬盘的存储空间的逻辑地址到物理地址之间的转换关系,其中,Nomap映射表的每一个条目对应FTL映射表的一个逻辑地址区间,每个逻辑地址区间涵盖了FTL映射表的多个条目。Nomap映射表的每一个条目均可表示某个逻辑地址区间是否存储有数据,该Nomap映射表的每一个条目的值包括1和0,当条目的值为1时,则表示该条目对应的逻辑地址区间未写入数据或者写入的数据被擦除了,当条目的值为0时,则表示该条目对应的逻辑地址区间已写入数据。Nomap映射表的每一个条目的初始值均为1。
进一步的,为了节省成本,考虑到主控1的SRAM存储器价格昂贵,Nomap映射表的映射颗粒度设置较大,大于FTL映射表,从而缩小整个Nomap映射表的大小,节省Nomap映射表占用的SRAM存储器的空间,本实施例中Nomap映射表的映射颗粒度的大小优选为32MB,需要理解的是,Nomap映射表的映射颗粒度的大小可根据SRAM存储器的可用空间进行调整。例如,以1TB容量的固态硬盘为例,假设Nomap映射表的映射颗粒度的大小为32MB,则该Nomap映射表一共包括有1TB/32MB=32768个条目,每个条目占1bit,对应一个32MB的逻辑地址区间,则该Nomap映射表需要占据的存储空间的大小为:1bit*32768=4KB,此时,占用的存储空间较小。若Nomap映射表的映射颗粒度的大小缩小至16MB,则Nomap映射表的条目数翻倍,其占据的存储空间的大小也将翻倍。
进一步的,为了提升主机与Nomap数据生成器11之间数据的传输速率,上述实施例的基础上,其他实施例中,Nomap数据生成器11与主机通过PCIe链路连接,Nomap数据生成器11直接生成与Nomap命令对应的具有固定模式的Nomap数据并通过PCIe链路发给主机,从而提升Nomap数据生成器11与主机之间的数据传输速率。
进一步地,上述实施例的基础上,其他实施例中,当主控1接收的命令是读命令时,主控1还用于解析该读命令并确认读命令指向的至少一个逻辑地址区间,再判断Nomap映射表中与至少一个逻辑地址区间对应的所有的条目的值是否均为1。若所有的条目的值均为1,则说明该条读命令所指向的逻辑地址区间未写入数据或写入的数据已被擦除,确定该读命令为Nomap命令,并控制Nomap数据生成器11反馈与Nomap命令对应的Nomap数据至主机。若所有的条目的值不是均为1,则确定该读命令不是Nomap命令,则按照现有架构通路将该读命令传输至固件算法处理。,
具体地,当读命令不是Nomap命令时,主控1通过固件算法解析读命令并确认读命令指向的至少一个逻辑地址区间,读取至少一个逻辑地址区间对应的物理存储空间存储的数据,并反馈至主机,完成该条读命令。
进一步的,主机发送的命令还包括写命令和擦除命令,固态硬盘在处理主机发送的写命令和擦除命令后,Nomap映射表中条目的值也会发生变化,因此,上述实施例的基础上,其他实施例中,当主控1接收到的命令是写命令时,主控1通过固件算法解析写命令并确认写命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置0,以完成对Nomap映射表的更新,再将写命令的数据存储至至少一个逻辑地址区间对应的物理存储空间。
在另一些实施例中,当命令是擦除命令时,主控1通过固件算法解析擦除命令并确认擦除命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置1,以完成对Nomap映射表的更新,再将至少一个逻辑地址区间对应的物理存储空间存储的数据擦除。
进一步的,为了避免固态硬盘断电时,存储在主控1的SRAM的Nomap映射表无法存储,上述实施例的基础上,其他实施例中,主控1还用于间隔预设时间段提取Nomap映射表并存储至固态硬盘的闪存2,并当检测到固态硬盘重新上电时,从闪存2中读取Nomap映射表。
具体地,当固态硬盘处于工作状态时,每间隔预设时间段将主控1的SRAM中记录的Nomap映射表存储至固态硬盘的闪存2中,作好对Nomap映射表的备份,该预设时间段可进行预先设定。当固态硬盘断电,并重新上电时,主控1立即从闪存2中读取该Nomap映射表,并写入主控1的SRAM,方便后续根据主机发送的命令维护该Nomap映射表。
需要理解的是,固态硬盘在断电之前均会将Nomap映射表存储至闪存2中。
进一步的,在一些实施例中,还可通过FTL映射表来获取各个逻辑地址区间存储数据的情况,再根据各个逻辑地址区间存储数据的情况对Nomap映射表进行更新或重建,例如:在获取FTL映射表中各个逻辑地址区间存储数据的情况之后,对应的更新Nomap映射表中各个条目的值。
如图1所示,本实施例中,该提高固态硬盘读性能的方法包括以下步骤:
步骤S1,主控接收主机发送的命令。
需要说明的是,主机发送至固态硬盘的命令包括但不限于读命令、写命令、擦除命令等。
步骤S2,当命令是读命令时,根据主控内预设的Nomap映射表判断读命令是否为Nomap命令。
具体地,主控在接收到主机发送的命令之后,判断该命令是否为读命令,若该命令是读命令,再通过固态硬盘主控内预设的Nomap映射表判断该读命令是否为Nomap命令。当该读命令是Nomap命令时,执行步骤S3;当该读命令不是Nomap命令时,则按照现有架构通路将命令交给固态硬盘的固件处理。
需要说明的是,Nomap映射表是预先设置于固态硬盘的主控的SRAM(静态随机存取存储器)内的一张映射表,其包括多个条目,条目的具体数量跟固态硬盘的容量以及Nomap映射表的映射颗粒度的大小相关,此外,固态硬盘的固件算法中包括一张FTL映射表,该FTL映射表包括多个逻辑地址区间,记录了固态硬盘的存储空间的逻辑地址到物理地址之间的转换关系,其中,Nomap映射表的每一个条目对应FTL映射表的一个逻辑地址区间,每个逻辑地址区间涵盖了FTL映射表的多个条目。Nomap映射表的每一个条目均可表示某个逻辑地址区间是否存储有数据,该Nomap映射表的每一个条目的值包括1和0,当条目的值为1时,则表示该条目对应的逻辑地址区间未写入数据或者写入的数据被擦除了,当条目的值为0时,则表示该条目对应的逻辑地址区间已写入数据。Nomap映射表的每一个条目的初始值均为1。
进一步的,为了节省成本,考虑到主控的SRAM存储器价格昂贵,Nomap映射表的映射颗粒度设置较大,从而缩小整个Nomap映射表的大小,节省Nomap映射表占用的SRAM存储器的空间,本实施例中Nomap映射表的映射颗粒度的大小优选为32MB,需要理解的是,Nomap映射表的映射颗粒度的大小可根据SRAM存储器的可用空间进行调整。例如,以1TB容量的固态硬盘为例,假设Nomap映射表的映射颗粒度的大小为32MB,则该Nomap映射表一共包括有1TB/32MB=32768个条目,每个条目占1bit,对应一个32MB的逻辑地址区间,则该Nomap映射表需要占据的存储空间的大小为:1bit*32768=4KB,此时,占用的存储空间较小。若Nomap映射表的映射颗粒度的大小缩小至16MB,则Nomap映射表的条目数翻倍,其占据的存储空间的大小也将翻倍。
进一步的,如图3所示,上述步骤S2包括:
步骤S10,解析读命令并确认读命令指向的至少一个逻辑地址区间。
步骤S11,判断Nomap映射表中与至少一个逻辑地址区间对应的所有的条目的值是否均为1。若是,则执行步骤S12;若否,则执行步骤S13。
具体地,在确认读命令指向的所有逻辑地址区间之后,确认这些逻辑地址区间在Nomap映射表中对应的条目的值是否均为1,若均为1,则说明该条读命令所指向的逻辑地址区间未写入数据或写入的数据已被擦除,则执行步骤S22。如果至少有一个条目的值等于0,则该读命令不是完全Nomap的。
步骤S12,确定读命令为Nomap命令。
步骤S13,确定读命令不是Nomap命令,传输至固件算法处理。
具体地,当确定读命令不是Nomap命令时,则将该条读命令按照现有架构通路交给固态硬盘的固件处理。因此,进一步的,步骤S13之后,还包括:
步骤S14,固件算法解析读命令并确认读命令指向的至少一个逻辑地址区间。
步骤S15,读取至少一个逻辑地址区间对应的物理存储空间存储的数据,并反馈至主机。
本实施例中,当主机发送的读命令不是Nomap命令时,解析该读命令指向的所有逻辑地址区间,并获取所有逻辑地址区间对应的存储空间存储的数据,并将这些数据反馈主机,完成该读命令。
本发明实施例通过Nomap映射表中条目的值,即可快速确认接收到的读命令是否为Nomap命令。
步骤S3,主控控制其预置的Nomap数据生成器直接反馈与Nomap命令对应的Nomap数据至主机。
需要说明的是,Nomap数据生成器中存储着一定位宽的数据,比如32bit的0。而这个数据是由固件在初始化主控时配置,也可以在命令完成的节点后动态的切换成其它值。
具体地,当确定读命令为Nomap命令时,固态硬盘的主机则控制预置的Nomap数据生成器反馈该读命令对应的Nomap数据至主机,而不需要将该条读命令发送至固件进行处理。具体地,Nomap数据生成器直接生成与Nomap命令对应的具有固定模式的Nomap数据并通过PCIe链路发给主机。
本发明实施例中,在主控接收到主机发送的命令之后,通过自身内预先设置的Nomap映射表判断该命令是否为Nomap命令,若是,则通过主控内预置的Nomap数据生成器直接反馈与Nomap命令对应的Nomap数据至主机,而不需要再经固态硬盘的固件算法对命令处理后反馈给主机,从而大大缩减了针对于Nomap数据的处理流程,节省了存储资源,提升了固态硬盘的读性能。
将本发明的提高固态硬盘读性能的方法应用于固态硬盘的过程中,主机发送的命令还包括写命令和擦除命令,固态硬盘在处理主机发送的写命令和擦除命令后,Nomap映射表中条目的值也会发生变化。因此,上述实施例的基础上,其他实施例中,如图4所示,在步骤S1之后,该提高固态硬盘读性能的方法还包括以下步骤:
步骤S20,当命令是写命令时,解析写命令并确认写命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置0,再将写命令的数据存储至至少一个逻辑地址区间对应的物理存储空间。
具体地,当接收到主机发送的命令为写命令时,解析该条写命令指向的所有逻辑地址区间,再将每一个逻辑地址区间对应的条目的值置0,完成对Nomap映射表的更新。
步骤S21,当命令是擦除命令时,解析擦除命令并确认擦除命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置1,再将至少一个逻辑地址区间对应的物理存储空间存储的数据擦除。
具体地,当接收到主机发送的命令是擦除命令时,解析该条擦除命令指向的所有逻辑地址区间,再将每一个逻辑地址区间对应的条目的值置1,完成对Nomap映射表的更新
本发明实施例在接收到主机发送的写命令时,根据Nomap映射表和逻辑地址区间之间的对应关系对Nomap映射表中相关的条目值置0,在接收到主机发送的擦除命令时,根据Nomap映射表和逻辑地址区间之间的对应关系对Nomap映射表中相关的条目值置1,从而完成对Nomap映射表的更新。
进一步的,在固态硬盘工作时,Nomap映射表存储于主控的SRAM,在固态硬盘断电时,主控的SRAM无法存储该Nomap映射表,因此,如图5所示,该提高固态硬盘读性能的方法还包括:
步骤S30,间隔预设时间段提取Nomap映射表并存储至固态硬盘的闪存。
具体地,当固态硬盘处于工作状态时,每间隔预设时间段将主控中记录的Nomap映射表存储至固态硬盘的闪存中,作好对Nomap映射表的备份,该预设时间段可进行预先设定。
步骤S31,每检测到固态硬盘重新上电,则从闪存中读取Nomap映射表。
具体地,在固态硬盘重新上电时,固态硬盘的主控立即从闪存中读取该Nomap映射表,并写入主控的SRAM,方便后续根据主机发送的命令维护该Nomap映射表。
需要理解的是,固态硬盘在断电之前均会将Nomap映射表存储至闪存中。
进一步的,在一些实施例中,还可通过FTL映射表来获取各个逻辑地址区间存储数据的情况,再根据各个逻辑地址区间存储数据的情况对Nomap映射表进行更新或重建,例如:在获取FTL映射表中各个逻辑地址区间存储数据的情况之后,对应的更新Nomap映射表中各个条目的值。
本发明实施例通过定期将Nomap映射表存储至闪存,在固态硬盘断电后重新上电时,主控可以立即从闪存中获取Nomap映射表,方便主控对主机发送的命令进行响应,并且,还可避免固态硬盘突然断电导致Nomap映射表丢失的情况出现。
图6展示了本发明提高固态硬盘读性能的***一个实施例的示意图。如图6所示,该提高固态硬盘读性能的***包括接收模块10、判断模块11和反馈模块12。
其中,接收模块10,用于主控接收主机发送的命令;判断模块11,用于当命令是读命令时,根据主控内预设的Nomap映射表判断读命令是否为Nomap命令;反馈模块12,用于当读命令是Nomap命令时,主控控制其预置的Nomap数据生成器直接反馈与Nomap命令对应的Nomap数据至主机。
上述实施例的基础上,其他实施例中,固态硬盘的固件算法中包括FTL映射表;Nomap映射表是预先设置于主控内的一张映射表,由主控进行维护,其包括多个条目,且每一个条目对应FTL映射表的一个逻辑地址区间,逻辑地址区间涵盖了FTL映射表的多个条目,Nomap映射表的每一个条目的初始值均为1。
上述实施例的基础上,其他实施例中,Nomap表的映射颗粒度大于固件内的FTL映射表;Nomap映射表的映射颗粒度的大小为32MB。
上述实施例的基础上,其他实施例中,Nomap数据生成器直接生成与Nomap命令对应的具有固定模式的Nomap数据并通过PCIe链路发给主机。
上述实施例的基础上,其他实施例中,判断模块11根据预设的Nomap映射表判断读命令是否为Nomap命令,具体包括:解析读命令并确认读命令指向的至少一个逻辑地址区间;判断Nomap映射表中与至少一个逻辑地址区间对应的所有的条目的值是否均为1;若是,则确定读命令为Nomap命令;若否,则确定读命令不是Nomap命令,传输至固件算法处理。
上述实施例的基础上,其他实施例中,当判断模块11判定读命令不是Nomap命令时,固件算法解析读命令并确认读命令指向的至少一个逻辑地址区间;读取至少一个逻辑地址区间对应的物理存储空间存储的数据,并反馈至主机。
上述实施例的基础上,其他实施例中,接收模块11接收主机发送的命令之后,还包括:当命令是写命令时,解析写命令并确认写命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置0,再将写命令的数据存储至至少一个逻辑地址区间对应的物理存储空间;当命令是擦除命令时,解析擦除命令并确认擦除命令指向的至少一个逻辑地址区间;将Nomap映射表中与至少一个逻辑地址区间对应的所有条目的值置1,再将至少一个逻辑地址区间对应的物理存储空间存储的数据擦除。
上述实施例的基础上,其他实施例中,如图7所示,该提高固态硬盘读性能的***还包括提取模块20和读取模块21。
其中,提取模块20,用于间隔预设时间段提取Nomap映射表并存储至固态硬盘的闪存;读取模块21,用于每检测到固态硬盘重新上电,则从闪存中读取Nomap映射表。
关于上述实施例中提高固态硬盘读性能的***各模块实现技术方案的其他细节,可参见上述实施例中的提高固态硬盘读性能的方法中的描述,此处不再赘述。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
图8展示了本发明一个实施例提供的固态硬盘的示意框图,参见图8,该实施例中的固态硬盘包括:一个或至少两个处理器80、存储器81以及存储在该存储器81中并可在处理器80上运行的计算机程序810。处理器80执行计算机程序810时,实现上述实施例描述的提高固态硬盘读性能的方法中的步骤,例如:图1所示的步骤S1-步骤S3。或者,处理器80执行计算机程序810时,实现上述提高固态硬盘读性能的***实施例中各模块/单元的功能,例如:图6所示模块10-模块12的功能。
计算机程序810可以被分割成一个或多个模块/单元,一个或者多个模块/单元被存储在存储器81中,并由处理器80执行,以完成本申请。一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序810在固态硬盘中的执行过程。
固态硬盘包括但不仅限于处理器80、存储器81。本领域技术人员可以理解,图8仅仅是固态硬盘的一个示例,并不构成对固态硬盘的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
处理器80可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
存储器81可以是只读存储器、可存储静态信息和指令的静态存储设备、随机存取存储器、或者可存储信息和指令的动态存储设备,也可以是电可擦可编程只读存储器、只读光盘、或其他光盘存储、光碟存储、磁盘存储介质或者其他磁存储设备。存储器81与处理器80可以通过通信总线相连接,也可以和处理器80集成在一起。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的***和方法,可以通过其它的方式实现。例如,以上所描述的***实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本申请实施例还提供了一种存储介质,用于存储计算机程序,其包含用于执行本申请上述提高固态硬盘读性能的方法实施例所设计的程序数据。通过执行该存储介质中存储的计算机程序,可以实现本申请提供的提高固态硬盘读性能的方法。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序810来指令相关的硬件来完成,计算机程序810可存储于一计算机可读存储介质中,该计算机程序810在被处理器80执行时,可实现上述各个方法实施例的步骤。其中,计算机程序810包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AccessMemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
以上对发明的具体实施方式进行了详细说明,但其只作为范例,本发明并不限制于以上描述的具体实施方式。对于本领域的技术人员而言,任何对该发明进行的等同修改或替代也都在本发明的范畴之中,因此,在不脱离本发明的精神和原则范围下所作的均等变换和修改、改进等,都应涵盖在本发明的范围内。
Claims (10)
1.一种提高固态硬盘读性能的方法,其特征在于,其包括:
主控接收主机发送的命令;
当所述命令是读命令时,根据主控内预设的Nomap映射表判断所述读命令是否为Nomap命令;
当所述读命令是Nomap命令时,主控控制其预置的Nomap数据生成器直接反馈与所述Nomap命令对应的Nomap数据至所述主机。
2.根据权利要求1所述的提高固态硬盘读性能的方法,其特征在于,所述主控存储有固件算法,所述固件算法中包括FTL映射表;所述Nomap映射表是预先设置于主控内的一张映射表,由主控进行维护,其包括多个条目,且每一个条目对应所述FTL映射表的一个逻辑地址区间,所述逻辑地址区间涵盖了所述FTL映射表的多个条目,所述Nomap映射表的每一个条目的初始值均为1。
3.根据权利要求1所述的提高固态硬盘读性能的方法,其特征在于,所述Nomap表的映射颗粒度大于固件内的FTL映射表;所述Nomap映射表的映射颗粒度的大小为32MB。
4.根据权利要求3所述的提高固态硬盘读性能的方法,其特征在于,所述Nomap数据生成器直接生成与所述Nomap命令对应的具有固定模式的Nomap数据并通过PCIe链路发给主机。
5.根据权利要求2所述的提高固态硬盘读性能的方法,其特征在于,根据预设的Nomap映射表判断所述读命令是否为Nomap命令的步骤包括:
解析所述读命令并确认所述读命令指向的至少一个逻辑地址区间;
判断所述Nomap映射表中与所述至少一个逻辑地址区间对应的所有的条目的值是否均为1;
若是,则确定所述读命令为Nomap命令;
若否,则确定所述读命令不是Nomap命令,传输至所述固件算法处理。
6.根据权利要求5所述的提高固态硬盘读性能的方法,其特征在于,当所述读命令不是Nomap命令时,固件算法解析所述读命令并确认所述读命令指向的至少一个逻辑地址区间;
读取所述至少一个逻辑地址区间对应的物理存储空间存储的数据,并反馈至所述主机。
7.根据权利要求2所述的提高固态硬盘读性能的方法,其特征在于,接收主机发送的命令的步骤之后,还包括:
当所述命令是写命令时,解析所述写命令并确认所述写命令指向的至少一个逻辑地址区间;将所述Nomap映射表中与所述至少一个逻辑地址区间对应的所有条目的值置0,再将所述写命令的数据存储至所述至少一个逻辑地址区间对应的物理存储空间;
当所述命令是擦除命令时,解析所述擦除命令并确认所述擦除命令指向的至少一个逻辑地址区间;将所述Nomap映射表中与所述至少一个逻辑地址区间对应的所有条目的值置1,再将所述至少一个逻辑地址区间对应的物理存储空间存储的数据擦除。
8.根据权利要求1所述的提高固态硬盘读性能的方法,其特征在于,所述方法还包括:
间隔预设时间段提取所述Nomap映射表并存储至所述固态硬盘的闪存;
每检测到固态硬盘重新上电,则从所述闪存中读取所述Nomap映射表。
9.一种固态硬盘,包括存储器和处理器,所述处理器耦接所述存储器,所述存储器上存储有可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时,实现权利要求1-8任一项所述提高固态硬盘读性能的方法中的步骤。
10.一种存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时,实现权利要求1-8任一项所述提高固态硬盘读性能的方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910692420.3A CN110399312A (zh) | 2019-07-30 | 2019-07-30 | 提高固态硬盘读性能的方法、固态硬盘及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910692420.3A CN110399312A (zh) | 2019-07-30 | 2019-07-30 | 提高固态硬盘读性能的方法、固态硬盘及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110399312A true CN110399312A (zh) | 2019-11-01 |
Family
ID=68326493
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910692420.3A Pending CN110399312A (zh) | 2019-07-30 | 2019-07-30 | 提高固态硬盘读性能的方法、固态硬盘及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110399312A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111522725A (zh) * | 2020-04-23 | 2020-08-11 | 深圳忆联信息***有限公司 | Ssd性能自动评估方法、装置、设备及介质 |
CN111625284A (zh) * | 2020-05-28 | 2020-09-04 | 深圳忆联信息***有限公司 | 固态硬盘的低功耗模式唤醒恢复方法、装置和计算机设备 |
CN111752367A (zh) * | 2020-06-12 | 2020-10-09 | 深圳忆联信息***有限公司 | 固态硬盘功耗降低方法、装置、计算机设备和存储介质 |
CN113495830A (zh) * | 2020-04-02 | 2021-10-12 | 深圳星火半导体科技有限公司 | 垃圾回收算法效率的测试分析方法及*** |
CN113687990A (zh) * | 2021-08-24 | 2021-11-23 | 深圳忆联信息***有限公司 | 硬盘驱动命令队列的获取方法、装置及计算机设备 |
CN114327272A (zh) * | 2021-12-28 | 2022-04-12 | 深圳大普微电子科技有限公司 | 一种数据处理方法、固态硬盘控制器及固态硬盘 |
CN116257460A (zh) * | 2021-12-02 | 2023-06-13 | 联芸科技(杭州)股份有限公司 | 基于固态硬盘的Trim命令处理方法及固态硬盘 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461387A (zh) * | 2014-12-02 | 2015-03-25 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘对未映射区域的读性能的方法 |
US20170228162A1 (en) * | 2016-02-05 | 2017-08-10 | Phison Electronics Corp. | Memory management method, memory control circuit unit and memory storage device |
CN107832237A (zh) * | 2017-11-22 | 2018-03-23 | 深圳忆联信息***有限公司 | 一种快速重建未映射表的方法及固态硬盘 |
CN108549610A (zh) * | 2018-03-27 | 2018-09-18 | 深圳忆联信息***有限公司 | 一种NVMe扩展的实现方法及固态硬盘 |
CN108572797A (zh) * | 2018-03-07 | 2018-09-25 | 深圳忆联信息***有限公司 | 一种固态硬盘读性能加速方法 |
CN109375870A (zh) * | 2018-09-18 | 2019-02-22 | 深圳忆联信息***有限公司 | 一种加速ssd主控芯片d2h无映射读取的方法及其*** |
-
2019
- 2019-07-30 CN CN201910692420.3A patent/CN110399312A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104461387A (zh) * | 2014-12-02 | 2015-03-25 | 记忆科技(深圳)有限公司 | 一种提高固态硬盘对未映射区域的读性能的方法 |
US20170228162A1 (en) * | 2016-02-05 | 2017-08-10 | Phison Electronics Corp. | Memory management method, memory control circuit unit and memory storage device |
CN107832237A (zh) * | 2017-11-22 | 2018-03-23 | 深圳忆联信息***有限公司 | 一种快速重建未映射表的方法及固态硬盘 |
CN108572797A (zh) * | 2018-03-07 | 2018-09-25 | 深圳忆联信息***有限公司 | 一种固态硬盘读性能加速方法 |
CN108549610A (zh) * | 2018-03-27 | 2018-09-18 | 深圳忆联信息***有限公司 | 一种NVMe扩展的实现方法及固态硬盘 |
CN109375870A (zh) * | 2018-09-18 | 2019-02-22 | 深圳忆联信息***有限公司 | 一种加速ssd主控芯片d2h无映射读取的方法及其*** |
Non-Patent Citations (2)
Title |
---|
樊进;谭守标;陈军宁;: "一种变粒度的闪存地址映射方案", 中国科学技术大学学报, no. 10 * |
马淑婧: "基于iSCSI协议的虚拟磁盘的设计与实现", 中国优秀硕士学位论文全文数据库, no. 6 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113495830A (zh) * | 2020-04-02 | 2021-10-12 | 深圳星火半导体科技有限公司 | 垃圾回收算法效率的测试分析方法及*** |
CN111522725A (zh) * | 2020-04-23 | 2020-08-11 | 深圳忆联信息***有限公司 | Ssd性能自动评估方法、装置、设备及介质 |
CN111625284A (zh) * | 2020-05-28 | 2020-09-04 | 深圳忆联信息***有限公司 | 固态硬盘的低功耗模式唤醒恢复方法、装置和计算机设备 |
CN111752367A (zh) * | 2020-06-12 | 2020-10-09 | 深圳忆联信息***有限公司 | 固态硬盘功耗降低方法、装置、计算机设备和存储介质 |
CN111752367B (zh) * | 2020-06-12 | 2021-10-26 | 深圳忆联信息***有限公司 | 固态硬盘功耗降低方法、装置、计算机设备和存储介质 |
CN113687990A (zh) * | 2021-08-24 | 2021-11-23 | 深圳忆联信息***有限公司 | 硬盘驱动命令队列的获取方法、装置及计算机设备 |
CN116257460A (zh) * | 2021-12-02 | 2023-06-13 | 联芸科技(杭州)股份有限公司 | 基于固态硬盘的Trim命令处理方法及固态硬盘 |
CN116257460B (zh) * | 2021-12-02 | 2023-10-31 | 联芸科技(杭州)股份有限公司 | 基于固态硬盘的Trim命令处理方法及固态硬盘 |
CN114327272A (zh) * | 2021-12-28 | 2022-04-12 | 深圳大普微电子科技有限公司 | 一种数据处理方法、固态硬盘控制器及固态硬盘 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110399312A (zh) | 提高固态硬盘读性能的方法、固态硬盘及存储介质 | |
US8521986B2 (en) | Allocating storage memory based on future file size or use estimates | |
CN103678150B (zh) | 固态硬盘使用方法及装置 | |
US20140006687A1 (en) | Data Cache Apparatus, Data Storage System and Method | |
US8478934B2 (en) | Managing extended RAID caches using counting bloom filters | |
JP2009530709A5 (zh) | ||
CN103268204A (zh) | 固态硬盘的调优方法及装置 | |
CN112860466B (zh) | 一种车载娱乐***重启故障诊断方法和*** | |
CN101673243A (zh) | 数据储存装置与方法 | |
CN103678149A (zh) | 数据处理的方法及设备 | |
CN101763220B (zh) | 一种数据更新的方法、控制器及存储*** | |
CN110362275A (zh) | 提升固态硬盘服务质量的方法及固态硬盘 | |
CN111722690B (zh) | 服务器电源模块监控方法、装置、服务器和存储介质 | |
CN109213509A (zh) | 一种raid卡的升级方法、升级***及相关装置 | |
US10146623B2 (en) | Indicating rebuild state of storage devices | |
CN103631682B (zh) | 数据备份的实现方法和装置 | |
CN104932830A (zh) | 信息处理方法及电子设备 | |
CN102122262A (zh) | 一种用于固态存储设备的监控***及方法 | |
CN108519860B (zh) | 一种ssd读命中的处理方法和装置 | |
CN110334034A (zh) | 映射表动态加载的方法、装置、计算机设备及存储介质 | |
CN114116275A (zh) | 终端异常修复方法、装置、存储介质及电子设备 | |
CN112506686A (zh) | 一种dcs控制器日志***实现方法和装置 | |
CN109491593B (zh) | 一种数据存储管理***及方法 | |
CN106919487A (zh) | NVMe门铃处理方法及其装置 | |
US9244832B1 (en) | Cache learning model |
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 |