CN112328509A - 一种基于硬件实现的用于闪存控制器的快速控制方法 - Google Patents

一种基于硬件实现的用于闪存控制器的快速控制方法 Download PDF

Info

Publication number
CN112328509A
CN112328509A CN202011348667.2A CN202011348667A CN112328509A CN 112328509 A CN112328509 A CN 112328509A CN 202011348667 A CN202011348667 A CN 202011348667A CN 112328509 A CN112328509 A CN 112328509A
Authority
CN
China
Prior art keywords
command
flash memory
memory controller
option
linknode
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.)
Granted
Application number
CN202011348667.2A
Other languages
English (en)
Other versions
CN112328509B (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.)
Beijing Zeshi Technology Co ltd
Original Assignee
Beijing Zeshi Technology 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 Beijing Zeshi Technology Co ltd filed Critical Beijing Zeshi Technology Co ltd
Priority to CN202011348667.2A priority Critical patent/CN112328509B/zh
Publication of CN112328509A publication Critical patent/CN112328509A/zh
Application granted granted Critical
Publication of CN112328509B publication Critical patent/CN112328509B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Read Only Memory (AREA)

Abstract

本发明提出了一种基于硬件实现的用于闪存控制器的快速控制方法可以包括以下步骤:NVM控制器接收来自主机的命令,经命令预解析单元后由硬件将数据传输命令进行拆解;当数据传输命令为写操作命令时,申请用于写入数据的缓存空间,同时申请linknode ID并生成linknode命令,其包含所述缓存空间的ID;CPU从命令解析单元获得linknode ID,并将多个linknode ID合并建链以合并到一个optask中;CPU将optask推送到命令加速单元,命令加速单元生成opcmd,并将其推送至闪存控制器;当数据传输命令为读操作命令时,从闪存颗粒读取数据并将其写入数据缓冲;同时,通知NVM控制器将数据取走。

Description

一种基于硬件实现的用于闪存控制器的快速控制方法
技术领域
本发明涉及闪存控制器技术领域,特别涉及一种基于硬件实现的用于闪存控制器的快速控制方法。
背景技术
目前随着固态存储容量提高,需要闪存颗粒(NANDFLASH)阵列进行并行操作提高访问速度,其中,主要通过硬件实现的闪存控制器来实现与闪存颗粒命令和数据的交互,一般来说,均会通过CPU生成特定格式的命令,并下发给闪存控制器执行。
然而,现有技术的这些技术方案适用于闪存陈列比较少的场合,随着闪存颗粒通道增加,所需要的闪存控制器越来越多,另外随着TLC/QLC等闪存颗粒的普及,命令的操作也越来越繁琐,CPU处理的负荷越来越高。
发明内容
针对闪存控制器需要软件频繁操作的缺点,本发明提出一种基于硬件实现的用于闪存控制器的快速控制方法,用于实现闪存控制器命令的快速生成,从而替代大部分CPU的操作。
具体而言,该基于硬件实现的用于闪存控制器的快速控制方法可以包括以下步骤:
NVM控制器接收来自主机的命令,经命令预解析单元后由硬件将数据传输命令进行拆解;
当所述数据传输命令为写操作命令时,申请用于写入数据的缓存空间,同时申请linknodeID并生成linknode命令,所述linknode命令包含所述缓存空间的ID;
CPU从所述命令解析单元获得所述linknodeID,并将多个所述linknodeID合并建链以合并到一个optask中;
所述CPU将所述optask推送到命令加速单元,所述命令加速单元生成opcmd,并将其推送至闪存控制器;
当所述数据传输命令为读操作命令时,从闪存颗粒读取数据并将其写入数据缓冲;同时,通知所述NVM控制器将所述数据取走。
其中,所述CPU推送给所述命令加速单元的是所述optask的ID。
进一步地,所述命令加速单元通过所述optask的ID获取所述optask的内容,其包含需要生成的opcmd个数、optemplate的ID、以及第一个linknodeID;
所述命令加速单元根据所述optemplate的ID和所述第一个linknodeID,获取所述optemplate的内容和所述linknode的链表内容;
所述命令解析单元将所述optemplate的内容和所述linknode的链表内容进行转换,申请opcmdID,将转换内容写入所述opcmdID,并将所述opcmdID推送到所述闪存控制器,以由所述闪存控制器直接执行。
进一步地,当所述数据传输命令为读操作命令时,在所述读操作命令完成后,所述闪存控制器返回clusterID给所述命令加速单元。
其中,所述命令加速单元可以根据所述clusterID释放资源以供下一轮数据读写使用。
进一步地,所述命令加速单元包括高优先级HQ通道和低优先级NQ通道。
更进一步地,所述高优先级HQ通道有多个通道,生成的opcmd指令根据闪存颗粒地址推送至相应的控制器执行。
在所述低优先级NQ中,执行指令依次执行。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需使用的附图作简单地介绍,显而易见,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图来获得其他的附图。
图1示出了根据本发明的基于硬件实现的用于闪存控制器的快速控制方法的框架图;
图2示出了根据本发明的命令加速单元的流程框架图。
具体实施方式
在下文中,本发明的示例性实施例将参照附图来详细描述。下面的实施例以举例的方式提供,以便充分传达本发明的精神给本发明所属领域的技术人员。因此,本发明不限于本文公开的实施例。
非易失性固态存储是采用闪存(NANDFlash)作为介质的存储设备,其中闪存控制器负责完成对闪存阵列的并行操作,包括数据Program/Read/Erase等,随IOPS和闪存并行度不断提高,对闪存控制器下发操作命令时延的要求越来越高。
本领域技术人员知晓,linknode是闪存控制器执行数据命令的最小节点单元,用于定义和数据操作相关联的属性,如当前闪存颗粒配置类型SLC/MLC/TLC/QLC等,具体的数据操作类型如program/read等,实际场景会比这个复杂,包括4K对齐写/非对齐写操作,GC操作,HMB读写等等,以及该节点对应的数据单元ID,该数据单元由缓存管理模块进行管理,长度为4096+128字节等,同样也可以根据实际应用来划分,当对闪存进行pageread或pageprogram时,可能需要一个或多个linknode才能完成一个page的操作。多个linknode可以组成一个链表,首个linknode的ID会放置在optask中,同时当前linknode节点里面会存放下一个linknodeID,当该linknode为最后一个节点时,下一个节点ID可以填为OxFFFF,这样通过首ID即可找到该链下所有的linknode。
optask是linknode单元的集合,如果是带数据的操作命令,节点内容除了存放linknode链首个ID外,还会存放需要操作NANDFLASH的地址,以及对应NANDFLASH更多的其它命令,包括multi-plane操作命令开关等,同时还包括对应会用到的optemplate模板,生成的opcmd数量,如果是不带数据的操作命令,例如readID这些命令,则不会包含linknode节点,只会定义对应的控制字,同optemplate相结合,生成对应的opcmd命令,给闪存控制器使用。同时,多个optask也会组成类似的链表,首个optaskID位于cluster中,第二个optask内容中会存放下一个optaskID,因此,可以从单个cluster中可以完整找出该簇中所有的optask和linknode。
cluster是optask单元的集合,其仅包含自动释放单元控制以及optask单元集合的首个optaskID,cluster的使用主要是为了方便资源的释放,闪存控制器执行完cluster下所有的命令后,仅会返回cluster对应的ID,命令加速单元会根据该ID以及是否自动释放单元控制标志决定是否释放该cluster下所有的节点单元,包括cluster/optask/linknode,如果出现命令失败的情况,需要CPU介入处理,则提交给CPU异常处理进行处理以及资源的释放。
optemplate是命令加速单元转换时需要用到的参考模板,这个模板会有多组,可以在初始化时配置,具体选取的模板可以在optask中定义,optemplate中会有相应的控制字,可以同optask/linknode相结合,灵活地生成各种需要的opcmd。
opcmd可供闪存控制器直接执行单元,长度可以根据需要设定,一般是8字节,由于存在多个opcmd,因此也需要通过ID的方式进行管理,命令加速单元生成对应的opcmd时,首先会申请对应ID,并将内容通过寻址的方式写入,然后将ID推送给闪存控制器,闪存控制器通过ID寻址并取得相应内容进行执行。opcmd的作用是驱动闪存控制器完成对应的某一个操作,例如readid/programdata等操作,内容是存放在片上RAM或片外DRAM,通过ID的方式进行索引。opcmd是通过optask来生成的,一个optask可以生成多个opcmd,也可以是一个cmd。例如,readid就只需要推送一个optask生成一个opcmd即可,如果是multi-planeprogram操作,也是一个optask来完成,但会依据闪存颗粒类型来生成相应个数的opcmd,搬运多段数据,驱动闪存控制器完成program操作。一般类似说,opcmd会根据闪存颗粒中的pagesize,对应一个或者多个linknode。如果pagesize是16KB,而linknode对应的数据单元是4KB,则一个带数据操作的opcmd就包含4个linknode的操作,如前面所述,一般只需要将第一个linknode的ID赋值到opcmd中,闪存控制器执行时,可以通过首个ID,然后查询linknode链表依次获取剩下的3个linknodeID。
如图1所示,在本发明的控制方法中,NVM控制器接收来自主机的命令后,经过命令预解析单元后,由硬件将数据传输命令进行拆解,其分为写操作和读操作命令。
如果是将数据写入到NANDFLASH中,则首先申请数据对应的缓存空间,同时申请linknodeID并生成linknode命令,linknode命令包含对应的缓存空间ID。
同时,CPU从命令解析单元获得该linknodeID,CPU将多个linknodeID合并建链,合并到一个optask中。当涉及raid操作时,将多个optask组链并合并到一个cluster中。
然后,CPU将optask推送到命令加速单元(其中推送的是ID索引),命令加速单元生成对应opcmd推送到闪存控制器。
具体生成的过程如下:
首先,命令加速单元通过命令解析单元,通过ID获取对应optask内容,optask中会包含需要生成的opcmd个数,以及optemplate所在地址,以及首个linknodeID,然后命令加速单元会根据这些索引得到相对应的optemplate内容,linknode链表内容,然后进入命令解析单元,按照前面所述的规则进行转换,转换之前会申请opcmdID,将转换内容填入opcmd所在地址后,推送该ID到闪存控制器,然后由闪存控制器直接执行。
如果涉及到program操作,会从数据缓存取走数据,然后通过NANDFLASH接口完成数据的传输,
如果是read操作,则首先从NANDFLASH读取数据,然后写入到数据缓冲中,同时,通知NVM控制器将数据取走。对应的读写操作完成后,闪存控制器会返回clusterID给命令加速单元,命令加速单元释放对应资源后,可以给下一轮数据读写使用。
如图2所示,命令加速单元可以包括高优先级HQ通道和低优先级NQ通道。
高优先级HQ通道可以有多个通道,生成的opcmd指令会根据NANDFLASH地址推送至对应的控制器执行。不同于NQ通道,HQ通道会有调度算法,optask可能会生成多组对应的opcmd,当对应闪存控制器执行队列为满状态时,optask可能仅生成其中一部分的opcmd,这时需保存当前生成指令相关变量到命令暂存单元中,然后标记该通道为暂停状态然后继续生成下一个通道的opcmd指令,当再次执行到暂停通道时,对应闪存控制器为非满状态时,会从暂停状态处继续生成指令,直到该optask对应的opcmd全部生成完毕。这样HQ命令解析单元不会被阻塞,以乱序执行的方式保证命令的快速生成。
在低优先级NQ中,执行指令依次执行。虽然存在会被阻塞的情况,但这样可以保证命令的顺序执行。通过HQ和NQ通道,可以保证闪存控制器的高效利用,同时也适用一些特定要求顺序执行的场景。
在本发明中,采用硬件的方式,通过optask/optemplate各种不同的命令字定义,可以快速灵活地转换命令给闪存控制执行。采用HQ和NQ通道结合的方式,最大限度地提示闪存控制器执行效率。并且,可以由硬件自动完成资源的申请和回收。
尽管前面结合附图通过具体实施例对本发明进行了说明,但是,本领域技术人员容易认识到,上述实施例仅仅是示例性的,用于说明本发明的原理,其并不会对本发明的范围造成限制,本领域技术人员可以对上述实施例进行各种组合、修改和等同替换,而不脱离本发明的精神和范围。

Claims (8)

1.一种基于硬件实现的用于闪存控制器的快速控制方法,其包括以下步骤:
NVM控制器接收来自主机的命令,经命令预解析单元后由硬件将数据传输命令进行拆解;
当所述数据传输命令为写操作命令时,申请用于写入数据的缓存空间,同时申请linknode ID并生成linknode命令,所述linknode命令包含所述缓存空间的ID;
CPU从所述命令解析单元获得所述linknode ID,并将多个所述linknode ID合并建链以合并到一个optask中;
所述CPU将所述optask推送到命令加速单元,所述命令加速单元生成opcmd,并将其推送至闪存控制器;
当所述数据传输命令为读操作命令时,从闪存颗粒读取数据并将其写入数据缓冲;同时,通知所述NVM控制器将所述数据取走。
2.如权利要求1所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,所述CPU推送给所述命令加速单元的是所述optask的ID。
3.如权利要求2所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,所述命令加速单元通过所述optask的ID获取所述optask的内容,其包含需要生成的opcmd个数、optemplate的ID、以及第一个linknode ID;
所述命令加速单元根据所述optemplate的ID和所述第一个linknode ID,获取所述optemplate的内容和所述linknode的链表内容;
所述命令解析单元将所述optemplate的内容和所述linknode的链表内容进行转换,申请opcmd ID,将转换内容写入所述opcmd ID,并将所述opcmd ID推送到所述闪存控制器,以由所述闪存控制器直接执行。
4.如权利要求1所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,当所述数据传输命令为读操作命令时,在所述读操作命令完成后,所述闪存控制器返回clusterID给所述命令加速单元。
5.如权利要求4所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,所述命令加速单元可以根据所述cluster ID释放资源以供下一轮数据读写使用。
6.如权利要求1-5中任一项所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,所述命令加速单元包括高优先级HQ通道和低优先级NQ通道。
7.如权利要求6所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,所述高优先级HQ通道有多个通道,生成的opcmd指令根据闪存颗粒地址推送至相应的控制器执行。
8.如权利要求6所述的基于硬件实现的用于闪存控制器的快速控制方法,其中,在所述低优先级NQ中,执行指令依次执行。
CN202011348667.2A 2020-11-26 2020-11-26 一种基于硬件实现的用于闪存控制器的快速控制方法 Active CN112328509B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011348667.2A CN112328509B (zh) 2020-11-26 2020-11-26 一种基于硬件实现的用于闪存控制器的快速控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011348667.2A CN112328509B (zh) 2020-11-26 2020-11-26 一种基于硬件实现的用于闪存控制器的快速控制方法

Publications (2)

Publication Number Publication Date
CN112328509A true CN112328509A (zh) 2021-02-05
CN112328509B CN112328509B (zh) 2024-07-16

Family

ID=74307921

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011348667.2A Active CN112328509B (zh) 2020-11-26 2020-11-26 一种基于硬件实现的用于闪存控制器的快速控制方法

Country Status (1)

Country Link
CN (1) CN112328509B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116185497A (zh) * 2023-01-06 2023-05-30 格兰菲智能科技有限公司 命令解析方法、装置、计算机设备和存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102609222A (zh) * 2012-02-13 2012-07-25 山东华芯半导体有限公司 基于命令描述符的闪存控制方法
US20130019050A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Flexible flash commands
WO2015117493A1 (zh) * 2014-08-20 2015-08-13 深圳市中兴微电子技术有限公司 一种flash的控制方法和控制器
US20160306553A1 (en) * 2015-04-14 2016-10-20 Sandisk Enterprise Ip Llc High-Priority NAND Operations Management
US10095765B1 (en) * 2013-04-10 2018-10-09 Marvell International Ltd. Method and apparatus for a hardware-implemented AVL tree module
CN109873717A (zh) * 2019-01-18 2019-06-11 深圳壹账通智能科技有限公司 监控方法、装置、计算机设备及存储介质
CN109976618A (zh) * 2019-03-11 2019-07-05 北京达佳互联信息技术有限公司 新功能的提示方法和提示装置以及计算机可读存储介质
CN110262753A (zh) * 2019-05-30 2019-09-20 合肥致存微电子有限责任公司 一种加快命令响应的方法、系统以及ssd
US20190303314A1 (en) * 2016-12-21 2019-10-03 Huawei Technologies Co., Ltd. Flash Interface Controller And Operation Command Processing Method
CN111176573A (zh) * 2019-12-27 2020-05-19 Oppo广东移动通信有限公司 数据读写方法、装置、存储介质及电子设备
CN111796771A (zh) * 2020-06-30 2020-10-20 深圳大普微电子科技有限公司 闪存控制器、固态硬盘及其控制器、闪存命令管理方法
CN112416250A (zh) * 2020-11-19 2021-02-26 深圳电器公司 基于NVMe的固态硬盘的命令处理方法及相关设备

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130019050A1 (en) * 2011-07-14 2013-01-17 Vinay Ashok Somanache Flexible flash commands
CN102609222A (zh) * 2012-02-13 2012-07-25 山东华芯半导体有限公司 基于命令描述符的闪存控制方法
US10095765B1 (en) * 2013-04-10 2018-10-09 Marvell International Ltd. Method and apparatus for a hardware-implemented AVL tree module
WO2015117493A1 (zh) * 2014-08-20 2015-08-13 深圳市中兴微电子技术有限公司 一种flash的控制方法和控制器
US20160306553A1 (en) * 2015-04-14 2016-10-20 Sandisk Enterprise Ip Llc High-Priority NAND Operations Management
US20190303314A1 (en) * 2016-12-21 2019-10-03 Huawei Technologies Co., Ltd. Flash Interface Controller And Operation Command Processing Method
CN109873717A (zh) * 2019-01-18 2019-06-11 深圳壹账通智能科技有限公司 监控方法、装置、计算机设备及存储介质
CN109976618A (zh) * 2019-03-11 2019-07-05 北京达佳互联信息技术有限公司 新功能的提示方法和提示装置以及计算机可读存储介质
CN110262753A (zh) * 2019-05-30 2019-09-20 合肥致存微电子有限责任公司 一种加快命令响应的方法、系统以及ssd
CN111176573A (zh) * 2019-12-27 2020-05-19 Oppo广东移动通信有限公司 数据读写方法、装置、存储介质及电子设备
CN111796771A (zh) * 2020-06-30 2020-10-20 深圳大普微电子科技有限公司 闪存控制器、固态硬盘及其控制器、闪存命令管理方法
CN112416250A (zh) * 2020-11-19 2021-02-26 深圳电器公司 基于NVMe的固态硬盘的命令处理方法及相关设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
WEIXIN_30716141: "单链表的模板类(C++)", Retrieved from the Internet <URL:https://blog.csdn.net/weixin_30716141/article/details/95143952> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116185497A (zh) * 2023-01-06 2023-05-30 格兰菲智能科技有限公司 命令解析方法、装置、计算机设备和存储介质
CN116185497B (zh) * 2023-01-06 2024-05-07 格兰菲智能科技有限公司 命令解析方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN112328509B (zh) 2024-07-16

Similar Documents

Publication Publication Date Title
US8661188B2 (en) Parallel flash memory controller, chip and control method thereof
US8386699B2 (en) Method for giving program commands to flash memory for writing data according to a sequence, and controller and storage system using the same
US10095436B2 (en) Cache memory device and data processing method of the device
KR102663302B1 (ko) Zns 드라이브에서의 데이터 취합
US20080195833A1 (en) Systems, methods and computer program products for operating a data processing system in which a file system&#39;s unit of memory allocation is coordinated with a storage system&#39;s read/write operation unit
US10725902B2 (en) Methods for scheduling read commands and apparatuses using the same
CN110489052B (zh) 数据储存装置
CN110609657B (zh) 内存控制器及方法
US20210271421A1 (en) Double threshold controlled scheduling of memory access commands
US11874779B2 (en) Scheduling of read operations and write operations based on a data bus mode
CN111796759B (zh) 多平面上的片段数据读取的计算机可读取存储介质及方法
US20210365395A1 (en) Direct memory access (dma) commands for noncontiguous source and destination memory addresses
US9971546B2 (en) Methods for scheduling read and write commands and apparatuses using the same
CN101930407B (zh) 闪速存储器控制电路及其存储系统与数据传输方法
CN112328509B (zh) 一种基于硬件实现的用于闪存控制器的快速控制方法
CN116578234B (zh) 闪存访问系统及方法
US20220050629A1 (en) Completion management
CN116185892B (zh) 闪存控制器及其访问闪存颗粒的方法
US9152348B2 (en) Data transmitting method, memory controller and data transmitting system
CN103092725A (zh) 一种实现存储器中数据备份的方法及装置
US7313651B2 (en) Method and related apparatus for data migration of disk array
CN116185891B (zh) 描述符管理方法
KR102242957B1 (ko) 고속 낸드 메모리 시스템과 고속 낸드 메모리 패키지 디바이스
US20170220297A1 (en) Methods for scheduling data-programming tasks and apparatuses using the same

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