CN116991310B - 闪存状态查询方法及闪存控制器 - Google Patents
闪存状态查询方法及闪存控制器 Download PDFInfo
- Publication number
- CN116991310B CN116991310B CN202310768976.2A CN202310768976A CN116991310B CN 116991310 B CN116991310 B CN 116991310B CN 202310768976 A CN202310768976 A CN 202310768976A CN 116991310 B CN116991310 B CN 116991310B
- Authority
- CN
- China
- Prior art keywords
- flash memory
- state query
- command
- state
- module
- 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
Links
- 230000015654 memory Effects 0.000 title claims abstract description 229
- 238000000034 method Methods 0.000 title claims abstract description 61
- 238000001514 detection method Methods 0.000 claims description 11
- 238000002360 preparation method Methods 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002245 particle Substances 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
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
- 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]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请公开了一种闪存状态查询方法及闪存控制器,涉及存储技术领域,包括:通过操作状态查询模块判断是否满足闪存操作状态查询请求的条件;当满足闪存操作状态查询请求的条件,操作状态查询模块通过中断方式向第一处理器发送判断结果;根据判断结果,通过第一处理器执行缓存中的程序,以通过总线与寄存器模块设置闪存操作状态查询请求,并通过总线时序模块发送闪存操作状态查询请求至对应的闪存;根据总线时序模块接收闪存发送的状态值;根据停止策略,当操作状态查询模块判断状态值满足第一停止条件,且当闪存完成预设的操作命令,通过中断方式向第一处理器发送操作成功的结果。本申请能够降低CPU的开销。
Description
技术领域
本申请涉及存储技术领域,尤其涉及一种闪存状态查询方法及闪存控制器。
背景技术
相关技术中,闪存基本操作包括擦除erase、编程program、读取read三种,每种操作可以根据操作的数据范围不同,扩展成其他操作类型,如multi-plane erase,cacheread等。当闪存接收大部分操作命令后,闪存内部需要对命令进行处理,闪存此时将处在忙busy状态,不能再接收操作命令,闪存内部完成操作,恢复到就绪ready状态。不同的操作类型,busy状态持续的时间不同。闪存的这种ready/busy状态,通常可以通过特定的命令获取,如70h,78h。
闪存控制器是根据闪存规范设计实现,能够按照规范要求的接口时序对闪存进行访问的装置。系统中的中央处理器(CPU)可以通过程序控制闪存控制器的行为,通过发送命令查询闪存状态查询闪存状态。
当系统中存在多颗闪存时,如果仅通过CPU进行控制处理,会导致系统复杂化加剧,也就是说,通过命令查询的方式,由于不同操作的busy状态时间不同,CPU可能需要多次发送查询命令,直到闪存退出busy状态,CPU开销大。因此,如何在闪存状态查询时降低CPU的开销,成为了亟待解决的技术问题。
发明内容
本申请旨在至少解决现有技术中存在的技术问题之一。为此,本申请提出了一种闪存状态查询方法及闪存控制器,能够在闪存状态查询时降低CPU的开销。
根据本申请的第一方面实施例的闪存状态查询方法,应用于闪存控制器,所述闪存控制器包括:
缓存;
第一处理器;
总线与寄存器模块;
操作状态查询模块;
总线时序模块;
所述闪存状态查询方法包括:
进行初始化配置;
根据初始化配置后得到的状态查询命令发送策略,通过所述操作状态查询模块判断是否满足闪存操作状态查询请求的条件;
当满足闪存操作状态查询请求的条件,所述操作状态查询模块通过中断方式向所述第一处理器发送判断结果;
根据所述第一处理器获取的所述判断结果,通过所述第一处理器执行所述缓存中的程序,以通过所述总线与寄存器模块设置闪存操作状态查询请求,并通过所述总线时序模块发送闪存操作状态查询请求至对应的闪存;
根据所述总线时序模块接收所述闪存发送的状态值;
根据初始化配置后得到的停止策略,通过所述操作状态查询模块判断所述状态值是否满足停止策略中的第一停止条件;
当满足停止策略中的第一停止条件,通过所述操作状态查询模块判断所述闪存是否完成预设的操作命令;
当完成预设的操作命令,所述操作状态查询模块通过中断方式向所述第一处理器发送操作成功的结果。
根据本申请实施例的闪存状态查询方法,至少具有如下有益效果:第一步,进行初始化配置;第二步,根据初始化配置后得到的状态查询命令发送策略,通过操作状态查询模块判断是否满足闪存操作状态查询请求的条件;第三步,当满足闪存操作状态查询请求的条件,操作状态查询模块通过中断方式向第一处理器发送判断结果;第四步,根据第一处理器获取的判断结果,通过第一处理器执行缓存中的程序,以通过总线与寄存器模块设置闪存操作状态查询请求,并通过总线时序模块发送闪存操作状态查询请求至对应的闪存;第五步,根据总线时序模块接收闪存发送的状态值;第六步,根据初始化配置后得到的停止策略,通过操作状态查询模块判断状态值是否满足停止策略中的第一停止条件;第七步,当满足停止策略中的第一停止条件,通过操作状态查询模块判断闪存是否完成预设的操作命令;第八步,当完成预设的操作命令,操作状态查询模块通过中断方式向第一处理器发送操作成功的结果。本申请的闪存状态查询方法,闪存操作状态查询请求均通过第一处理器执行对应的程序来完成,同时,通过操作状态查询模块来进行闪存不同状态的查询判断,并进行相应处理,无需CPU多次发送查询命令,降低了CPU的开销。因此,本申请的闪存状态查询方法,能够在闪存状态查询时降低CPU的开销。
根据本申请的一些实施例,所述进行初始化配置,包括:
配置所述第一处理器执行程序设置闪存操作状态查询请求中状态查询命令的内容,其中,所述状态查询命令包括命令码、命令发送地址、接收状态数据长度;
配置所述第一处理器执行程序设置状态查询命令的时间参数,其中,所述时间参数包括初次命令发送时间点、重新发送状态查询命令的时间间隔;
配置所述停止策略;
配置操作成功判定条件,其中,所述操作成功判定条件为操作成功标志位有效。
根据本申请的一些实施例,所述闪存控制器还包括引脚检测模块;
所述通过所述操作状态查询模块判断是否满足闪存操作状态查询请求的条件,包括:
通过所述引脚检测模块获取R/B#引脚的状态,并通过所述操作状态查询模块判断R/B#引脚的状态是否满足闪存操作状态查询请求的条件。
根据本申请的一些实施例,在所述根据所述第一处理器获取的所述判断结果,通过所述第一处理器执行所述缓存中的程序之前,所述闪存状态查询方法还包括:
当未满足闪存操作状态查询请求的条件,等待R/B#引脚拉至高电平;
当等待时间满足停止策略中的第三停止条件,所述操作状态查询模块通过中断方式向所述第一处理器发送操作失败的结果,其中,所述第三停止条件为等待R/B#引脚拉至高电平的时间超过第一时间阀值。
根据本申请的一些实施例,所述闪存状态查询方法还包括:
当等待时间未满足停止策略中的第三停止条件,重新发送状态查询命令。
根据本申请的一些实施例,R/B#引脚的状态包括低电平、高电平;
所述当满足闪存操作状态查询请求的条件,包括:
当R/B#引脚的状态为高电平,且符合状态查询命令的初次命令发送时间点,则满足闪存操作状态查询请求的条件;
或,
当符合状态查询命令的初次命令发送时间点,则满足闪存操作状态查询请求的条件。
根据本申请的一些实施例,所述当满足停止策略中的第一停止条件,包括:
当满足准备标志位有效,则满足停止策略中的第一停止条件。
根据本申请的一些实施例,所述闪存状态查询方法还包括:
当未满足停止策略中的第一停止条件,判断是否满足停止策略中的第二停止条件,其中,所述第二停止条件为重复发送状态查询命令的次数阈值或第二时间阈值;
当满足停止策略中的第二停止条件,所述操作状态查询模块通过中断方式向所述第一处理器发送操作失败的结果;
或,
当未满足停止策略中的第二停止条件,判断是否满足重新发送状态查询命令的时间间隔;
当满足重新发送状态查询命令的时间间隔,则重新发送状态查询命令。
根据本申请的一些实施例,所述闪存状态查询方法还包括:
通过预设的闪存操作执行时间表中的操作类型、第一执行时间设定初次命令发送时间点;
通过预设的闪存操作执行时间表中的操作类型、第一执行时间设定重新发送状态查询命令的时间间隔;
所述闪存操作执行时间表通过以下步骤进行更新:
记录临近时间内同一操作类型的多个第二执行时间;
通过多个第二执行时间计算同一操作类型的平均执行时间;
计算所述平均执行时间与该操作类型的典型执行时间的差值;
将闪存操作执行时间表中的第一执行时间加上所述差值,以更新该操作类型的执行时间表。
根据本申请的第二方面实施例的闪存控制器,用于执行如第一方面实施例所述的闪存状态查询方法,所述闪存控制器包括:
缓存,所述缓存存储有程序;
总线与寄存器模块,所述总线与寄存器模块用于设置闪存操作状态查询请求;
总线时序模块,所述总线时序模块用于在不同接口时序下发送闪存操作状态查询请求,以及接收操作成功或操作失败的状态值;
第一处理器,所述第一处理器用于执行所述程序,以通过所述总线与寄存器模块设置闪存操作状态查询请求,并通过所述总线时序模块发送闪存操作状态查询请求至对应的闪存;
操作状态查询模块,所述操作状态查询模块用于进行闪存的操作状态查询,以进行状态判断;
引脚检测模块,所述引脚检测模块用于获取R/B#引脚的状态。
本申请的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
下面结合附图和实施例对本申请做进一步的说明,其中:
图1为本申请一个实施例所提供的闪存控制器的结构示意图;
图2为本申请一个实施例所提供的闪存状态查询方法的流程示意图;
图3为本申请另一实施例所提供的闪存状态查询方法的流程示意图;
图4为本申请实施例所提供的闪存状态查询系统的结构示意图。
附图标记:
缓存100、总线与寄存器模块110、总线时序模块120、第一处理器130、操作状态查询模块140、引脚检测模块150、存储器200、第二处理器300。
具体实施方式
下面详细描述本申请的实施例,实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
需要说明的是,虽然在系统示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于系统中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在本申请的描述中,若干的含义是一个以上,多个的含义是两个以上,大于、小于、超过等理解为不包括本数,以上、以下、以内等理解为包括本数。如果有描述到第一、第二只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
本申请的描述中,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本申请中的具体含义。
本申请的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
闪存基本操作包括擦除erase、编程program、读取read三种,每种操作可以根据操作的数据范围不同,扩展成其他操作类型,如multi-plane erase,cache read等。
当闪存接收大部分操作命令后,闪存内部需要对命令进行处理,闪存此时将处在忙busy状态,不能再接收操作命令,闪存内部完成操作,恢复到就绪ready状态。不同的操作类型,busy状态持续的时间不同。
对于闪存操作的执行是否成功,需要首先等待操作执行完成,即等待闪存退出busy状态;之后还要通过状态值,确认操作是否成功。
闪存控制器是根据闪存规范设计实现,能够按照规范要求的接口时序对闪存进行访问的装置。系统中的CPU通过程序控制闪存控制器的行为,通过发送命令查询闪存状态,或者通过引脚R/B#查询闪存状态。
当系统中存在多颗闪存时,如果每颗闪存都使用独立的R/B#引脚获取状态,则会消耗较多的引脚资源,导致系统走线复杂。实际应用中,通常使用发送命令的方式查询状态;或者命令查询与R/B#引脚查询结合起来使用。
以上状态查询过程中,如果是R/B#引脚查询,闪存控制器可将R/B#引脚的设计成中断触发信号,一旦R/B#引脚变为高,则触发中断,减少CPU的轮询开销。如果是命令查询方式,由于不同操作的busy状态时间不同,CPU可能需要多次发送查询命令,直到闪存退出busy状态,CPU开销大。
基于此,本申请提出了一种闪存状态查询方法及闪存控制器,能够降低走线复杂度,并降低CPU开销。
下面,根据图1-3描述本申请实施例的闪存状态查询方法。
可以理解的是,如图1-2所示,提供了一种闪存状态查询方法,应用于闪存控制器,闪存控制器包括:
缓存100;
第一处理器130;
总线与寄存器模块110;
操作状态查询模块140;
总线时序模块120;
闪存状态查询方法包括:
步骤S100,进行初始化配置;
步骤S110,根据初始化配置后得到的状态查询命令发送策略,通过操作状态查询模块140判断是否满足闪存操作状态查询请求的条件;
步骤S120,当满足闪存操作状态查询请求的条件,操作状态查询模块140通过中断方式向第一处理器130发送判断结果;
步骤S130,根据第一处理器130获取的判断结果,通过第一处理器130执行缓存100中的程序,以通过总线与寄存器模块110设置闪存操作状态查询请求,并通过总线时序模块120发送闪存操作状态查询请求至对应的闪存;
步骤S140,根据总线时序模块120接收闪存发送的状态值;
步骤S150,根据初始化配置后得到的停止策略,通过操作状态查询模块140判断状态值是否满足停止策略中的第一停止条件;
步骤S160,当满足停止策略中的第一停止条件,通过操作状态查询模块140判断闪存是否完成预设的操作命令;
步骤S170,当完成预设的操作命令,操作状态查询模块140通过中断方式向第一处理器130发送操作成功的结果。
第一步,进行初始化配置;第二步,根据初始化配置后得到的状态查询命令发送策略,通过操作状态查询模块140判断是否满足闪存操作状态查询请求的条件;第三步,当满足闪存操作状态查询请求的条件,操作状态查询模块140通过中断方式向第一处理器130发送判断结果;第四步,根据第一处理器130获取的判断结果,通过第一处理器130执行缓存100中的程序,以通过总线与寄存器模块110设置闪存操作状态查询请求,并通过总线时序模块120发送闪存操作状态查询请求至对应的闪存;第五步,根据总线时序模块120接收闪存发送的状态值;第六步,根据初始化配置后得到的停止策略,通过操作状态查询模块140判断状态值是否满足停止策略中的第一停止条件;第七步,当满足停止策略中的第一停止条件,通过操作状态查询模块140判断闪存是否完成预设的操作命令;第八步,当完成预设的操作命令,操作状态查询模块140通过中断方式向第一处理器130发送操作成功的结果。本申请的闪存状态查询方法,闪存操作状态查询请求均通过第一处理器130执行对应的程序来完成,同时,通过操作状态查询模块140来进行闪存不同状态的查询判断,并进行相应处理,无需CPU多次发送查询命令,降低了CPU的开销。因此,本申请的闪存状态查询方法,能够在闪存状态查询时降低CPU的开销。
可以理解的是,进行初始化配置,包括:
配置第一处理器130执行程序设置闪存操作状态查询请求中状态查询命令的内容,其中,状态查询命令包括命令码、命令发送地址、接收状态数据长度;
配置第一处理器130执行程序设置状态查询命令的时间参数,其中,时间参数包括初次命令发送时间点、重新发送状态查询命令的时间间隔;
配置停止策略;
配置操作成功判定条件,其中,操作成功判定条件为操作成功标志位有效。
需要说明的是,配置状态查询命令内容:第一处理器130执行程序设置状态查询命令的内容,包括:命令码、命令发送的地址、接收状态数据长度等;
配置命令时间间隔策略:第一处理器130执行程序设置状态查询命令的时间间隔策略。闪存操作类型不同,对应的忙busy时间不同。命令发送时间策略包含两个时间参数:T0,初次(第一次)命令发送时间点;Tn,重复命令的时间间隔。T0,Tn都根据闪存操作类型确定,且可根据算法动态调整;
配置命令重发停止条件:包括三个条件,第一停止条件(停止条件1):接收的状态值中准备(Ready)标志位有效;第二停止条件(停止条件2):重复发送查询命令发送次数阈值,或者超过时间阈值;第三停止条件(停止条件3):等待R/B#引脚拉高ready时间超时的时间值,也就是等待R/B#引脚拉高的时间超过设定的时间值;
配置操作成功判定条件:接收的状态中操作成功标志位有效。
完成以上配置后,操作状态查询模块140开始进行操作状态查询,根据以上流程完成状态查询,并产生相应的结果中断。
可以理解的是,闪存控制器还包括引脚检测模块150;
通过操作状态查询模块140判断是否满足闪存操作状态查询请求的条件,包括:
通过引脚检测模块150获取R/B#引脚的状态,并通过操作状态查询模块140判断R/B#引脚的状态是否满足闪存操作状态查询请求的条件。
可以理解的是,在根据第一处理器130获取的判断结果,通过第一处理器130执行缓存100中的程序之前,闪存状态查询方法还包括:
当未满足闪存操作状态查询请求的条件,等待R/B#引脚拉至高电平;
当等待时间满足停止策略中的第三停止条件,操作状态查询模块140通过中断方式向第一处理器130发送操作失败的结果,其中,第三停止条件为等待R/B#引脚拉至高电平的时间超过第一时间阀值。
可以理解的是,闪存状态查询方法还包括:
当等待时间未满足停止策略中的第三停止条件,重新发送状态查询命令。
可以理解的是,R/B#引脚的状态包括低电平、高电平;
当满足闪存操作状态查询请求的条件,包括:
当R/B#引脚的状态为高电平,且符合状态查询命令的初次命令发送时间点,则满足闪存操作状态查询请求的条件;
或,
当符合状态查询命令的初次命令发送时间点,则满足闪存操作状态查询请求的条件。
需要说明的是,结合R/B#引脚状态的状态查询命令为一种状态查询命令发送策略。具体地,在应用系统中,如果R/B#引脚可用,则闪存的控制可以结合R/B#引脚状态发送状态查询命令。R/B#引脚是低电平时,闪存处在忙状态;是高电平时,闪存处在就绪状态。但仅通过R/B#引脚不能判断闪存操作是否成功,需要进一步发送状态查询命令。因此,闪存控制器,可以先查询R/B#引脚的状态,等待其变为高电平后,再发送状态查询命令。
执行该策略时,关键分支如图3所示,其中停止条件3可以理解为等待R/B#引脚为高电平的时间超过设定的时间值或阈值;停止条件2为重复发送命令的次数达到N次。T0=0,即:R/B#引脚为高后,立即发送状态查询命令;Tn=Tmin,以最小间隔重发状态查询命令。进一步地,在检查命令发送条件时,还可以进行使用策略的判断,如果确认使用该策略,则先检查R/B#引脚是否为高电平,如果是高电平,则在T0=0的情况下,立即发送初次状态查询命令。
可以理解的是,当满足停止策略中的第一停止条件,包括:
当满足准备标志位有效,则满足停止策略中的第一停止条件。
可以理解的是,闪存状态查询方法还包括:
当未满足停止策略中的第一停止条件,判断是否满足停止策略中的第二停止条件,其中,第二停止条件为重复发送状态查询命令的次数阈值或第二时间阈值;
当满足停止策略中的第二停止条件,操作状态查询模块140通过中断方式向第一处理器130发送操作失败的结果;
或,
当未满足停止策略中的第二停止条件,判断是否满足重新发送状态查询命令的时间间隔;
当满足重新发送状态查询命令的时间间隔,则重新发送状态查询命令。
可以理解的是,闪存状态查询方法还包括:
通过预设的闪存操作执行时间表中的操作类型、第一执行时间设定初次命令发送时间点;
通过预设的闪存操作执行时间表中的操作类型、第一执行时间设定重新发送状态查询命令的时间间隔;
闪存操作执行时间表通过以下步骤进行更新:
记录临近时间内同一操作类型的多个第二执行时间;
通过多个第二执行时间计算同一操作类型的平均执行时间;
计算平均执行时间与该操作类型的典型执行时间的差值;
将闪存操作执行时间表中的第一执行时间加上差值,以更新该操作类型的执行时间表。
需要说明的是,无R/B#引脚的状态查询命令发送策略,为另一种发送策略。具体地,闪存操作包括命令输入与命令执行两个部分,忙状态持续时间与命令执行部分相关。以TLC模式为例,定义闪存操作类型的执行时间,如下表1:
表1:闪存操作执行时间表
操作类型 | 最小执行时间 | 典型执行时间 | 最大执行时间 |
擦除操作 | Te_min | Te_typ | Te_max |
编程操作 | Tp_min | Tp_typ | Tp_max |
读操作 | Tr_min | Tr_typ | Tr_max |
Multi-Plane擦除操作 | Tmpe_min | Tmpe_typ | Tmpe_max |
Multi-Plane编程操作 | Tmpp_min | Tmpp_typ | Tmpp_max |
Multi-Plane读操作 | Tmpr_min | Tmpr_typ | Tmpr_max |
… |
以上表格中的数据可通过闪存规格书获得,或者对闪存颗粒进行批量测试后获得。
状态查询命令的发送时间需要确定两个参数,T0,Tn(n=1,2,…)。
当闪存控制器向闪存完成特定操作的命令输入后,可通过处理器配置闪存控制器,启动状态查询命令的发送与操作结果的判断。根据当前的操作类型,查找闪存操作执行时间表格(如表1),获取该操作执行时间对应的最小值,典型值和最大值。
设定初始的T0等于操作执行时间的典型值Ttyp。设定初始的Tn,即T1,等于(Tmax-Tmin)*0.5。每增加一次命令发送,间隔时间Tn减少为前面一次间隔时间Tn-1的一半,直到间隔时间Tn小于最小间隔Tmin,该间隔时间记为Tx,Tx及之后的Tn都等于Tmin。
根据图3流程,当T0时间到,满足命令发送条件,会发送第一个状态查询命令,命令执行完成并接收状态之后,进行停止条件1判断,如果满足条件,即:操作已完成,闪存退出忙状态,则继续进行操作结果判断;否则进行停止条件2判断,即:判断是否达到命令重发的停止条件。如果不满足,将等待T1时间后,满足命令发送条件,继续发送状态查询命令。依次类推,重发状态查询命令,直到满足停止条件1,或者满停止条件2,即:重发状态查询命令的总次数超过阈值,此情况判断为操作异常。
根据以上过程,还能够通过累加间隔时间T0,T1,T2,…,比较准确的估算出当前操作执行时间大小,即:Toper=T0+T1+T2,…。
需要说明的是,随着闪存的使用,操作的执行时间可能会发送变化,一般规律是逐渐增大,为提升状态查询命令的效率,可以根据查询当前操作的执行时间Toper,对该操作的执行时间表进行更新。提供一种基于滑动平均算法的更新步骤如下:
(1)记最近N次同类型操作的执行时间为:Toper1,Toper2,…,ToperN
(2)计算最近N次同类型操作的平均执行时间为:
Toper_new=(Toper1+Toper2+…+ToperN)/N。
(3)计算该平均执行时间与该操作的典型执行时间Ttyp的差值为:t=Toper_new-Ttyp
(4)更新该操作的执行时间表,记新的时间为:
Tmin_new=Tmin+t;Ttyp_new=Ttyp+t;Tmax_new=Tmax+t。
需要说明的是,本申请提供了一种闪存状态查询方法,具备如下效果:
通过闪存控制器硬件进行状态查询并判断闪存操作的结果,降低中央处理器的开销;且命令发送的时间间隔,停止条件均可配置,保证命令查询流程的闪存兼容性;
结合R/B#引脚状态和状态查询命令,在R/B#引脚状态已经Ready后再发送一次状态查询命令,降低命令发送的次数;
支持基于不同闪存的操作类型,设定不同的第一个状态查询命令的发送时间点,以及命令重发的时间间隔;
根据闪存操作类型的实际执行时间,采样滑动平均方法,动态更新闪存操作的执行时间范围,进一步优化查询命令发送的间隔时间,能够减少状态查询命令产生的总线开销。
可以理解的是,本申请还提供了一种闪存控制器,用于执行如上述实施例的闪存状态查询方法,闪存控制器包括:
缓存100,缓存100存储有程序;
总线与寄存器模块110,总线与寄存器模块110用于设置闪存操作状态查询请求;
总线时序模块120,总线时序模块120用于在不同接口时序下发送闪存操作状态查询请求,以及接收操作成功或操作失败的状态值;
第一处理器130,第一处理器130用于执行程序,以通过总线与寄存器模块110设置闪存操作状态查询请求,并通过总线时序模块120发送闪存操作状态查询请求至对应的闪存;
操作状态查询模块140,操作状态查询模块140用于进行闪存的操作状态查询,以进行状态判断;
引脚检测模块150,引脚检测模块150用于获取R/B#引脚的状态。
下面参照图4描述根据本申请实施例的闪存状态查询系统。
可以理解的是,如图4所示,闪存状态查询系统,包括:
至少一个存储器200;
至少一个第二处理器300;
至少一个程序;
程序被存储在存储器200中,第二处理器300执行至少一个程序以实现上述的闪存状态查询方法。图4以一个第二处理器300为例。
第二处理器300和存储器200可以通过总线或其他方式连接,图4以通过总线连接为例。
存储器200作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及信号,如本申请实施例中的闪存状态查询系统对应的程序指令/信号。第二处理器300通过运行存储在存储器200中的非暂态软件程序、指令以及信号,从而执行各种功能应用以及数据处理,即实现上述方法实施例的闪存状态查询方法。
存储器200可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储上述闪存状态查询方法的相关数据等。此外,存储器200可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器200可选包括相对于第二处理器300远程设置的存储器,这些远程存储器可以通过网络连接至闪存状态查询系统。上述网络的实例包括但不限于物联网、软件定义网络、传感器网络、互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个信号存储在存储器200中,当被一个或者多个第二处理器300执行时,执行上述任意方法实施例中的闪存状态查询方法。例如,执行以上描述的图2中的方法。
下面参照图4描述根据本申请实施例的计算机可读存储介质。
如图4所示,计算机可读存储介质存储有计算机可执行指令,该计算机可执行指令被一个或多个第二处理器300执行,例如,被图4中的一个第二处理器300执行,可使得上述一个或多个第二处理器300执行上述方法实施例中的闪存状态查询方法。例如,执行以上描述的图2中的方法。
以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
通过以上的实施方式的描述,本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统可以被实施为软件、固件、硬件及其适当的组合。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质和通信介质。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读信号、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。上面结合附图对本申请实施例作了详细说明,但是本申请不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本申请宗旨的前提下作出各种变化。此外,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。
Claims (9)
1.闪存状态查询方法,其特征在于,应用于闪存控制器,所述闪存控制器包括:
缓存;
第一处理器;
总线与寄存器模块;
操作状态查询模块;
总线时序模块;
所述闪存状态查询方法包括:
进行初始化配置;
根据初始化配置后得到的状态查询命令发送策略,通过所述操作状态查询模块判断是否满足闪存操作状态查询请求的条件;
当满足闪存操作状态查询请求的条件,所述操作状态查询模块通过中断方式向所述第一处理器发送判断结果;
根据所述第一处理器获取的所述判断结果,通过所述第一处理器执行所述缓存中的程序,以通过所述总线与寄存器模块设置闪存操作状态查询请求,并通过所述总线时序模块发送闪存操作状态查询请求至对应的闪存;
根据所述总线时序模块接收所述闪存发送的状态值;
根据初始化配置后得到的停止策略,通过所述操作状态查询模块判断所述状态值是否满足停止策略中的第一停止条件;其中,当所述操作状态查询模块查询得到准备标志位有效,则满足停止策略中的第一停止条件;
当满足停止策略中的第一停止条件,通过所述操作状态查询模块判断所述闪存是否完成预设的操作命令;其中,当所述操作状态查询模块查询得到操作成功标志位有效,则判定所述闪存是完成预设的操作命令,预设的操作命令指所述闪存中已经接收到的操作命令;
当完成预设的操作命令,所述操作状态查询模块通过中断方式向所述第一处理器发送完成操作命令后得到的操作成功的结果。
2.根据权利要求1所述的闪存状态查询方法,其特征在于,所述进行初始化配置,包括:
配置所述第一处理器执行程序设置闪存操作状态查询请求中状态查询命令的内容,其中,所述状态查询命令包括命令码、命令发送地址、接收状态数据长度;
配置所述第一处理器执行程序设置状态查询命令的时间参数,其中,所述时间参数包括初次命令发送时间点、重新发送状态查询命令的时间间隔;
配置所述停止策略;
配置操作成功判定条件,其中,所述操作成功判定条件为所述操作状态查询模块查询得到操作成功标志位有效。
3.根据权利要求1所述的闪存状态查询方法,其特征在于,所述闪存控制器还包括引脚检测模块;
所述通过所述操作状态查询模块判断是否满足闪存操作状态查询请求的条件,包括:
通过所述引脚检测模块获取R/B#引脚的状态,并通过所述操作状态查询模块判断R/B#引脚的状态是否满足闪存操作状态查询请求的条件。
4.根据权利要求3所述的闪存状态查询方法,其特征在于,在所述根据所述第一处理器获取的所述判断结果,通过所述第一处理器执行所述缓存中的程序之前,所述闪存状态查询方法还包括:
当未满足闪存操作状态查询请求的条件,等待R/B#引脚拉至高电平;
当等待时间满足停止策略中的第三停止条件,所述操作状态查询模块通过中断方式向所述第一处理器发送操作失败的结果,其中,所述第三停止条件为等待R/B#引脚拉至高电平的时间超过第一时间阀值。
5.根据权利要求4所述的闪存状态查询方法,其特征在于,所述闪存状态查询方法还包括:
当等待时间未满足停止策略中的第三停止条件,重新发送状态查询命令。
6.根据权利要求1所述的闪存状态查询方法,其特征在于,R/B#引脚的状态包括低电平、高电平;
所述当满足闪存操作状态查询请求的条件,包括:
当R/B#引脚的状态为高电平,且符合状态查询命令的初次命令发送时间点,则满足闪存操作状态查询请求的条件;
或,
当符合状态查询命令的初次命令发送时间点,则满足闪存操作状态查询请求的条件。
7.根据权利要求1所述的闪存状态查询方法,其特征在于,所述闪存状态查询方法还包括:
当未满足停止策略中的第一停止条件,判断是否满足停止策略中的第二停止条件,其中,所述第二停止条件为重复发送状态查询命令的次数超过次数阈值或重复发送状态查询命令的时间超过第二时间阈值;
当满足停止策略中的第二停止条件的其中之一,所述操作状态查询模块通过中断方式向所述第一处理器发送操作失败的结果;
或,
当未满足停止策略中的所有第二停止条件,判断是否满足重新发送状态查询命令的时间间隔;
当满足重新发送状态查询命令的时间间隔,则重新发送状态查询命令。
8.根据权利要求2所述的闪存状态查询方法,其特征在于,其特征在于,所述闪存状态查询方法还包括:
通过预设的闪存操作执行时间表中的操作类型、第一执行时间设定初次命令发送时间点;
通过预设的闪存操作执行时间表中的操作类型、第一执行时间设定重新发送状态查询命令的时间间隔;
所述闪存操作执行时间表通过以下步骤进行更新:
记录临近时间内同一操作类型的多个第二执行时间;
通过多个第二执行时间计算同一操作类型的平均执行时间;
计算所述平均执行时间与该操作类型的典型执行时间的差值;
将闪存操作执行时间表中的第一执行时间加上所述差值,以更新该操作类型的执行时间表。
9.闪存控制器,其特征在于,用于执行如权利要求1至8任意一项所述的闪存状态查询方法,所述闪存控制器包括:
缓存,所述缓存存储有程序;
总线与寄存器模块,所述总线与寄存器模块用于设置闪存操作状态查询请求;
总线时序模块,所述总线时序模块用于在不同接口时序下发送闪存操作状态查询请求,以及接收操作成功或操作失败的状态值;
第一处理器,所述第一处理器用于执行所述程序,以通过所述总线与寄存器模块设置闪存操作状态查询请求,并通过所述总线时序模块发送闪存操作状态查询请求至对应的闪存;
操作状态查询模块,所述操作状态查询模块用于进行闪存的操作状态查询,以进行状态判断;
引脚检测模块,所述引脚检测模块用于获取R/B#引脚的状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310768976.2A CN116991310B (zh) | 2023-06-27 | 2023-06-27 | 闪存状态查询方法及闪存控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310768976.2A CN116991310B (zh) | 2023-06-27 | 2023-06-27 | 闪存状态查询方法及闪存控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991310A CN116991310A (zh) | 2023-11-03 |
CN116991310B true CN116991310B (zh) | 2024-05-07 |
Family
ID=88532987
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310768976.2A Active CN116991310B (zh) | 2023-06-27 | 2023-06-27 | 闪存状态查询方法及闪存控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991310B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799391A (zh) * | 2012-06-14 | 2012-11-28 | 记忆科技(深圳)有限公司 | 一种闪存控制器及其控制方法、闪存存储设备 |
CN106502581A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 闪存控制器、闪存控制方法和固态硬盘 |
CN111796771A (zh) * | 2020-06-30 | 2020-10-20 | 深圳大普微电子科技有限公司 | 闪存控制器、固态硬盘及其控制器、闪存命令管理方法 |
CN113157205A (zh) * | 2021-02-26 | 2021-07-23 | 西安微电子技术研究所 | 一种nand阵列的控制方法、控制器、电子设备及存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7657699B2 (en) * | 2005-11-09 | 2010-02-02 | Sandisk Il Ltd. | Device and method for monitoring operation of a flash memory |
-
2023
- 2023-06-27 CN CN202310768976.2A patent/CN116991310B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102799391A (zh) * | 2012-06-14 | 2012-11-28 | 记忆科技(深圳)有限公司 | 一种闪存控制器及其控制方法、闪存存储设备 |
CN106502581A (zh) * | 2016-09-30 | 2017-03-15 | 华为技术有限公司 | 闪存控制器、闪存控制方法和固态硬盘 |
CN111796771A (zh) * | 2020-06-30 | 2020-10-20 | 深圳大普微电子科技有限公司 | 闪存控制器、固态硬盘及其控制器、闪存命令管理方法 |
CN113157205A (zh) * | 2021-02-26 | 2021-07-23 | 西安微电子技术研究所 | 一种nand阵列的控制方法、控制器、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116991310A (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111327402B (zh) | 重传数据的方法、装置和系统 | |
US7069373B2 (en) | USB endpoint controller flexible memory management | |
CN108599904B (zh) | 一种数据传输方法及装置 | |
CN101207575B (zh) | 用于对文件下载进行管理的系统和方法 | |
US20130326099A1 (en) | Method for automatically allocating addresses to similar bus users | |
JPH02501020A (ja) | パケットスイッチング回路網におけるデータ伝送方法 | |
KR910007030B1 (ko) | 데이터처리 부시스템사이에서의 중단신호교환에 응답하는 장치 및 그 방법 | |
CN107707619B (zh) | 分布式存储方法及装置 | |
CN116991310B (zh) | 闪存状态查询方法及闪存控制器 | |
CN111819821A (zh) | 网络拥塞管理 | |
CN113438781B (zh) | 控制方法、控制装置及照明系统 | |
CN112291101B (zh) | 通讯节点、上位机对下位机的通信分帧优化方法 | |
JP2011103581A (ja) | 通信システム及び通信装置 | |
CN116260674A (zh) | 车辆数据传输方法、装置、车辆及计算机可读存储介质 | |
US6401146B1 (en) | Device and method for controlling PCI ethernet | |
CN116679878B (zh) | 闪存数据处理方法、装置、电子设备及可读存储介质 | |
CN111970136B (zh) | 固件升级方法、LoRa网关、LoRa系统以及计算机可读存储介质 | |
US9503348B2 (en) | Apparatus and method of control point for device discovery | |
CN118860935A (zh) | 数据传输方法、装置、计算机设备及存储介质 | |
US11489880B2 (en) | Controller to determine a transmission right and control a timing of communication between nodes | |
CN117938980B (zh) | 应用于内容分发网络的数据传输方法、装置、设备及介质 | |
CN108093386B (zh) | 蓝牙控制器及其处理连接事件的方法、蓝牙设备 | |
CN113382094B (zh) | 一种模块地址确定方法及装置、电源模块与通信网络 | |
WO2023138025A1 (zh) | 信息检测方法、设备和存储介质 | |
CN117785289B (zh) | 保留站电路的控制方法、装置、保留站电路及存储介质 |
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 |