CN111752484B - 一种ssd控制器、固态硬盘及数据写入方法 - Google Patents

一种ssd控制器、固态硬盘及数据写入方法 Download PDF

Info

Publication number
CN111752484B
CN111752484B CN202010514607.7A CN202010514607A CN111752484B CN 111752484 B CN111752484 B CN 111752484B CN 202010514607 A CN202010514607 A CN 202010514607A CN 111752484 B CN111752484 B CN 111752484B
Authority
CN
China
Prior art keywords
controller
available
cache
base address
space
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202010514607.7A
Other languages
English (en)
Other versions
CN111752484A (zh
Inventor
冯涛
李文江
杨亚飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenzhen Dapu Microelectronics Co Ltd
Original Assignee
Shenzhen Dapu Microelectronics Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shenzhen Dapu Microelectronics Co Ltd filed Critical Shenzhen Dapu Microelectronics Co Ltd
Priority to CN202010514607.7A priority Critical patent/CN111752484B/zh
Publication of CN111752484A publication Critical patent/CN111752484A/zh
Application granted granted Critical
Publication of CN111752484B publication Critical patent/CN111752484B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0656Data buffering arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0655Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
    • G06F3/0658Controller construction arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/0679Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]

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)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明实施例涉及固态硬盘技术领域,公开了一种SSD控制器、固态硬盘及数据写入方法。包括:NVMe控制器,用于获取写命令;中央处理器,与NVMe控制器电连接,用于接收并解析写命令,并返回给NVMe控制器,使NVMe控制器根据写命令,搜索缓存存储器的可用缓存空间的基地址,且从主机获取主机数据;缓存控制器,与NVMe控制器电连接,用于根据可用缓存空间的基地址,将主机数据写入缓存存储器,且使中央处理器产生数据搬移指令;NAND Flash控制器,分别与缓存控制器和中央处理器电连接,用于根据数据搬移指令,将主机数据移出至NAND Flash存储器,且使中央处理器产生释放命令,以使NVMe控制器根据释放命令释放可用缓存空间。通过上述方式,本发明实施例提升了SSD控制器的写性能。

Description

一种SSD控制器、固态硬盘及数据写入方法
技术领域
本发明涉及固态硬盘技术领域,特别是涉及一种SSD控制器、固态硬盘及数据写入方法。
背景技术
固态硬盘包括SSD控制器和SSD存储器(包括缓存存储器和NAND Flash存储器),SSD控制器主要由总线接口、NVMe控制器、中央处理器、缓存控制器以及NAND Flash控制器组成,用于控制固态硬盘的数据存储和数据读取过程。
目前,当SSD控制器执行写命令时,一般采用软件方式申请和释放缓存空间,即当中央处理器接收到写命令时,搜索与写命令大小一致的可用缓存空间,以申请缓存空间;当主机数据从缓存存储器写入到NAND Flash存储器时,中央处理器释放该可用缓存空间,以释放缓存空间。上述方式占用中央处理器的资源且可用缓存空间搜索时间较长,导致写命令的完成时间较长,缓存空间的利用率较低,从而影响SSD控制器的写性能。
发明内容
本发明实施例旨在提供一种SSD控制器、固态硬盘及数据写入方法,其能够提升SSD控制器的写性能。
为解决上述技术问题,本发明实施例提供以下技术方案:
第一方面,本发明实施例提供一种SSD控制器,包括:
NVMe控制器,用于获取写命令;
中央处理器,与所述NVMe控制器电连接,用于接收并解析所述写命令,将解析后的所述写命令返回给所述NVMe控制器,使得所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,并且当所述NVMe控制器搜索到可用缓存空间的基地址时,从主机获取主机数据;
缓存控制器,与所述NVMe控制器电连接,用于根据可用缓存空间的基地址,将所述主机数据写入所述缓存存储器,并且当所述主机数据全部写入后,使得所述NVMe控制器向所述中央处理器发送空间提交指令,以使所述中央处理器根据所述空间提交指令,产生数据搬移指令;
NAND Flash控制器,分别与所述缓存控制器和所述中央处理器电连接,用于根据所述数据搬移指令,通过所述缓存控制器将所述主机数据从所述缓存存储器移出并写入与所述NAND Flash控制器电连接的NAND Flash存储器,并且当所述主机数据全部写入所述NAND Flash存储器后,使得所述中央处理器产生释放命令,以使所述NVMe控制器根据所述释放命令释放所述可用缓存空间。
在一些实施例中,所述NVMe控制器包括:
位图寄存器,包括若干个管理单元,所述位图寄存器用于记录所述若干个管理单元对应的缓存空间的使用状态,所述使用状态包括可用状态与不可用状态;
可用缓存搜索模块;
释放队列模块,用于当所述主机数据全部写入所述NAND Flash存储器后,根据所述释放命令,写入所述中央处理器发送的已使用的可用缓存空间的基地址;
状态机,分别与所述位图寄存器、所述可用缓存搜索模块以及所述释放队列模块电连接,用于根据所述写命令,控制所述可用缓存搜索模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为不可用状态。
在一些实施例中,所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,包括:
所述NVMe控制器根据所述写命令的大小,搜索位图寄存器;
根据所述位图寄存器中每个管理单元记录的使用状态,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址。
在一些实施例中,所述可用缓存搜索模块包括:
预取队列模块,用于预先存储可用缓存空间的基地址;
查找模块,分别与所述状态机和所述预取队列模块电连接,当所述状态机检测到所述写命令且所述预取队列模块处于空状态时,所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,当所述状态机未检测到所述写命令时,所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至所述预取队列模块;
数据选择器,分别与所述状态机、所述预取队列模块及所述查找模块电连接,当所述状态机检测到所述写命令且所述预取队列模块处于空状态时,所述数据选择器输出所述查找模块搜索的可用缓存空间的基地址,当所述状态机检测到所述写命令且所述预取队列模块处于非空状态时,所述数据选择器输出所述预取队列模块预先存储的可用缓存空间的基地址。
在一些实施例中,当所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址时,在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为不可用状态;
当所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至所述预取队列模块时,在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为不可用状态。
在一些实施例中,所述释放命令的中断优先级高于所述写命令的中断优先级。
在一些实施例中,所述查找模块采用二分法搜索可用缓存空间的基地址。
在一些实施例中,当所述状态机检测到所述释放命令,且所述释放队列模块根据所述释放命令,写入所述中央处理器发送的已使用的可用缓存空间的基地址时,在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为可用状态。
第二方面,本发明实施例提供一种固态硬盘,包括:
缓存存储器;
NAND Flash存储器;以及,
如上任一项所述的SSD控制器,分别与所述缓存存储器和所述NAND Flash存储器电连接,还与主机通信连接。
第三方面,本发明实施例提供了一种数据写入方法,应用于如上一项所述的SSD控制器,包括:
NVMe控制器获取写命令;
中央处理器接收并解析所述写命令,将解析后的所述写命令返回给所述NVMe控制器,使得所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,并且当所述NVMe控制器搜索到可用缓存空间的基地址时,从主机获取主机数据;
缓存控制器将所述主机数据写入所述缓存存储器,并且当所述主机数据全部写入后,使得所述NVMe控制器向所述中央处理器发送空间提交指令,以使所述中央处理器根据所述空间提交指令,产生数据搬移指令;
NAND Flash控制器用于根据所述数据搬移指令,通过所述缓存控制器将所述主机数据从所述缓存存储器移出并写入与所述NAND Flash控制器电连接的NAND Flash存储器,并且当所述主机数据全部写入所述NAND Flash存储器后,使得所述中央处理器产生释放命令,以使所述NVMe控制器根据所述释放命令释放所述可用缓存空间。
第四方面,本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使SSD控制器能够执行如上任一项所述的数据写入方法。
本发明实施例的有益效果是:区别于现有技术的情况下,本发明实施例提供的一种SSD控制器、固态硬盘及数据写入方法,通过NVMe控制器申请及释放可用缓存空间,避免了软件方式申请和释放缓存空间占用中央处理器的资源且可用缓存空间搜索时间较长导致的写命令的完成时间较长和缓存空间的利用率较低的问题,从而提升了SSD控制器的写性能。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明实施例提供的一种固态硬盘的结构示意图;
图2是本发明实施例提供的一种SSD控制器的结构示意图;
图3是图2所示的NVMe控制器的结构示意图;
图4是图3所示的位图寄存器的存储结构示意图;
图5是图3所示的可用缓存搜索模块的结构示意图;
图6是本发明实施例提供的一种数据写入方法的方法流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。另外,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。
此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
请参阅图1,是本发明实施例提供的一种固态硬盘的结构示意图。如图1所示,固态硬盘1与主机2通信连接,其包括缓存存储器11、NAND Flash存储器12以及如本发明任一实施所述的SSD控制器100。
缓存存储器11又称缓冲存储器件,用于缓存用户数据和软件算法的元数据,缓存存储器11既能加快数据访问的速度,以提高固态硬盘1的性能,也能减少NAND Flash存储器12的数据写入,以延长固态硬盘1的寿命。
其中,缓存存储器11可包括双倍数据速率同步动态随机存取存储器(DDR SDRAM)、DDR4SDRAM、低功率双倍数据速率4(LPDDR4)SDRAM、图形双倍数据速率(GDDR)SDRAM、低功率DDR(LPDDR)SDRAM、Rambus动态随机存取存储器(RDRAM)等。
在本申请实施例中,所述缓存存储器11为DDR颗粒,所述DDR颗粒设置有用于缓存主机数据的DDR空间。
在一些实施例中,缓存存储器11作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存存储器11可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据随机编码装置的使用所创建的数据等。此外,缓存存储器11可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存存储器11可包括相对于SSD控制器100远程设置的存储器,这些远程存储器可以通过网络连接至随机编码装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
NAND Flash存储器12是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据。其中,NAND Flash存储器12以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于NAND Flash存储器12的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制删相耦合,当负电子在控制栅的作用下被注入到浮动栅中,NAND Flash存储器12的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即NAND Flash存储器12的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关,具体的,存储单元中是否存储有数据取决于其所存储的电荷的电压是否大于预设电压阈值Vth。
按照存储单元的电压的不同层次,NAND Flash存储器12可分为SLC、MLC、TLC以及QLC。当NAND Flash存储器12的存储单元为SLC类型时,单个存储单元只存储一位数据1或0,当单个存储单元所存储的电荷的电压大于预设电压阈值Vth时,表示存储单元的数据为1;当单个存储单元所存储的电荷的电压小于预设电压阈值Vth时,表示存储单元的数据为0。由于存储单元的默认数据为1,存储单元的数据为0表示将单个存储单元所存储的电荷进行释放,当电荷释放到一定程度使得浮动栅晶体管的电压小于预设电压阈值Vth时,完成写入数据0的操作。当NAND Flash存储器12的存储单元为MLC类型、TLC类型或QLC类型时,单个存储单元可以存储多位数据,以2位数据为例,通过控制存储单元内部电荷的多少,定义多个预设电压阈值Vth,对于写入数据,通过充电过程,控制存储单元内部的电荷的多少,使其落入不同的相邻两个预设电压阈值Vth的区间,对应表示不同的数据00,01,10,11;对于读取数据,则通过获取对应的存储单元内部的电流,然后通过一系列解码电路完成读取,解析出该存储单元所存储的数据00,01,10,11。
一个NAND Flash存储器12包括至少一个Chip芯片,每一个Chip芯片由若干个Block物理块组成,每一个Block物理块包括若干个Page页。其中,Block物理块是NANDFlash存储器12执行擦除操作的最小单位,Page页为NAND Flash存储器12执行读写操作的最小单位,一个NAND Flash存储器12的容量等于其Block物理块的数量*一个Block物理块包含的Page页的数量*一个Page页的容量。
在一些实施例中,为提高固态硬盘1的性能,若干个NAND Flash存储器12被设置在多个通道上,每一个通道上的若干个NAND Flash存储器12共享一条I/O总线。SSD控制器100与每一个通道上的若干个NAND Flash存储器12进行通信,并维护多条操作NAND Flash存储器12的命令队列。
在一些实施例中,固态硬盘1还包括纠错码引擎,纠错码引擎分别与NAND Flash存储器12和SSD控制器100电连接,用于对写入NAND Flash存储器12的主机数据进行编码,将编码产生纠错冗余码写入NAND Flash存储器12的Page页的额外存储区中。当需从NANDFlash存储器12读取数据时,纠错码引擎用于对所述主机数据和所述纠错冗余码进行解码操作。
SSD控制器100分别与缓存存储器11和NAND Flash存储器12电连接,还与主机2通信连接。
请一并参阅图2,是本发明实施例提供的一种SSD控制器的结构示意图。如图2所示,SSD控制器100包括NVMe控制器10、中央处理器20、缓存控制器30以及NAND Flash控制器40。
所述NVMe控制器10用于获取写命令。
NVMe控制器10采用NVMe协议。NVMe协议支持多命令队列,最大可支持65536个命令队列,每个命令队列支持多个命令,最大可支持65536个命令,每个命令可变数据长度位于512B至2MB之间。NVMe协议数据在主机2端内存支持PRP(Physical Region Page)和SGL(Scatter Gather List)的数据结构。NVMe协议支持命令间的乱序执行,也支持命令内数据块的乱序传输,同时支持命令队列间的可变权重处理。
其中,NVMe协议的命令队列分成两种,分别为Admin命令队列和IO命令队列。Admin命令队列负责协议的初始化和管理,不负责用户数据传输,对带宽和响应速度没有要求,一般采用负责前端协议处理的CPU固件进行处理。具体的,CPU固件处理Admin命令队列的门铃,从主存储器抓取命令,并解析命令;根据命令字段,返回或抓取Admin命令的数据段;然后返回completion队列的completion字段。IO命令队列用于数据传输,IO命令队列的轮询和命令的抓取需要doorbell寄存器的持续轮询,命令抓取也需要频繁启动PCIE IP核,因此,SSD控制器100需高效处理命令在各个不同权重的命令队列的抓取、解析和分发。
在一些实施例中,SSD控制器100还包括PCIe总线接口(图未示),NVMe控制器10与PCIe总线接口连接,PCIe总线接口与主机2通过PCIe总线连接。在NVMe控制器10用于获取写命令之前,主机2通过PCIe总线接口更新NVMe控制器10中命令队列的门铃寄存器,然后NVMe控制器10通过PCIe总线接口从主机2获取写命令。
如图3所示,所述NVMe控制器10包括位图寄存器101、可用缓存搜索模块102、释放队列模块103以及状态机104。
所述位图寄存器101包括若干个管理单元,所述位图寄存器101用于记录所述若干个管理单元对应的缓存空间的使用状态,所述使用状态包括可用状态与不可用状态。
在本申请实施例中,NVMe控制器10设置若干组位图寄存器101,每组位图寄存器101的存储单位皆不同。
如图4所示,假设缓存存储器11的逻辑区块地址格式化是4KB,每个命令最大支持的传输为128KB,且写命令对应的缓存空间为8M,则若干组位图寄存器101包括以4KB存储单位的位图寄存器101、以8KB存储单位的位图寄存器101、以16KB存储单位的位图寄存器101、以32KB存储单位的位图寄存器101、以64KB存储单位的位图寄存器101以及以128KB存储单位的位图寄存器101。
其中,每组位图寄存器101包括64个管理单元。以4KB存储单位的位图寄存器101中的每一个管理单元对应4KB的缓存空间。以8KB存储单位的位图寄存器101中的每一个管理单元对应8KB的缓存空间。以16KB存储单位的位图寄存器101中的每一个管理单元对应16KB的缓存空间。以32KB存储单位的位图寄存器101中的每一个管理单元对应32KB的缓存空间。以64KB存储单位的位图寄存器101中的每一个管理单元对应64KB的缓存空间。以128KB存储单位的位图寄存器101中的每一个管理单元对应128KB的缓存空间。当位图寄存器101中的一个管理单元写入“0”,则表示该管理单元对应的缓存空间的使用状态为可用状态,即表示该管理单元对应的缓存空间为可用缓存空间;当位图寄存器101中的一个管理单元写入“1”,则表示该管理单元对应的缓存空间的使用状态为不可用状态,即表示该管理单元对应的缓存空间为非可用缓存空间。
位图寄存器101中的每一个管理单元还包括对应缓存存储器11的缓存空间的基地址,如图4中所示的以4KB存储单位的位图寄存器101包括基地址0x01000、基地址0x02000、基地址0x03000、基地址0x04000、基地址0x05000、基地址0x06000……基地址0x3D000、基地址0x3E000以及基地址0x3F000。例如,以4KB存储单位的位图寄存器101的管理单元1置为“0”,则管理单元1对应的缓存空间为可用缓存空间,基地址0x01000为可用缓存空间的基地址,当搜索可用缓存空间的基地址时,获取被置为“0”的管理单元1的基地址0x01000,当获取到基地址0x01000之后,将位图寄存器101的管理单元1置为“1”,此时,管理单元1对应的缓存空间为非可用缓存空间。
如图5所示,所述可用缓存搜索模块102包括预取队列模块1021、查找模块1022以及数据选择器1023。
所述预取队列模块1021用于预先存储可用缓存空间的基地址。所述查找模块1022分别与所述状态机104和所述预取队列模块1021电连接,当所述状态机104检测到所述写命令且所述预取队列模块1021处于空状态时,所述状态机104触发所述查找模块1022根据所述位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,当所述状态机104未检测到所述写命令时,所述状态机104触发所述查找模块1022根据所述位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至所述预取队列模块1021。
在本申请实施例中,所述查找模块1022采用二分法搜索可用缓存空间的基地址。二分法又称折半法,通过逐次折半的方式快速查找位图寄存器101中第一个为0的位置,以搜索可用缓存空间的基地址。二分法查找适合硬件实现,可在一个时钟周期内得到查找结果,减少缓存空间的搜索时间,从而可降低写命令的完成时间,提升缓存空间的利用率。当可用缓存空间的申请和释放请求时,采用二分法提前搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至预取队列模块1021中,使得NVMe控制器10可快速响应可用缓存空间的申请请求,进一步减少缓存空间的搜索时间。
当所述状态机104触发所述查找模块1022根据所述位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址时,在所述位图寄存器101中,将与所述可用缓存空间对应的使用状态设置为不可用状态;当所述状态机104触发所述查找模块1022根据所述位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至所述预取队列模块1021时,在所述位图寄存器101中,将与所述可用缓存空间对应的使用状态设置为不可用状态。
具体的,当状态机104触发查找模块1022根据位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址时,在位图寄存器101中,将与可用缓存空间对应的管理单元置为“1”;当状态机104触发查找模块1022根据位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将可用缓存空间的基地址存储至预取队列模块1021时,在位图寄存器101中,将与可用缓存空间对应的管理单元置为“1”。
所述数据选择器1023分别与所述状态机104、所述预取队列模块1021及所述查找模块1022电连接,当所述状态机104检测到所述写命令且所述预取队列模块1021处于空状态时,所述数据选择器1023输出所述查找模块1022搜索的可用缓存空间的基地址,当所述状态机104检测到所述写命令且所述预取队列模块1021处于非空状态时,所述数据选择器1023输出所述预取队列模块1021预先存储的可用缓存空间的基地址。
其中,数据选择器1023包括第一输入端、第二输入端以及输出端。第一输入端与预取队列模块1021电连接,用于接收预取队列模块1021输出的可用缓存空间的基地址。第二输入端与查找模块1022电连接,用于接收查找模块1022输出的可用缓存空间的基地址。输出端用于根据状态机104发送的选择信号,选择输出第一输入端或第二输入端接收的可用缓存空间的基地址。
其中,当主机数据全部写入NAND Flash存储器12后,中央处理器20产生释放命令。所述释放命令的中断优先级高于所述写命令的中断优先级。
所述释放队列模块103用于当所述主机数据全部写入所述NAND Flash存储器12后,根据所述释放命令,写入所述中央处理器20发送的已使用的可用缓存空间的基地址。
其中,预取队列模块1021和释放队列模块103均为硬件队列,硬件队列采用先进先出原则,硬件队列的长度较小,使得硬件队列中的数据能被快速地转发,且硬件队列中数据的转发不依赖于中央处理器20,而是通过关联到硬件队列的每一个物理接口上的ASIC直接访问队列中的数据,避免了中央处理器20做中断处理的时间延迟,提升NVMe控制器10的处理速度。
所述状态机104分别与所述位图寄存器101、所述可用缓存搜索模块102以及所述释放队列模块103电连接,用于根据所述写命令,控制所述可用缓存搜索模块102根据所述位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并在所述位图寄存器101中,将与所述可用缓存空间对应的使用状态设置为不可用状态。
其中,状态机104由状态寄存器和组合逻辑电路构成,能够根据控制信号按照预先设定的状态进行状态转移,是协调相关信号动作、完成特定操作的控制中心。
当所述状态机104检测到所述释放命令,且所述释放队列模块103根据所述释放命令,写入所述中央处理器20发送的已使用的可用缓存空间的基地址时,在所述位图寄存器101中,将与所述可用缓存空间对应的使用状态设置为可用状态。
具体的,当状态机104检测到所述释放命令,且释放队列模块103根据释放命令,写入中央处理器20发送的已使用的可用缓存空间的基地址时,在位图寄存器101中,将与可用缓存空间对应的管理单元置为“0”。
综上,状态机104申请和释放可用缓存空间的过程大致如下:
(1)当状态机104检测到写命令、未检测到释放命令且预取队列模块1021处于非空状态时,控制数据选择器1023输出预取队列模块1021预先存储的可用缓存空间的基地址。
(2)当状态机104检测到写命令、未检测到释放命令且预取队列模块1021处于空状态时,触发查找模块1022根据位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并通过数据选择器1023输出,同时,在位图寄存器101中,将与可用缓存空间对应的使用状态设置为不可用状态。
(3)当状态机104未检测到写命令且未检测到释放命令时,触发查找模块1022根据位图寄存器101中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将可用缓存空间的基地址存储至预取队列模块1021,同时,在位图寄存器101中,将与可用缓存空间对应的使用状态设置为不可用状态。
(4)当状态机104检测到释放命令时,由于释放命令的中断优先级高于写命令的中断优先级,控制释放队列模块103根据释放命令,写入中央处理器20发送的已使用的可用缓存空间的基地址,同时,在位图寄存器101中,将与可用缓存空间对应的使用状态设置为可用状态。
需要说明的是,位图寄存器101、预取队列模块1021、查找模块1022、数据选择器1023、释放队列模块103以及状态机104均为硬件结构组成,以使NVMe控制器10实现硬件管理可用缓存空间。
所述中央处理器20与所述NVMe控制器10电连接,用于接收并解析所述写命令,将解析后的所述写命令返回给所述NVMe控制器10,使得所述NVMe控制器10根据所述写命令,搜索与所述SSD控制器100电连接的缓存存储器11的可用缓存空间的基地址,并且当所述NVMe控制器10搜索到可用缓存空间的基地址时,从主机获取主机2数据。
其中,所述NVMe控制器10根据所述写命令,搜索与所述SSD控制器100电连接的缓存存储器11的可用缓存空间的基地址,包括:所述NVMe控制器10根据所述写命令的大小,搜索位图寄存器101;根据所述位图寄存器101中每个管理单元记录的使用状态,搜索与所述SSD控制器100电连接的缓存存储器11的可用缓存空间的基地址。
在本申请实施例中,位图寄存器101的存储单位大小等于写命令的大小。
请再次参阅图4,如果NVMe控制器10从主机2取得的写命令大小为4KB,则搜索以4KB存储单位的位图寄存器101,根据以4KB存储单位的位图寄存器101的每个管理单元记录的使用状态,搜索可用缓存空间的基地址,以获取4KB的可用缓存空间。如果NVMe控制器10从主机2取得的写命令大小为64KB,则搜索以64KB存储单位的位图寄存器101,根据以64KB存储单位的位图寄存器101的每个管理单元记录的使用状态,搜索可用缓存空间的基地址,以获取64KB的可用缓存空间。以此类推,NVMe控制器10根据写命令的大小,搜索位图寄存器101,以获取对应大小的可用缓存空间。
可以理解,位图寄存器101的存储单位大小可以大于写命令的大小。例如,若NVMe控制器10从主机2取得的写命令大小为7KB,则搜索以8KB存储单位的位图寄存器101,根据以8KB存储单位的位图寄存器101的每个管理单元记录的使用状态,搜索可用缓存空间的基地址,以获取8KB的可用缓存空间。
所述缓存控制器30与所述NVMe控制器10电连接,用于根据可用缓存空间的基地址,将所述主机数据写入所述缓存存储器11,并且当所述主机数据全部写入后,使得所述NVMe控制器10向所述中央处理器20发送空间提交指令,以使所述中央处理器20根据所述空间提交指令,产生数据搬移指令。
所述NAND Flash控制器40分别与所述缓存控制器30和所述中央处理器20电连接,用于根据所述数据搬移指令,通过所述缓存控制器30将所述主机数据从所述缓存存储器11移出并写入与所述NAND Flash控制器40电连接的NAND Flash存储器12,并且当所述主机数据全部写入所述NAND Flash存储器12后,使得所述中央处理器20产生释放命令,以使所述NVMe控制器10根据所述释放命令释放所述可用缓存空间。
本发明实施例提供的一种SSD控制器,通过NVMe控制器申请及释放可用缓存空间,避免了软件方式申请和释放缓存空间占用中央处理器的资源且可用缓存空间搜索时间较长导致的写命令的完成时间较长和缓存空间的利用率较低的问题,从而提升了SSD控制器的写性能。
请参阅图6,是本发明实施例提供的一种数据写入方法的方法流程图。如图6所示,数据写入方法S600可应用于本发明任一实施例所述的SSD控制器100,包括:
S61、NVMe控制器获取写命令。
S62、中央处理器接收并解析所述写命令,将解析后的所述写命令返回给所述NVMe控制器,使得所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,并且当所述NVMe控制器搜索到可用缓存空间的基地址时,从主机获取主机数据。
S63、缓存控制器将所述主机数据写入所述缓存存储器,并且当所述主机数据全部写入后,使得所述NVMe控制器向所述中央处理器发送空间提交指令,以使所述中央处理器根据所述空间提交指令,产生数据搬移指令。
S64、NAND Flash控制器用于根据所述数据搬移指令,通过所述缓存控制器将所述主机数据从所述缓存存储器移出并写入与所述NAND Flash控制器电连接的NAND Flash存储器,并且当所述主机数据全部写入所述NAND Flash存储器后,使得所述中央处理器产生释放命令,以使所述NVMe控制器根据所述释放命令释放所述可用缓存空间。
针对数据写入的过程,本领域普通技术人员结合本发明上述SSD控制器的实施例可以理解,此处不再赘述。
本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使SSD控制器能够执行本发明方法实施例所述的数据写入方法,例如,执行以上描述的图6所示的各个步骤,实现图2至图5所述的各个模块的功能。
本发明实施例还提供了一种计算机程序产品,包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使计算机执行本发明方法实施例中的数据写入方法,例如,执行以上描述的图6所示的各个步骤,实现图2至图5所述的各个模块的功能。
需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (8)

1.一种SSD控制器,其特征在于,包括:
NVMe控制器,用于获取写命令;
中央处理器,与所述NVMe控制器电连接,用于接收并解析所述写命令,将解析后的所述写命令返回给所述NVMe控制器,使得所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,并且当所述NVMe控制器搜索到可用缓存空间的基地址时,从主机获取主机数据;
缓存控制器,与所述NVMe控制器电连接,用于根据可用缓存空间的基地址,将所述主机数据写入所述缓存存储器,并且当所述主机数据全部写入后,使得所述NVMe控制器向所述中央处理器发送空间提交指令,以使所述中央处理器根据所述空间提交指令,产生数据搬移指令;
NAND Flash控制器,分别与所述缓存控制器和所述中央处理器电连接,用于根据所述数据搬移指令,通过所述缓存控制器将所述主机数据从所述缓存存储器移出并写入与所述NAND Flash控制器电连接的NAND Flash存储器,并且当所述主机数据全部写入所述NANDFlash存储器后,使得所述中央处理器产生释放命令,以使所述NVMe控制器根据所述释放命令释放所述可用缓存空间;
所述NVMe控制器包括:
位图寄存器,包括若干个管理单元,所述位图寄存器用于记录所述若干个管理单元对应的缓存空间的使用状态,所述使用状态包括可用状态与不可用状态;
可用缓存搜索模块;
释放队列模块,用于当所述主机数据全部写入所述NAND Flash存储器后,根据所述释放命令,写入所述中央处理器发送的已使用的可用缓存空间的基地址;
状态机,分别与所述位图寄存器、所述可用缓存搜索模块以及所述释放队列模块电连接,用于根据所述写命令,控制所述可用缓存搜索模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为不可用状态;
所述可用缓存搜索模块包括:
预取队列模块,用于预先存储可用缓存空间的基地址;
查找模块,分别与所述状态机和所述预取队列模块电连接,当所述状态机检测到所述写命令且所述预取队列模块处于空状态时,所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,当所述状态机未检测到所述写命令时,所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至所述预取队列模块;
数据选择器,分别与所述状态机、所述预取队列模块及所述查找模块电连接,当所述状态机检测到所述写命令且所述预取队列模块处于空状态时,所述数据选择器输出所述查找模块搜索的可用缓存空间的基地址,当所述状态机检测到所述写命令且所述预取队列模块处于非空状态时,所述数据选择器输出所述预取队列模块预先存储的可用缓存空间的基地址。
2.根据权利要求1所述的SSD控制器,其特征在于,所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,包括:
所述NVMe控制器根据所述写命令的大小,搜索位图寄存器;
根据所述位图寄存器中每个管理单元记录的使用状态,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址。
3.根据权利要求2所述的SSD控制器,其特征在于,当所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址时,在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为不可用状态;
当所述状态机触发所述查找模块根据所述位图寄存器中每个管理单元记录的使用状态,搜索可用缓存空间的基地址,并将所述可用缓存空间的基地址存储至所述预取队列模块时,在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为不可用状态。
4.根据权利要求1-3任一项所述的SSD控制器,其特征在于,所述释放命令的中断优先级高于所述写命令的中断优先级。
5.根据权利要求3所述的SSD控制器,其特征在于,所述查找模块采用二分法搜索可用缓存空间的基地址。
6.根据权利要求1所述的SSD控制器,其特征在于,当所述状态机检测到所述释放命令,且所述释放队列模块根据所述释放命令,写入所述中央处理器发送的已使用的可用缓存空间的基地址时,在所述位图寄存器中,将与所述可用缓存空间对应的使用状态设置为可用状态。
7.一种固态硬盘,其特征在于,包括:
缓存存储器;
NAND Flash存储器;以及,
如权利要求1-6任一项所述的SSD控制器,分别与所述缓存存储器和所述NAND Flash存储器电连接,还与主机通信连接。
8.一种数据写入方法,应用于如权利要求1-6任一项所述的SSD控制器,其特征在于,包括:
NVMe控制器获取写命令;
中央处理器接收并解析所述写命令,将解析后的所述写命令返回给所述NVMe控制器,使得所述NVMe控制器根据所述写命令,搜索与所述SSD控制器电连接的缓存存储器的可用缓存空间的基地址,并且当所述NVMe控制器搜索到可用缓存空间的基地址时,从主机获取主机数据;
缓存控制器将所述主机数据写入所述缓存存储器,并且当所述主机数据全部写入后,使得所述NVMe控制器向所述中央处理器发送空间提交指令,以使所述中央处理器根据所述空间提交指令,产生数据搬移指令;
NAND Flash控制器用于根据所述数据搬移指令,通过所述缓存控制器将所述主机数据从所述缓存存储器移出并写入与所述NAND Flash控制器电连接的NAND Flash存储器,并且当所述主机数据全部写入所述NAND Flash存储器后,使得所述中央处理器产生释放命令,以使所述NVMe控制器根据所述释放命令释放所述可用缓存空间。
CN202010514607.7A 2020-06-08 2020-06-08 一种ssd控制器、固态硬盘及数据写入方法 Active CN111752484B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010514607.7A CN111752484B (zh) 2020-06-08 2020-06-08 一种ssd控制器、固态硬盘及数据写入方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010514607.7A CN111752484B (zh) 2020-06-08 2020-06-08 一种ssd控制器、固态硬盘及数据写入方法

Publications (2)

Publication Number Publication Date
CN111752484A CN111752484A (zh) 2020-10-09
CN111752484B true CN111752484B (zh) 2024-04-12

Family

ID=72676506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010514607.7A Active CN111752484B (zh) 2020-06-08 2020-06-08 一种ssd控制器、固态硬盘及数据写入方法

Country Status (1)

Country Link
CN (1) CN111752484B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112634978A (zh) * 2020-12-23 2021-04-09 江苏国科微电子有限公司 一种NVMe固态硬盘异常处理方法、装置及集成芯片
CN112732176B (zh) * 2020-12-28 2022-10-04 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 基于fpga的ssd访问方法及装置、存储系统及存储介质
CN112612424A (zh) * 2020-12-29 2021-04-06 江苏国科微电子有限公司 一种NVMe提交队列控制装置及方法
CN112817541A (zh) * 2021-02-24 2021-05-18 深圳宏芯宇电子股份有限公司 写入带宽控制方法、存储器存储装置及存储器控制器
CN113934375B (zh) * 2021-10-14 2024-04-19 西安紫光国芯半导体有限公司 固态硬盘ssd控制器、三维集成装置以及数据处理方法
WO2023070614A1 (en) * 2021-10-30 2023-05-04 Yangtze Memory Technologies Co., Ltd. Tester channel multiplexing in test equipment
CN118132506A (zh) * 2024-05-07 2024-06-04 芯来智融半导体科技(上海)有限公司 一种片上系统软硬共享缓存架构及方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589661A (zh) * 2014-11-12 2016-05-18 三星电子株式会社 数据存储装置、数据处理系统和操作方法
CN108664213A (zh) * 2017-03-31 2018-10-16 北京忆恒创源科技有限公司 基于分布式缓存的原子写命令处理方法与固态存储设备
CN111095231A (zh) * 2018-06-30 2020-05-01 华为技术有限公司 一种基于NVMe的数据读取方法、装置及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150186068A1 (en) * 2013-12-27 2015-07-02 Sandisk Technologies Inc. Command queuing using linked list queues

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589661A (zh) * 2014-11-12 2016-05-18 三星电子株式会社 数据存储装置、数据处理系统和操作方法
CN108664213A (zh) * 2017-03-31 2018-10-16 北京忆恒创源科技有限公司 基于分布式缓存的原子写命令处理方法与固态存储设备
CN111095231A (zh) * 2018-06-30 2020-05-01 华为技术有限公司 一种基于NVMe的数据读取方法、装置及系统

Also Published As

Publication number Publication date
CN111752484A (zh) 2020-10-09

Similar Documents

Publication Publication Date Title
CN111752484B (zh) 一种ssd控制器、固态硬盘及数据写入方法
US20210157520A1 (en) Hardware management granularity for mixed media memory sub-systems
KR101940963B1 (ko) 비휘발성 메모리 디바이스의 휘발성 메모리 구조 및 관련 컨트롤러
JP6224253B2 (ja) フラッシュメモリ内に記憶されたデータの推測的プリフェッチ
EP3750072A1 (en) Accelerate data access in memory systems via data stream segregation
CN112506438B (zh) 一种映射表管理方法及固态硬盘
US10877686B2 (en) Mass storage device with host initiated buffer flushing
KR102663304B1 (ko) 구역 네임스페이스 디바이스들에서의 판독 처리
CN113614702B (zh) 基于检测到的读取命令活跃流的自适应预读高速缓存管理器
US11048437B2 (en) Double threshold controlled scheduling of memory access commands
US11874779B2 (en) Scheduling of read operations and write operations based on a data bus mode
US11604749B2 (en) Direct memory access (DMA) commands for noncontiguous source and destination memory addresses
US20190369912A1 (en) Read look ahead data size determination
EP3834072B1 (en) Controller command scheduling in a memory system to increase command bus utilization
US11687282B2 (en) Time to live for load commands
CN113467713A (zh) 数据分离方法及固态硬盘
US11651803B2 (en) Method and apparatus and computer program product for reading data from multiple flash dies
US10817435B1 (en) Queue-based wear leveling of memory components
WO2021055853A1 (en) Managing data dependencies for out of order processing in a hybrid dimm
CN107436726B (zh) 数据写入方法、存储控制器、计算设备以及存储装置
US11593024B1 (en) Request control for memory sub-systems
US11922029B2 (en) Modified read counter incrementing scheme in a memory sub-system
US12039196B2 (en) Double threshold controlled scheduling of memory access commands
US11886346B2 (en) Cache read context switching in a memory sub-system
US11599472B1 (en) Interleaved cache prefetching

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