闪存控制器、固态硬盘及其控制器、闪存命令管理方法转让专利

申请号 : CN202010623091.X

文献号 : CN111796771A

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 方浩俊黄运新印中举杨州杨亚飞

申请人 : 深圳大普微电子科技有限公司

摘要 :

本发明实施例涉及固态硬盘应用领域,公开了一种闪存控制器、固态硬盘及其控制器、闪存命令控制方法,所述闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块、IO管理模块以及闪存IO模块,其中,自动命令管理模块用于存储和管理多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;IO管理模块用于接收所述自动命令管理模块发送的闪存命令;闪存IO模块用于接收所述IO管理模块发送的闪存命令,解析命令并产生对应的操作时序,与所述闪存介质进行交互。通过硬件自动命令管理模块生成闪存命令,根据设定条件自动发送本发明能够减少固态硬盘的软件开销,从而减轻处理器的负担,提高固态硬盘的性能。

权利要求 :

1.一种闪存控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,其特征在于,所述闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块、IO管理模块以及闪存IO模块,其中,自动命令管理模块,连接所述IO管理模块,用于存储和管理多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;

IO管理模块,连接所述自动命令管理模块,用于接收所述自动命令管理模块发送的闪存命令;

闪存IO模块,连接所述IO管理模块以及闪存介质,用于接收所述IO管理模块发送的闪存命令,解析闪存命令并产生操作时序,与所述闪存介质进行交互;

其中,所述自动命令管理模块在满足触发条件之后,触发相应的微码生成对应的闪存命令,并将所述闪存命令对应的IO操作发送到所述IO管理模块,以使所述IO管理模块将所述IO操作转发到所述闪存IO模块,由所述闪存IO模块向对应的闪存介质发送所述IO操作。

2.根据权利要求1所述的方法,其特征在于,所述固态硬盘还包括处理器模块,所述闪存控制器还包括:接口模块,连接所述处理器模块以及IO管理模块,用于接收所述处理器模块发送的闪存命令,并将所述处理器模块发送的闪存命令转发到所述IO管理模块,以使所述IO管理模块将所述闪存命令加入到闪存命令处理序列。

3.根据权利要求1所述的闪存控制器,其特征在于,所述自动命令管理模块,包括:命令管理模块,用于闪存命令的管理;

通路管理模块,连接所述命令管理模块以及IO管理模块,用于对接所述IO管理模块。

4.根据权利要求3所述的闪存控制器,其特征在于,所述命令管理模块,包括:微码存储模块,用于存储多个闪存命令对应的微码;

微码处理模块,连接所述微码存储模块,用于执行所述微码,并生成与所述微码对应的闪存命令,并生成与所述闪存命令对应的IO操作;

外部通路接口,连接所述微码存储模块,用于向所述微码存储模块写入微码;

条件管理模块,用于确定是否满足触发条件,所述触发条件包括定时策略和/或计数策略。

5.根据权利要求4所述的闪存控制器,其特征在于,所述固态硬盘还包括处理器模块,所述条件管理模块,包括:外部接口,连接所述处理器模块,用于对接所述处理器模块;

条件寄存器组,连接所述外部接口,所述条件寄存器组包括多个条件寄存器,每一条件寄存器对应一个触发条件;

定时器组,连接所述控制状态机,所述定时器组包括多个定时器,每一定时器均用于设置对应闪存命令的时间阈值,其中,每一定时器对应一条件寄存器;

控制状态机,连接所述外部接口、条件寄存器组和定时器组,用于控制条件寄存器组的状态。

6.根据权利要求3所述的闪存控制器,其特征在于,所述通路管理模块,包括:IO回收模块,用于回收已完成的IO操作,并更新IO操作对应的闪存命令的控制信息;

IO资源管理模块,用于管理自动命令管理模块的资源申请、资源格式化和资源释放;

IO发送模块,用于将IO操作发送到IO管理模块。

7.一种固态硬盘控制器,其特征在于,包括:

如权利要求1-6任一项所述的闪存控制器;

处理器模块,连接所述闪存控制器,用于向所述闪存控制器发生闪存命令。

8.一种固态硬盘,其特征在于,包括:

如权利要求7所述的固态硬盘控制器;

至少一个闪存介质,与所述固态硬盘控制器通信连接。

9.一种闪存命令管理方法,其特征在于,应用于如权利要求8所述的固态硬盘,所述方法包括:获取多个闪存命令对应的微码;

若满足触发条件,触发所述微码,生成与所述微码对应的闪存命令的IO操作,其中,所述触发条件包括定时策略和/或计数策略;

向所述闪存介质发送所述IO操作,以更新所述闪存命令对应的控制信息和/或存储所述闪存介质返回的数据。

10.根据权利要求9所述的方法,其特征在于,所述定时策略为硬件定时器策略,当设置的定时器达到预设时间阈值,则写对应的条件寄存器,以触发执行对应的微码;

所述计数策略为软件计数策略,当计数次数达到预设次数阈值时,则写对应的条件寄存器,以触发执行对应的微码。

11.根据权利要求9所述的方法,其特征在于,所述IO管理模块包括一IO顺序表,在生成微码对应的闪存命令的IO操作之后,所述方法还包括:将所述闪存命令的IO操作插入所述IO顺序表;

顺序执行所述IO顺序表中的IO操作。

说明书 :

闪存控制器、固态硬盘及其控制器、闪存命令管理方法

技术领域

[0001] 本发明涉及固态硬盘应用领域,特别是涉及一种闪存控制器、固态硬盘及其控制器、闪存命令管理方法。

背景技术

[0002] 固态硬盘(Solid State Drives,SSD),是采用固态电子存储芯片阵列而制成的硬盘,固态硬盘包括控制单元和存储单元(FLASH存储芯片或DRAM存储芯片)。目前固态硬盘系统中有相当部分是存在动态随机存取存储器(Dynamic Random Access Memory,DRAM)的,所以SSD有较大的数据缓存空间用来缓存数据。
[0003] 闪存(NAND Flash)是固态硬盘的主要存储介质。闪存目前已发展到3D TLC,其IO接口速度发展到1600MT;其发展也带来一些问题,如原始错误比特率(UBER)越来越高,接口信号完整性(Signal Integrity,SI)设计挑战也越来越高。闪存开发者为此提供了一系列的解决办法,这些解决办法需要闪存主控来协助完成,比如周期性读刷新命令(Read Fresh)以保持内部Cell的电气特性;或者周期性ZQ校准(ZQ Calibration)功能,来增强闪存相关信号完整性。这些功能一般具有周期性发送需求,且要求只有当没有其他操作时(即处于空闲),才能进行操作。
[0004] 一般地,如果通过软件的方法,需要软件进行周期管理和流控管理,确保周期性地发送命令,且通过流控管理使闪存处于可操作状态后进行相关命令操作。显然这种方法会带来软件管理开销和增加CPU负担,不可避免地增大固态硬盘(SSD)的相关延时(Latency),影响产品性能。如果专门增加一个协处理来管理此类命令,但当前其处理需求不需要协处理器这么高的处理能力,且协处理器成本过高。
[0005] 基于此,现有技术亟待改进。

发明内容

[0006] 本发明实施例旨在提供一种闪存控制器、固态硬盘及其控制器、闪存命令管理方法,其解决了现有固态硬盘通过软件方式进行命令管理容易增加处理器的负担,造成延时从而影响固态硬盘的性能,从而减少处理器的负担,提高固态硬盘的性能。
[0007] 为解决上述技术问题,本发明实施例提供以下技术方案:
[0008] 第一方面,本发明实施例提供一种闪存控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,所述闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块、IO管理模块以及闪存IO模块,其中,
[0009] 自动命令管理模块,连接所述IO管理模块,用于存储多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;
[0010] IO管理模块,连接所述自动命令管理模块,用于接收所述自动命令管理模块发送的闪存命令;
[0011] 闪存IO模块,连接所述IO管理模块以及闪存介质,用于接收所述IO管理模块发送的闪存命令,解析闪存命令并产生操作时序,与所述闪存介质进行交互;
[0012] 其中,所述自动命令管理模块在满足触发条件之后,触发相应的微码生成对应的闪存命令,并将所述闪存命令对应的IO操作发送到所述IO管理模块,以使所述IO管理模块将所述IO操作转发到所述闪存IO模块,由所述闪存IO模块向对应的闪存介质发送所述IO操作。
[0013] 在一些实施例中,所述固态硬盘还包括处理器模块,所述闪存控制器还包括:
[0014] 接口模块,连接所述处理器模块以及IO管理模块,用于接收所述处理器模块发送的闪存命令,并将所述处理器模块发送的闪存命令转发到所述IO管理模块,以使所述IO管理模块将所述闪存命令加入到闪存命令处理序列。
[0015] 在一些实施例中,所述自动命令管理模块,包括:
[0016] 命令管理模块,用于闪存命令的管理;
[0017] 通路管理模块,连接所述命令管理模块以及IO管理模块,用于对接所述IO管理模块。
[0018] 在一些实施例中,所述命令管理模块,包括:
[0019] 微码存储模块,用于存储多个闪存命令对应的微码;
[0020] 微码处理模块,连接所述微码存储模块,用于执行所述微码,并生成与所述微码对应的闪存命令,并生成与所述闪存命令对应的IO操作;
[0021] 外部通路接口,连接所述微码存储模块,用于向所述微码存储模块写入微码;
[0022] 条件管理模块,用于确定是否满足触发条件,所述触发条件包括定时策略和/或计数策略。
[0023] 在一些实施例中,所述固态硬盘还包括处理器模块,所述条件管理模块,包括:
[0024] 外部接口,连接所述处理器模块,用于对接所述处理器模块;
[0025] 条件寄存器组,连接所述外部接口,所述条件寄存器组包括多个条件寄存器,每一条件寄存器对应一个触发条件;
[0026] 定时器组,连接所述控制状态机,所述定时器组包括多个定时器,每一定时器均用于设置对应闪存命令的时间阈值,其中,每一定时器对应一条件寄存器;
[0027] 控制状态机,连接所述外部接口、条件寄存器组和定时器组,用于控制条件寄存器组的状态。
[0028] 在一些实施例中,所述通路管理模块,包括:
[0029] IO回收模块,用于回收已完成的IO操作,并更新IO操作对应的闪存命令的控制信息;
[0030] IO资源管理模块,用于管理自动命令管理模块的资源申请、资源格式化和资源释放;
[0031] IO发送模块,用于将IO操作发送到IO管理模块。
[0032] 第二方面,本发明实施例提供一种固态硬盘控制器,包括:
[0033] 上述的闪存控制器;
[0034] 处理器模块,连接所述闪存控制器,用于向所述闪存控制器发生闪存命令。
[0035] 第三方面,本发明实施例提供一种固态硬盘,包括:
[0036] 上述的固态硬盘控制器;
[0037] 至少一个闪存介质,与所述固态硬盘控制器通信连接。
[0038] 第四方面,本发明实施例提供一种闪存命令管理方法,应用于上述的固态硬盘,所述方法包括:
[0039] 获取多个闪存命令对应的微码;
[0040] 若满足触发条件,触发所述微码,生成与所述微码对应的闪存命令的IO操作,其中,所述触发条件包括定时策略和/或计数策略;
[0041] 向所述闪存介质发送所述IO操作,以更新所述闪存命令对应的控制信息和/或存储所述闪存介质返回的数据。
[0042] 在一些实施例中,所述定时策略为硬件定时器策略,当设置的定时器达到预设时间阈值,则写对应的条件寄存器,以触发执行对应的微码;
[0043] 所述计数策略为软件计数策略,当计数次数达到预设次数阈值时,则写对应的条件寄存器,以触发执行对应的微码。
[0044] 在一些实施例中,所述IO管理模块包括一IO顺序表,在生成微码对应的闪存命令的IO操作之后,所述方法还包括:
[0045] 将所述闪存命令的IO操作插入所述IO顺序表;
[0046] 顺序执行所述IO顺序表中的IO操作。
[0047] 第五方面,本发明实施例还提供了一种非易失性计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使固态硬盘能够执行如上所述的闪存命令管理方法。
[0048] 本发明实施例的有益效果是:区别于现有技术的情况下,本发明实施例提供的一种闪存控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,所述闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块、IO管理模块以及闪存IO模块,其中,自动命令管理模块,连接所述IO管理模块,用于存储多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;IO管理模块,连接所述自动命令管理模块,用于接收所述自动命令管理模块发送的闪存命令;闪存IO模块,连接所述IO管理模块以及闪存介质,用于接收所述IO管理模块发送的闪存命令,解析闪存命令并产生操作时序,与所述闪存介质进行交互;其中,所述自动命令管理模块在满足触发条件之后,触发相应的微码生成对应的闪存命令,并将所述闪存命令对应的IO操作发送到所述IO管理模块,以使所述IO管理模块将所述IO操作转发到所述闪存IO模块,由所述闪存IO模块向对应的闪存介质发送所述IO操作。通过自动命令管理模块生成闪存命令,本发明能够减少固态硬盘的处理器的负担,提高固态硬盘的性能。

附图说明

[0049] 一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
[0050] 图1是本发明实施例提供的一种固态硬盘的结构示意图;
[0051] 图2是本发明实施例提供的一种闪存控制器的结构示意图;
[0052] 图3是本发明实施例提供的另一种闪存控制器的结构示意图;
[0053] 图4是本发明实施例提供的一种自动命令管理模块的结构示意图;
[0054] 图5是本发明实施例提供的一种条件管理模块的示意图;
[0055] 图6是本发明实施例提供的一种IO管理模块的结构示意图;
[0056] 图7是本发明实施例提供的一种固态硬盘控制器的结构示意图;
[0057] 图8是本发明实施例提供的一种闪存命令管理方法的流程示意图;
[0058] 图9是本发明实施例提供的一种自动命令执行流程的流程示意图;
[0059] 图10是本发明实施例提供的一种IO回收的流程示意图;
[0060] 图11是本发明实施例提供的一种执行触发策略的流程示意图;
[0061] 图12是本发明实施例提供的一种ZQ校准命令的初始化的流程示意图;
[0062] 图13是本发明实施例提供的一种ZQ校准命令的执行过程的流程示意图。

具体实施方式

[0063] 为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0064] 此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0065] 典型的固态硬盘(Solid State Drives,SSD)通常包括固态硬盘控制器(主控制器)、闪存阵列、缓存单元以及其他外围单元。
[0066] 其中,固态硬盘控制器用于作为控制运算单元,管理SSD内部系统;闪存阵列(NAND Flash),作为存储单元,用于存储数据,包括用户数据和系统数据,闪存阵列一般呈现多个通道(Channel,简写CH),一个通道独立连接一组NAND Flash,例如CH0/CH1……CHx。其中闪存(NAND Flash),其特性是写入之前,必须进行擦除,且每个闪存擦除次数有限;缓存单元,用于缓存映射表,所述缓存单元一般为动态随机存取存储器(Dynamic Random Access Memory,DRAM)。其他外围单元可以包括传感器、寄存器等部件。
[0067] 一般固态硬盘控制器,主要有PCIe/NVMe,DDR控制器,数据通路模块,闪存控制器,CPU模块,外设模块等。其中闪存控制用于与闪存相关的操作控制模块,一般闪存的具体命令操作,由CPU通过接口下发给闪存控制器后,由IO管理模块管理IO操作流;由Flash IO模块生成对应的Flash命令操作时序给闪存。
[0068] 现有技术通过周期性地发送IO操作给闪存控制器,实现对应闪存命令操作。通过流控管理,确保闪存处于可操作状态,才进行相关命令操作,故而软件设计具有一定的复杂度。一般地,如果通过软件的方法,管理闪存的周期性特定命令,需要软件进行周期管理,确保周期性地发送命令,同时需要通过流控管理使闪存处于可操作状态后进行相关命令操作。显然这种方法会带来软件管理开销和增加CPU负担,从而增大固态硬盘(SSD)的相关延时(Latency),影响产品性能。
[0069] 有鉴于此,本发明提供一种闪存控制器、固态硬盘及其控制器、闪存命令管理方法,以解决现有固态硬盘通过软件方式进行命令管理容易增加处理器的负担,造成延时从而影响固态硬盘的性能,从而减少处理器的负担,提高固态硬盘的性能。
[0070] 下面结合说明书附图阐述本发明的技术方案。
[0071] 请参阅图1,为本发明实施例提供的一种固态硬盘的结构示意图。
[0072] 如图1所示,所述固态硬盘300包括闪存介质310以及与所述闪存介质310连接的固态硬盘控制器320。其中,所述固态硬盘300通过有线或无线的方式与所述主机400通信连接,用以实现数据交互。
[0073] 闪存介质310,作为所述固态硬盘300的存储介质,也称作闪存、Flash、Flash存储器或Flash颗粒,属于存储器件的一种,是一种非易失性存储器,在没有电流供应的条件下也能够长久地保存数据,其存储特性相当于硬盘,使得闪存介质310得以成为各类便携型数字设备的存储介质的基础。
[0074] 其中,闪存介质310可以为Nand FLASH,Nand FLASH以单晶体管作为二进制信号的存储单元,其结构与普通的半导体晶体管非常相似,区别在于Nand FLASH的单晶体管加入了浮动栅和控制栅,浮动栅用于贮存电子,表面被一层硅氧化物绝缘体所包覆,并通过电容与控制栅相耦合,当负电子在控制栅的作用下被注入到浮动栅中,Nand FLASH的单晶体的存储状态就由“1”变成了“0”,而当负电子从浮动栅中移走后,存储状态就由“0”变成了“1”,包覆在浮动栅表面的绝缘体用于将浮动栅中的负电子困住,实现数据存储。即Nand FLASH的存储单元为浮动栅晶体管,使用浮动栅晶体管以电荷的形式存储数据。存储电荷的多少与浮动栅晶体管所被施加的电压的大小有关。
[0075] 一个Nand FLASH包括至少一个Chip芯片,每一个Chip芯片由若干个Block物理块组成,每一个Block物理块包括若干个Page页。其中,Block物理块是Nand FLASH执行擦除操作的最小单位,Page页为Nand FLASH执行读写操作的最小单位,一个Nand FLASH的容量等于其Block物理块的数量*一个Block物理块包含的Page页的数量*一个Page页的容量。具体的,闪存介质10按照存储单元的电压的不同层次,可分为SLC、MLC、TLC以及QLC。
[0076] 固态硬盘控制器320,包括数据转换器321、处理器322、缓存器323、闪存控制器324以及接口325。
[0077] 数据转换器321,分别与处理器322和闪存控制器324连接,所述数据转换器321用于将二进制数据转换为十六进制数据,以及将十六进制数据转换为二进制数据。具体地,当所述闪存控制器324向所述闪存介质310写入数据时,通过所述数据转换器321将待写入的二进制数据转换为十六进制数据,然后再写入闪存介质310。当所述闪存控制器324从所述闪存介质310读取数据时,通过所述数据转换器321将闪存介质310中存储的十六进制数据转换为二进制数据,然后从二进制数据页寄存器中读取转换后的数据。其中,所述数据转换器321可以包括二进制数据寄存器和十六进制数据寄存器。所述二进制数据寄存器可以用于保存由十六进制转换为二进制后的数据,所述十六进制数据寄存器可以用于保存由二进制转换为十六进制后的数据。
[0078] 处理器322,分别与数据转换器321、缓存器323、闪存控制器324以及接口325连接,其中,处理器322与数据转换器321、缓存器323、闪存控制器324以及接口325可以通过总线或者其他方式连接,所述处理器用于运行存储在缓存器323中的非易失性软件程序、指令以及模块,从而实现本发明任一方法实施例。
[0079] 缓存器323,主要用于缓存主机400发送的读/写指令以及根据主机400发送的读/写指令从闪存介质310获取的读数据或者写数据。缓存器323作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。缓存器323可以包括存储程序区,存储程序区可存储操作系统、至少一个功能所需要的应用程序。
此外,缓存器323可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,缓存器323可选包括相对于处理器324远程设置的存储器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。所述缓存器323可以为静态随机存取存储器(Static Random Access Memory,SRAM)或者耦合内存(Tightly Coupled Memory,TCM)或者双倍速率同步动态随机存储器(Double DataRate Synchronous Dynamic Random Access Memory,DDR SRAM)。
[0080] 闪存控制器324,与闪存介质310、数据转换器321、处理器322以及缓存器323连接,用于访问后端的闪存介质310,管理闪存介质310的各种参数和数据I/O;或者,用于提供访问的接口和协议,实现对应的SAS/SATA target协议端或者NVMe协议端,获取主机发出的I/O指令并解码和生成内部私有数据结果等待执行;或者,用于负责FTL(Flash translation layer,闪存转换层)的核心处理。
[0081] 接口325,连接主机400以及数据转换器321、处理器322以及缓存器323,用于接收主机400发送的数据,或者,接收所述处理器322发送的数据,实现主机400与处理器322之间的数据传输,所述接口325可以为SATA-2接口、SATA-3接口、SAS接口、MSATA接口、PCI-E接口、NGFF接口、CFast接口、SFF-8639接口和M.2NVME/SATA协议。
[0082] 请再参阅图2,图2是本发明实施例提供的一种闪存控制器的结构示意图;其中,所述闪存控制器应用于固态硬盘,所述固态硬盘包括至少一个闪存介质以及处理器模块,其中,所述处理器模块为中央处理单元(Central Processing Unit,CPU)。
[0083] 如图2所示,该闪存控制器10包括一闪存通道,该闪存通道包括接口模块11、自动命令管理模块12、IO管理模块13以及闪存IO模块14,其中,
[0084] 自动命令管理模块12,连接所述接口模块11和IO管理模块13,用于存储多个闪存命令对应的多个微码,每一微码用于生成与之对应的闪存命令;
[0085] 具体的,所述自动命令管理模块12用于产生及管理需要的闪存命令,而无需软件复杂的管理,当满足触发条件或执行条件时,自动发送所述闪存命令给闪存介质,其中,所述触发条件包括定时策略和/或计数策略。每一微码对应一闪存命令,每一微码用于生成与之对应的闪存命令。例如:自动命令管理模块12可以存储多个预先设定的微码,通过这些微码,自动命令管理模块12可以生成相应的闪存命令的IO操作,比如ZQ校准命令的IO操作,并将所述IO操作发送给IO管理模块13。
[0086] IO管理模块13,连接所述自动命令管理模块12,用于接收所述自动命令管理模块12发送的闪存命令;
[0087] 具体的,所述IO管理模块13用于负责管理IO操作的流控管理,即通过遍历方式,管理所有来自处理器模块或者自动命令管理模块12的IO操作,即接收所述处理器模块或者自动命令管理模块12发送的闪存命令。
[0088] 闪存IO模块14,连接所述IO管理模块14以及闪存介质,用于接收所述IO管理模块13发送的闪存命令,并基于闪存命令,产生操作时序,与所述闪存介质进行交互;
[0089] 具体的,所述闪存IO模块14,负责产生IO操作对应的闪存命令操作时序,即Flash命令操作时序,与所述闪存介质进行交互。
[0090] 其中,所述自动命令管理模块12在满足触发条件或执行条件之后,触发相应的微码生成对应的闪存命令,并将所述闪存命令对应的IO操作发送到所述IO管理模块13,以使所述IO管理模块13将所述IO操作转发到所述闪存IO模块14,由所述闪存IO模块14向对应的闪存介质发送所述IO操作。
[0091] 请再参阅图3,图3是本发明实施例提供的另一种闪存控制器的结构示意图;其中,所述闪存控制器应用于固态硬盘,所述固态硬盘包括至少一个闪存介质以及处理器模块,所述闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块12、IO管理模块13以及闪存IO模块14,其中,所述闪存控制器10包括接口模块11、自动命令管理模块12、IO管理模块13以及闪存IO模块14。
[0092] 其中,所述接口模块11,连接所述处理器模块以及IO管理模块13,用于接收所述处理器模块发送的闪存命令,并将所述处理器模块发送的闪存命令转发到所述IO管理模块13,以使所述IO管理模块13将所述闪存命令加入到闪存命令处理序列,其中,所述闪存命令处理序列是包括多个闪存命令的顺序表,所述闪存命令处理序列可以通过链表的方式实现。
[0093] 其中,自动命令管理模块12,连接所述接口模块11和IO管理模块13,用于存储多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;
[0094] 其中,所述自动命令管理模块12用于产生及管理需要的闪存命令,而无需软件复杂的管理,当满足预设触发条件或执行条件时,自动发送所述闪存命令给闪存介质,其中,所述触发条件或执行条件包括定时策略和/或计数策略。每一微码对应一闪存命令,每一微码用于生成与之对应的闪存命令。例如:自动命令管理模块12可以存储多个预先设定的微码,通过这些微码,自动命令管理模块12可以生成相应的闪存命令IO操作,比如ZQ校准命令的IO操作,并将IO操作发送给IO管理模块13。其中,所述闪存命令包括但不限于:ZQ校准命令、读刷新命令(Read Fresh)、闪存温度查询命令(Temperature Get)、自动读校准命令(AutoRead Calibration)等。可以理解的是,所述闪存命令为周期性处理的命令。
[0095] 由于采用自动命令管理模块保存微码,通过微码来产生需要的闪存命令的设计方式,本发明能够实现所有的周期性处理的闪存命令,并且还可以更好地实现新增的闪存命令,以减少处理器的处理过程,减轻处理器的负担。
[0096] 具体的,请再参阅图4,图4是本发明实施例提供的一种自动命令管理模块的结构示意图;
[0097] 如图4所示,该自动命令管理模块12,包括:命令管理模块121以及通路管理模块122,所述命令管理模块121连接所述通路管理模块122。
[0098] 其中,所述命令管理模块121,用于闪存命令的管理;
[0099] 具体的,所述命令管理模块121,包括:微码存储模块1211、微码处理模块1212、外部通路接口1213以及条件管理模块1214。
[0100] 其中,所述微码存储模块1211,用于存储多个闪存命令对应的微码;
[0101] 具体的,所述微码存储模块1211主要用于存储由用户编写好的微码,微码是用于控制需要执行的闪存命令的相关操作,可以存储多个命令所需的微码。
[0102] 其中,所述微码处理模块1212,连接所述微码存储模块,用于执行所述微码,并生成与所述微码对应的闪存命令,并生成与所述闪存命令对应的IO操作;
[0103] 具体的,所述微码处理模块1212是执行微码的处理器模块,所述微码处理模块1212会根据微码所定义的闪存命令,控制产生所需要的IO操作给外部的IO管理模块。
[0104] 其中,所述外部通路接口1213,连接所述微码存储模块,用于向所述微码存储模块写入微码;
[0105] 具体的,所述外部通路接口1213用于固态硬盘的CPU模块配置相关寄存器,并写入微码到微码存储模块1211,并获取相关寄存器和随机存取存储器(random access memory,RAM)的数据。
[0106] 其中,所述条件管理模块1214,用于确定是否满足触发条件,所述触发条件包括定时策略和/或计数策略。
[0107] 具体的,所述条件管理模块1214用于相关闪存命令是否处于可发送状态的管理,主要通过定时器管理发送周期是否达到阈值,通过比较器管理条件数值是否达到阈值。
[0108] 具体的,请再参阅图5,图5是本发明实施例提供的一种条件管理模块的示意图;
[0109] 如图5所示,该条件管理模块1214,包括:外部接口12141、条件寄存器组12142、控制状态机12143以及定时器组12144,其中,所述固态硬盘还包括处理器模块,所述外部接口12141分别连接所述条件控制寄存器组12142、控制状态机12143以及定时器组12144。
[0110] 其中,所述外部接口12141,分别连接所述条件寄存器组12142、控制状态机12143以及定时器组12144,以及连接处理器模块,用于对接所述处理器模块,例如:所述处理器模块通过所述外部接口12141,写所述条件寄存器组12142中对应的条件寄存器。
[0111] 其中,所述条件寄存器组12142,连接所述外部接口12141以及控制状态机12143,所述条件寄存器组12142包括多个条件寄存器,每一条件寄存器对应一个触发条件。
[0112] 其中,所述控制状态机12143,连接所述外部接口12141、条件寄存器组12142以及定时器组12144,用于控制所述条件寄存器组12142的状态,即控制写条件寄存器组12142中的条件寄存器。
[0113] 其中,所述定时器组12144,连接所述外部接口12141以及控制状态机12143,所述定时器组12144包括多个定时器,每一定时器均用于设置对应闪存命令的时间阈值,其中,每一定时器对应一条件寄存器。
[0114] 其中,所述通路管理模块122,连接所述命令管理模块121以及IO管理模块,用于对接所述IO管理模块。所述通路管理模块122用于和IO管理模块进行IO资源,IO操作发送和回收的管理。
[0115] 如图4所示,所述通路管理模块122,包括:IO回收模块1221、IO资源管理模块1222以及IO发送模块1223。
[0116] 其中,所述IO回收模块1221,连接所述IO资源管理模块1222,用于回收已完成的IO操作,并更新IO操作对应的闪存命令的控制信息;
[0117] 具体的,所述IO回收模块回收已经完成的IO操作,并更新对应命令的控制信息,如有返回数据则将返回数据保存到寄存器或者随机存取存储器(random access memory,RAM)。
[0118] 可以理解的是,闪存命令一般包括控制信息,例如包括状态信息,所述状态信息包括:正在执行,完成,错误等。或者,所述控制信息包括组成信息,所述组成信息包括IO数量,每个IO的执行状态。
[0119] 其中,所述IO资源管理模块1222,连接所述IO回收模块1221以及所述IO发送模块1223,用于管理自动命令管理模块的资源申请、资源格式化和资源释放;
[0120] 具体的,所述IO资源管理模块1222,用于负责自动命令管理模块的资源申请,格式化和释放管理;
[0121] 其中,所述IO发送模块1223,连接所述IO资源管理模块1222,用于将IO操作发送到IO管理模块。
[0122] 具体的,所述IO发送模块1223用于负责将自动命令管理模块12产生的IO发给外部的IO管理模块。
[0123] 其中,所述IO管理模块13,连接所述自动命令管理模块12,用于接收所述自动命令管理模块12发送的闪存命令;
[0124] 具体的,所述IO管理模块接收所述自动命令管理模块12发送的至少一个闪存命令之后,生成闪存命令处理序列,即IO List,并向所述闪存I O模块14发送所述闪存命令,以使所述闪存IO模块14基于所述闪存命令,产生操作时序,与所述闪存介质进行交互。
[0125] 在本发明实施例中,所述IO管理模块包括一命令仲裁管理模块,所述命令仲裁管理模块用于根据所述闪存命令的优先级,对所述处理器模块40发送的闪存命令和所述自动命令管理模块12发送的闪存命令进行排队处理,加入闪存命令处理序列,以解决闪存命令之间的冲突。
[0126] 可以理解的是,所述IO管理模块13由另外一套微码处理单元来管理,其也需要编写微码,其属于现有技术,在此不再赘述。
[0127] 其中,所述闪存IO模块14,连接所述IO管理模块以及闪存介质,用于接收所述IO管理模块发送的闪存命令,并基于闪存命令,产生操作时序,与所述闪存介质进行交互;
[0128] 具体的,所述闪存IO模块14,连接所述IO管理模块以及闪存介质,用于接收所述IO管理模块发送的闪存命令,并基于闪存命令,产生操作时序,所述闪存操作时序用于确定每一闪存命令的执行顺序。所述闪存IO模块14通过所述闪存命令,产生操作时序,与所述闪存介质进行交互。
[0129] 可以理解的是,所述闪存IO模块14也是由另外一套微码处理单元来管理,其也需要编写微码,其属于现有技术,在此不再赘述。
[0130] 其中,所述自动命令管理模块在满足触发条件之后,触发相应的微码生成对应的闪存命令,并将所述闪存命令对应的IO操作发送到所述IO管理模块,以使所述IO管理模块将所述IO操作转发到所述闪存IO模块,由所述闪存IO模块向对应的闪存介质发送所述IO操作。
[0131] 具体的,所述触发条件包括定时策略和/或计数策略,其中,所述定时策略为硬件定时器策略,具体的,硬件选择以实时运行时间作为周期,达到预设时间阈值则触发执行,实现固态硬盘上电周期内的自动进行闪存命令的发送管理。比如通过初始化设置对应的定时器,运行控制状态机,如定时器达到预设时间阈值,则设置对应的条件寄存器,即写对应的条件寄存器,从而触发对应微码的执行,实现固态硬盘生命周期内的自动进行闪存命令的发送管理。
[0132] 其中,所述计数策略为软件计数策略,软件选择以线性递增数值,即以计数次数作为周期,例如擦除次数,当所述计数次数达到预设次数阈值,则设置对应的条件寄存器,即写对应的条件寄存器,从而触发对应微码的执行,实现固态硬盘生命周期内的自动进行闪存命令的发送管理。
[0133] 本发明实施例通过由硬件完成闪存命令的生成,可以减少软件开销和CPU负担,从而提高固态硬盘(SSD)产品的性能。
[0134] 在本发明实施例中,通过提供一种闪存控制器,应用于固态硬盘,所述固态硬盘包括至少一个闪存介质,所述闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块、IO管理模块以及闪存IO模块,其中,自动命令管理模块用于存储多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;IO管理模块用于接收所述自动命令管理模块发送的闪存命令;闪存IO模块用于接收所述IO管理模块发送的闪存命令,并基于闪存命令,产生操作时序,与所述闪存介质进行交互。通过自动命令管理模块生成闪存命令,本发明能够减少固态硬盘的处理器的负担,提高固态硬盘的性能。
[0135] 请再参阅图6,图6是本发明实施例提供的一种IO管理模块的结构示意图;
[0136] 如图6所示,该IO管理模块13,包括:第一IO分发模块131、IO回收利用模块132、IO获取模块133、第二IO分发模块134以及通路控制逻辑模块135,其中,
[0137] 所述第一IO分发模块131,即IO Dispatcher,用于将第一IO List中的IO操作分发到自动命令管理模块,其中,所述第一IO List用于对回收的IO操作进行排序;
[0138] 所述IO回收利用模块132,即IO Reclaimer,用于将闪存介质返回的IO操作加入到第一IO List中,其中,该第一IO List为与第一IO分发模块131对应的IO List;
[0139] 所述IO获取模块133,即IO Fetcher,用于获取处理器模块发送的IO操作,并将所述IO操作加入到第二IO List中,其中,所述第二IO List,用于对自动命令管理模块发送的IO操作以及处理器模块发送的IO操作进行排序;
[0140] 所述第二IO分发模块134,即IO Dispatcher,用于将第二IO List中的IO操作发送到闪存IO模块,其中,该第二IO List为与IO获取模块133对应的IO List。
[0141] 所述通路控制逻辑模块135,用于控制所述第一IO List和第二IO List中的IO操作的顺序。
[0142] 其中,所述IO管理模块13通过所述通路控制逻辑模块135确定所述自动命令管理模块发送的IO操作以及处理器模块发送的IO操作的顺序,例如:根据优先级进行排序。
[0143] 请再参阅图7,图7是本发明实施例提供的一种固态硬盘控制器的结构示意图;
[0144] 如图7所示,该固态硬盘控制器100,包括:闪存控制器10、控制器模块20、数据通路模块30、处理器模块40以及外设模块50。
[0145] 其中,所述闪存控制器10为上述实施例中的闪存控制器,参见上述实施例,在此不再赘述。
[0146] 其中,所述控制器模块20,连接所述处理器模块40以及所述数据通路模块30,所述控制器模块20包括DDR控制器、PCIe/NVMe控制器,用于处理主机下发的不同接口协议的IO操作。
[0147] 其中,所述数据通路模块30,连接所述控制器模块20、闪存控制器10以及处理器模块40,其中,所述数据通路模块30连接所述闪存控制器10的接口模块11,用于对主机下发的所述IO操作进行处理,将主机下发的IO操作发送到所述接口模块11。在本发明实施例中,所述数据通路模块30为Data Path处理模块。
[0148] 其中,所述处理器模块40,连接所述闪存控制器10、控制器模块20、数据通路模块30以及外设模块50,用于向所述闪存控制器10发送IO操作,或者,控制所述闪存控制器10、控制器模块20、数据通路模块30以及外设模块50的工作过程。在本发明实施例中,所述处理器模块40为中央处理单元(Central Processing Unit,CPU)。
[0149] 其中,所述外设模块50,连接所述处理器模块40,包括外围单元,例如传感器等单元,用于处理外围的相关操作。
[0150] 在本发明实施例中,所述处理器模块40可以向接口模块11发送闪存命令,所述闪存命令通过所述接口模块11转发到所述IO管理模块13,并且,所述自动命令管理模块12也可以直接向所述IO管理模块13发送闪存命令,其中,所述处理器模块40发送的闪存命令和所述自动命令管理模块12发送的闪存命令由IO管理模块进行处理,所述IO管理模块包括一命令仲裁管理模块,所述命令仲裁管理模块用于根据所述闪存命令的优先级,对所述处理器模块40发送的闪存命令和所述自动命令管理模块12发送的闪存命令进行排队处理,加入闪存命令处理序列,以解决闪存命令之间的冲突。
[0151] 在本发明实施例中,通过提供一种固态硬盘控制器,包括:闪存控制器以及处理器模块,其中,该闪存控制器包括至少一个闪存通道,每一闪存通道均包括自动命令管理模块、IO管理模块以及闪存IO模块,其中,自动命令管理模块用于存储多个闪存命令对应的微码,每一微码用于生成与之对应的闪存命令;IO管理模块用于接收所述自动命令管理模块发送的闪存命令;闪存IO模块用于接收所述IO管理模块发送的闪存命令,并基于闪存命令,产生操作时序,与所述闪存介质进行交互。该处理器模块,连接所述闪存控制器,用于向所述闪存控制器发生闪存命令。通过对所述处理器模块40发送的闪存命令和所述自动命令管理模块12发送的闪存命令进行排队处理,加入闪存命令处理序列,本发明实施例能够解决闪存命令之间的冲突。
[0152] 请参阅图8,图8是本发明实施例提供的一种闪存命令管理方法的流程示意图;
[0153] 如图8所示,该闪存命令管理方法,包括:
[0154] 步骤S10:获取多个闪存命令对应的微码;
[0155] 具体的,所述微码为用户预先编写或设定的,每一闪存命令对应一个微码,所述微码用于定义闪存命令,其中,所述闪存命令包括ZQ校准命令。通过获取多个闪存命令对应的微码,并将所述微码保存于所述自动命令管理模块的命令管理模块中的微码处理模块。
[0156] 步骤S20:若满足触发条件,触发所述微码,生成与所述微码对应的闪存命令的IO操作,其中,所述触发条件包括定时策略和/或计数策略;
[0157] 具体的,所述触发条件包括定时策略和/或计数策略。其中,所述定时策略为硬件定时器策略,具体的,硬件选择以实时运行时间作为周期,达到预设时间阈值则触发执行,实现固态硬盘上电周期内的自动进行闪存命令的发送管理。比如通过初始化设置对应的定时器,运行控制状态机,如设置的定时器达到预设时间阈值,则设置对应的条件寄存器,即写对应的条件寄存器,从而触发对应微码的执行,实现固态硬盘生命周期内的自动进行闪存命令的发送管理。
[0158] 其中,所述计数策略为软件计数策略,软件选择以线性递增数值(如擦除次数)作为周期,当计数次数达到预设次数阈值时,则设置对应的条件寄存器,即写对应的条件寄存器,从而触发对应微码的执行,实现固态硬盘生命周期内的自动进行闪存命令的发送管理。
[0159] 具体的,请再参阅图9,图9是本发明实施例提供的一种自动命令执行流程的流程示意图;
[0160] 如图9所示,该自动命令执行流程,包括:
[0161] 步骤S91:编辑微码并存储;
[0162] 具体的,用户通过编辑多个闪存命令对应的微码,并通过外部通路接口发送到所述微码存储模块,以使所述微码存储模块存储所述微码,其中,每一段微码对应一个闪存命令,具体的,每一段微码对应一个闪存明或者系列命令的操作过程。
[0163] 步骤S92:初始化条件管理模块;
[0164] 具体的,初始化条件管理模块,包括:设定工作参数、设定每段微码的执行条件或触发条件等,通过检查与每一段微码对应的寄存器的寄存器位域是否被置位,例如:被置位为1,其中,所述寄存器位于所述条件管理模块的条件控制寄存器组,所述寄存器位域由定时器、比较器或者处理器进行置位。
[0165] 步骤S93:初始化和使能微码处理模块;
[0166] 具体的,初始化微码处理模块,并使能所述微码处理模块,包括将上电时处于闭关状态的硬件模块通过程序写寄存器使能位激活,当使能所述微码处理模块之后,微码处理模块进入微码程序入口,开始执行微码;
[0167] 步骤S94:进入微码程序入口;
[0168] 具体的,进入微码程序入口,准备执行所述微码。
[0169] 步骤S95:是否执行该段微码;
[0170] 具体的,判断该段微码是否满足执行条件或触发条件;若是,则进入步骤S96;若否,则进入步骤S99;
[0171] 步骤S96:执行微码;
[0172] 具体的,执行微码,以产生与所述微码对应的闪存命令,例如ZQ校准命令。
[0173] 步骤S97:产生IO操作;
[0174] 具体的,基于所述闪存命令,产生IO操作。
[0175] 步骤S98:发送IO操作;
[0176] 步骤S99:跳转到下一段微码;
[0177] 具体的,当该段微码未满足执行条件或触发条件时,进入下一段微码的执行过程,所述下一段微码的顺序由编程人员所编程序确定,在跳转到下一段微码之后,返回步骤S95:判断是否执行该段微码,依次循环执行所述闪存命令对应的多段微码。
[0178] 步骤S30:向所述闪存介质发送所述IO操作,以更新所述闪存命令对应的控制信息和/或存储所述闪存介质返回的数据。
[0179] 具体的,当执行某一段微码时,将生成与该段微码对应的闪存命令,并生成与所述微码对应的闪存命令的IO操作,例如ZQ校准操作,向所述闪存介质发送所述IO操作,以使闪存介质执行所述IO操作,以更新所述闪存命令对应的控制信息和/或存储所述闪存介质返回的数据。
[0180] 具体的,请再参阅图10,图10是本发明实施例提供的一种IO回收的流程示意图;
[0181] 如图10所示,该IO回收,包括:
[0182] 步骤S101:IO回收;
[0183] 具体的,当闪存命令的IO操作结束后,IO回收模块回收IO操作,通过闪存IO模块发送IO操作信息到IO管理模块,再由IO管理模块将所述IO操作信息发送到自动命令管理模块,以使所述自动命令管理模块中的IO回收模块获取所述IO操作信息,并将所述IO操作信息发送到所述IO资源管理模块。
[0184] 步骤S102:更新其对应命令的信息和存储返回的数据;
[0185] 具体的,IO资源管理模块根据IO操作信息,更新所述闪存命令对应的控制信息,并将返回的数据则存储在相关寄存器和随机存取存储器(random access memory,RAM),其中,所述相关寄存器和随机存取存储器(random access memory,RAM)为预先定义的。
[0186] 在本发明实施例中,所述IO管理模块包括一IO顺序表,在生成微码对应的闪存命令的IO操作之后,所述方法还包括:
[0187] 将所述闪存命令的IO操作插入所述IO顺序表;
[0188] 顺序执行所述IO顺序表中的IO操作。
[0189] 具体的,根据所述IO顺序表中的IO操作的顺序,顺序执行所述IO顺序表中的IO操作。
[0190] 请再参阅图11,图11是本发明实施例提供的一种执行触发策略的流程示意图;
[0191] 如图11所示,该执行触发策略,包括:
[0192] 步骤S110:选择命令触发条件类型;
[0193] 具体的,所述命令触发条件类型包括定时策略和/或计数策略,即硬件定时器策略和/或软件控制计数策略,用户通过选择命令触发条件类型,确定闪存命令对应的触发条件类型。或者,根据不同闪存命令的需求或者产品需求,确定闪存命令对应的触发条件类型。例如:在读刷新命令,闪存厂商要求3ms,发送一次读刷新命令,则选择硬件定时器策略,并设定3ms触发命令发送。或者,每1000小时发送一次ZQ命令等,比如闪存温度查询命令,一般都是工程师根据产品应用环境要求,有不同时间间隔要求,来查询闪存的温度。以上几种都是可以由HW定时可以满足需求。故而选择定时策略,比如自动校准命令,一般是工程师根据闪存擦除次数来确定发送周期,比如每隔擦除300次,发送一次自动校准命令,而擦除次数由软件维护好,就选择计数策略。
[0194] 步骤S111:硬件定时器策略;
[0195] 步骤S112:选择定时器;
[0196] 步骤S113:设置定时器与条件寄存器的对应关系;
[0197] 步骤S114:设置定时器周期;
[0198] 具体的,所述定时器周期为预设时间阈值。
[0199] 步骤S115:定时达到阈值触发写条件寄存器;
[0200] 具体的,当定时达到所述预设时间阈值时,视为满足触发条件或执行条件,此时根据所述定时器与条件寄存器的对应关系,触发写条件寄存器;
[0201] 步骤S116:软件控制计数策略;
[0202] 步骤S117:选择计数变量;
[0203] 具体的,确定计数变量,所述计数变量包括擦除次数。
[0204] 步骤S118:确定计数变量与条件寄存器的对应关系;
[0205] 步骤S119:计数变量达到阈值触发写条件寄存器;
[0206] 具体的,当所述计数变量到达预设次数阈值时,满足触发条件或执行条件,此时根据所述计数变量与条件寄存器的对应关系,写条件寄存器。
[0207] 请再参阅图12,图12是本发明实施例提供的一种ZQ校准命令的初始化的流程示意图;
[0208] 如图12所示,该ZQ校准命令的初始化,包括:
[0209] 步骤S121:编写ZQ校准对应的微码,并存储;
[0210] 步骤S122:设置定时器周期为1000小时;
[0211] 步骤S123:初始化和使能微码处理模块;
[0212] 请再参阅图13,图13是本发明实施例提供的一种ZQ校准命令的执行过程的流程示意图;
[0213] 如图13所示,该ZQ校准命令的执行过程,包括:
[0214] 步骤S131:ZQ校准对应的条件寄存器是否置位;
[0215] 步骤S132:执行ZQ校准对应的微码;
[0216] 步骤S133:产生ZQ校准IO操作;
[0217] 步骤S134:发送ZQ校准IO操作;
[0218] 步骤S135:将ZQ校准IO操作插入IO顺序表;
[0219] 其中,所述IO顺序表为IO List,在将所述ZQ校准IO操作插入IO顺序表之后,将根据所述IO顺序表中的顺序,确定ZQ校准IO操作的执行顺序。
[0220] 步骤S136:发送ZQ校准命令给闪存;
[0221] 具体的,向闪存介质发送ZQ校准命令。
[0222] 步骤S137:闪存完成ZQ校准命令;
[0223] 具体的,闪存介质完成ZQ校准命令。
[0224] 步骤S138:ZQ校准IO操作回收;
[0225] 步骤S139:更新其对应命令控制信息;
[0226] 步骤S1310:执行其他微码;
[0227] 具体的,根据所述IO顺序表,执行该ZQ校准命令的下一段微码。
[0228] 在本发明实施例中,通过提供一种闪存命令管理方法,应用于上述的固态硬盘,所述方法包括:获取多个闪存命令对应的微码;若满足触发条件,触发所述微码,生成与所述微码对应的闪存命令的IO操作,其中,所述触发条件包括定时策略和/或计数策略;向所述闪存介质发送所述IO操作,以更新所述闪存命令对应的控制信息和/或存储所述闪存介质返回的数据。通过在满足触发条件之后触发微码,自动生成与所述微码对应的闪存命令的IO操作,本发明实施例能够减少固态硬盘的处理器的负担,提高固态硬盘的性能。
[0229] 本发明实施例还提供了一种非易失性计算机存储介质,所述计算机存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个处理器执行,例如图1中的一个处理器322,可使得上述一个或多个处理器可执行上述任意方法实施例中的闪存命令管理方法,例如,执行上述任意方法实施例中的闪存命令管理方法,例如,执行以上描述的图8所示的各个步骤。
[0230] 以上所描述的装置或设备实施例仅仅是示意性的,其中所述作为分离部件说明的单元模块可以是或者也可以不是物理上分开的,作为模块单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络模块单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0231] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用直至得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
[0232] 最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;在本发明的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本发明的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。