CN105912307B - 一种Flash控制器数据处理方法及装置 - Google Patents
一种Flash控制器数据处理方法及装置 Download PDFInfo
- Publication number
- CN105912307B CN105912307B CN201610270491.0A CN201610270491A CN105912307B CN 105912307 B CN105912307 B CN 105912307B CN 201610270491 A CN201610270491 A CN 201610270491A CN 105912307 B CN105912307 B CN 105912307B
- Authority
- CN
- China
- Prior art keywords
- flash
- completion
- request command
- queue
- command queue
- 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
- 238000012545 processing Methods 0.000 title claims abstract description 37
- 241001269238 Data Species 0.000 title claims abstract description 33
- 238000003672 processing method Methods 0.000 title claims abstract description 22
- 230000005540 biological transmission Effects 0.000 claims description 6
- 238000000034 method Methods 0.000 abstract description 12
- 239000002245 particle Substances 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 10
- 238000012937 correction Methods 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 230000004044 response Effects 0.000 description 5
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 5
- 238000011161 development Methods 0.000 description 4
- 235000013399 edible fruits Nutrition 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000003245 working effect Effects 0.000 description 1
Classifications
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3867—Concurrent instruction execution, e.g. pipeline, look ahead using instruction pipelines
-
- 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/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]
-
- 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline, look ahead
- G06F9/3885—Concurrent instruction execution, e.g. pipeline, look ahead using a plurality of independent parallel functional units
Abstract
本发明公开了一种Flash控制器数据处理方法及装置,该方法包括:接收信息控制管理模块发送的请求命令队列信息;对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;判断所述当前处理通道是否处于闲置状态;如果是,则通过所述当前处理通道采用多级流水方式执行所述待处理操作;操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块。本发明所提供的Flash控制器数据处理方法及装置,将Flash控制器划分为多个独立的数据通道,利用流水线控制方式,让每个通道并行工作,从而提高SSD主控制器访问Flash颗粒接口的数据带宽。
Description
技术领域
本发明涉及Flash控制器技术领域,特别是涉及一种Flash控制器数据处理方法及装置。
背景技术
随着计算机系统的发展,云数据的增长,大数据应用等互联网技术、新一代信息技术的快速发展,硬盘的容量虽有很大提升,但访问速度一直没有很大突破,从而阻碍了信息化的发展。随着半导体技术的快速发展,NAND Flash作为存储介质已经应用到SSD(SolidState Drive,SSD)存储芯片阵列中。在目前互联网市场中,固态硬盘有取代传统机械硬盘的趋势。
SSD(固态硬盘)主要采用NAND Flash作为存储介质,SSD主控制器主要对NANDFlash介质进行读、写、擦除等操作。Flash控制器访问Flash颗粒的性能将直接影响SSD(固态硬盘)的性能。如何进一步提高SSD控制器的性能是本领域技术人员亟待解决的技术问题。
发明内容
本发明的目的是提供一种Flash控制器数据处理方法及装置,目的在于将Flash控制器划分为多个独立的数据通道,利用流水线控制方式,让每个通道并行工作,从而提高SSD主控制器访问Flash颗粒接口的数据带宽。
为解决上述技术问题,本发明提供一种Flash控制器数据处理方法,包括:
接收信息控制管理模块发送的请求命令队列信息;
对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
判断所述当前处理通道是否处于闲置状态;
如果是,则通过所述当前处理通道采用多级流水方式执行所述待处理操作;
操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块。
可选地,在所述将执行结果作为完成队列信息发送至所述信息控制管理模块之后还包括:
所述信息控制管理模块接收所述完成队列信息后,释放与所述完成队列信息相关联的请求命令队列。
可选地,所述操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块包括:
若多个请求命令队列与一个完成队列相关联,当前命令队列完成后不发送当前的完成队列信息,释放当前请求命令队列,并继续执行下一个请求命令队列,直到相关联的所述请求命令队列完成时,将所有请求命令队列的完成执行结果作为完成队列信息发送至所述信息控制管理模块。
可选地,所述请求命令队列信息包括命令队列ID号、Flash操作、Flash地址信息、每次操作的数据量以及Flash通道信息。
可选地,所述操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块包括:
操作执行完成后,读取Flash状态位来判断操作是否正确;
将执行结果打包为完成队列信息发送至所述信息控制管理模块,所述完成队列信息包括:当前请求命令队列的ID、当前队列完成请求以及执行结果。
本发明还提供了一种Flash控制器数据处理装置,包括:
接收模块,用于接收信息控制管理模块发送的请求命令队列信息;
解析模块,用于对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
判断模块,用于判断所述当前处理通道是否处于闲置状态;
执行模块,用于当判定所述当前处理通道处于闲置状态时,通过所述当前处理通道采用多级流水方式执行所述待处理操作;
发送模块,用于操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块。
可选地,还包括:
释放模块,用于在所述将执行结果作为完成队列信息发送至所述信息控制管理模块之后,所述信息控制管理模块接收所述完成队列信息后,释放与所述完成队列信息相关联的请求命令队列。
可选地,所述发送模块具体用于:
若多个请求命令队列与一个完成队列相关联,当前命令队列完成后不发送当前的完成队列信息,释放当前请求命令队列,并继续执行下一个请求命令队列,直到相关联的所述请求命令队列完成时,将所有请求命令队列的完成执行结果作为完成队列信息发送至所述信息控制管理模块。
可选地,所述请求命令队列信息包括命令队列ID号、Flash操作、Flash地址信息、每次操作的数据量以及Flash通道信息。
可选地,所述发送模块包括:
判断单元,用于在操作执行完成后,读取Flash状态位来判断操作是否正确;
发送单元,用于将执行结果打包为完成队列信息发送至所述信息控制管理模块,所述完成队列信息包括:当前请求命令队列的ID、当前队列完成请求以及执行结果。
本发明所提供的Flash控制器数据处理方法及装置,通过接收信息控制管理模块发送的请求命令队列信息;对接收到的请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;判断当前处理通道是否处于闲置状态;如果是,则通过当前处理通道采用多级流水方式执行待处理操作;操作执行完成后,将执行结果作为完成队列信息发送至信息控制管理模块。本发明所提供的Flash控制器数据处理方法及装置,采用多个请求命令队列和多个完成队列来达到信息控制管理模块与Flash控制器进行控制信息通讯的目的,使复杂系统管理简单化,便于系统管理。同时,Flash控制器采用多级流水线操作来完成对NAND Flash存储阵列的控制,从而达到Flash通道之间并行工作。在信息管理上采用多请求命令队列和完成队列,在实际执行中单个通道采用多级流水执行,利用各个Flash通道之前并行工作来提升SSD控制器的性能。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明所提供的Flash控制器数据处理方法的一种具体实施方式的流程图;
图2为本发明所提供的Flash控制器数据处理方法的另一种具体实施方式的流程图;
图3为本发明实施例提供的Flash控制器数据处理装置的结构框图;
图4为本发明所提供的SSD控制器存储介质的示意图;
图5为本发明Flash控制器接收到的请求命令队列示意图;
图6为本发明Flash控制器发出完成队列示意图;
图7为本发明8通道Flash流水线操作示意图;
图8为本发明Flash控制器的命令队列处理流程图;
图9为本发明多个请求命令队列与一个完成队列相关联流程图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明所提供的Flash控制器数据处理方法的一种具体实施方式的流程图如图1所示,该方法包括:
步骤S101:接收信息控制管理模块发送的请求命令队列信息;
具体地,请求命令队列信息可以包括命令队列ID号、Flash操作、Flash地址信息、每次操作的数据量以及Flash通道信息,当然还可以包括其他信息,并不限于上述几种。
步骤S102:对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
步骤S103:判断所述当前处理通道是否处于闲置状态;
步骤S104:如果是,则通过所述当前处理通道采用多级流水方式执行所述待处理操作;
步骤S105:操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块。
本发明所提供的Flash控制器数据处理方法,通过接收信息控制管理模块发送的请求命令队列信息;对接收到的请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;判断当前处理通道是否处于闲置状态;如果是,则通过当前处理通道采用多级流水方式执行待处理操作;操作执行完成后,将执行结果作为完成队列信息发送至信息控制管理模块。本发明所提供的Flash控制器数据处理方法,采用多个请求命令队列和多个完成队列来达到信息控制管理模块与Flash控制器进行控制信息通讯的目的,使复杂系统管理简单化,便于系统管理。同时,Flash控制器采用多级流水线操作来完成对NAND Flash存储阵列的控制,从而达到Flash通道之间并行工作。在信息管理上采用多请求命令队列和完成队列,在实际执行中单个通道采用多级流水执行,利用各个Flash通道之前并行工作来提升SSD控制器的性能。
需要指出的是,本实施例中请求命令队列为一个固定大小的环形缓存区,由信息控制管理模块把请求发送给Flash控制器,同时把信息任务和Flash地址存放在请求命令队列中,由Flash控制器解析信息任务并按任务命令执行Flash操作。
命令完成队列也是一个固定大小的环形缓存区,存储每个已经完成的命令队列所对应的完成包,为请求命令队列发布完成状态,一个请求命令队列与一个完成队列相关联,也可以多个请求命令队列与一个完成队列相关联。
在上述实施例的基础上,本实施例还可以进一步包括:
所述信息控制管理模块接收所述完成队列信息后,释放与所述完成队列信息相关联的请求命令队列。
释放的过程可以具体为:
若多个请求命令队列与一个完成队列相关联,当前命令队列完成后不发送当前的完成队列信息,释放当前请求命令队列,并继续执行下一个请求命令队列,直到相关联的所述请求命令队列完成时,将所有请求命令队列的完成执行结果作为完成队列信息发送至所述信息控制管理模块。
如果是一个请求命令队列与一个完成队列相关联时,当信息控制管理模块接收到完成队列时必须释放当前请求命令队列,并按完成队列信息的执行状态进行正确处理;如果多个请求命令队列与一个完成队列相关联时,当前队列完成时不用发送完成队列给信息控制管理模块就可以释放当前请求命令队列,紧接着执行下一个请求命令队列,这样不用信息控制管理模块来处理之后释放请求命令队列,能够加速处理请求命令队列的速度,从而进一步加速了SSD主控制器对Flash存储阵列的访问。
本发明所提供的Flash控制器数据处理方法的另一种具体实施方式的流程图如图2所示,该方法包括:
步骤S201:接收信息控制管理模块发送的请求命令队列信息;
步骤S202:对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
步骤S203:判断所述当前处理通道是否处于闲置状态;
步骤S204:如果是,则通过所述当前处理通道采用多级流水方式执行所述待处理操作;
步骤S205:操作执行完成后,读取Flash状态位来判断操作是否正确;
步骤S206:将执行结果打包为完成队列信息发送至所述信息控制管理模块,所述完成队列信息包括:当前请求命令队列的ID、当前队列完成请求以及执行结果。
本发明方法命令发送和接收基于多队列传递方式,使得系统管理更加方便,降低了系统控制的复杂度。此外,本发明基于流水线操作和多通道并行存储方式,提高了存储操作的并行度,从而提高了SSD的系统性能。
下面对本发明实施例所提供的Flash控制器数据处理装置进行介绍,下文描述的Flash控制器数据处理装置与上文描述的Flash控制器数据处理方法可相互对应参照。
图3为本发明实施例提供的Flash控制器数据处理装置的结构框图,参照图3Flash控制器数据处理装置可以包括:
接收模块100,用于接收信息控制管理模块发送的请求命令队列信息;
解析模块200,用于对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
判断模块300,用于判断所述当前处理通道是否处于闲置状态;
执行模块400,用于当判定所述当前处理通道处于闲置状态时,通过所述当前处理通道采用多级流水方式执行所述待处理操作;
发送模块500,用于操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块。
作为一种具体实施方式,本发明所提供的Flash控制器数据处理装置还可以进一步包括:
释放模块,用于在所述将执行结果作为完成队列信息发送至所述信息控制管理模块之后,所述信息控制管理模块接收所述完成队列信息后,释放与所述完成队列信息相关联的请求命令队列。
其中,若多个请求命令队列与一个完成队列相关联,当前命令队列完成后不发送当前的完成队列信息,释放当前请求命令队列,并继续执行下一个请求命令队列,直到相关联的所述请求命令队列完成时,将所有请求命令队列的完成执行结果作为完成队列信息发送至所述信息控制管理模块。
上述实施例中,本发明所提供的Flash控制器数据处理装置的请求命令队列信息包括命令队列ID号、Flash操作、Flash地址信息、每次操作的数据量以及Flash通道信息。
作为一种具体实施方式,本发明所提供的Flash控制器数据处理装置中,发送模块500可以具体包括:
判断单元,用于在操作执行完成后,读取Flash状态位来判断操作是否正确;
发送单元,用于将执行结果打包为完成队列信息发送至所述信息控制管理模块,所述完成队列信息包括:当前请求命令队列的ID、当前队列完成请求以及执行结果。
本发明所提供的Flash控制器数据处理装置,采用多个请求命令队列和多个完成队列来达到信息控制管理模块与Flash控制器进行控制信息通讯的目的,使复杂系统管理简单化,便于系统管理。同时,Flash控制器采用多级流水线操作来完成对NAND Flash存储阵列的控制,从而达到Flash通道之间并行工作。在信息管理上采用多请求命令队列和完成队列,在实际执行中单个通道采用多级流水执行,利用各个Flash通道之前并行工作来提升SSD控制器的性能。
如图4本发明所提供的SSD控制器存储介质的示意图所示,下面对本发明所提供的SSD控制器存储介质进行进一步详细阐述。存储介质可以具体由N(N是2x,x为整数)个通道所组成,每个通道独立完成读、写、擦除等操作,每一个通道由M个Flash Target所组成,Flash Target之间的数据总线复用、控制总线复用,由片选来控制各自的Flash Target操作。本实施例中以N为8,M为8为例,可以根据实际情况选用其他数字,这均不影响本发明的实现。
本发明采用多命令队列方式控制Flash控制器,如图5所示,由信息控制管理模块发出命令队列信息给Flash控制器,队列信息包含:命令队列ID号;读、写、擦除、Copy-Back等Flash操作;Flash地址信息;每次操作的数据量,以4Kbyte为增量;以及Flash通道,为在N个通道中指定的某一个通道。
Flash控制器接收请求命令队列信息之后进行命令解析,同时判断当前所对应的Flash通道是否处于忙状态,如果处于闲置状态,对当前通道的Flash Target执行该操作。该操作执行完毕后,读取Flash状态位来判断其操作是否正确,并把其操作的执行结果打包成完成队列信息发送给信息控制管理模块,如图6所示。其完成队列信息包含:当前请求命令队列的ID、当前队列完成情况以及执行结果。
当信息控制管理模块接收到完成队列信息时,释放当前队列,并按当前完成队列信息来判断当前执行情况来做适当处理。
用流水线的示意图来说明其加速性能,如图7所示,假如一个8通道的Flashtarget,队列深度为8的单通道flash执行操作分为3级流水,从图7不难看出,在同一个时间内有8个Flash通道同时在工作。以此类推,假如Flash通道数N为64,同样得出,在同一个时间内有64个Flash通道在同时并行工作。在流水示意图来看数据读或者写Flash的性能,如果通道数为8,同一时刻读或者写8个Flash页面操作,其性能提升8倍;如果通道数N为64,同一时刻读或者写64个Flash页面操作,其性能提升64倍。由此推算,随着通道数N的增加,其性能也成N倍数提升,但是设计SSD主控制器上复杂性也随着提升。
Flash控制器的命令队列处理流程图如图8所示,示意图列举了3种Flash操作。
第一种是写Flash操作:
在信息控制管理模块发出请求写Flash操作时,Flash控制器接收写请求,判断当前Flash通道是否闲置或者即将闲置,如果当前通道不忙或者即将闲置的时候,响应写应答信号,Flash控制器接收命令队列,下一时钟周期解析当前命令队列的信息,按命令指导执行,读取即将写入Flash页面的数据,对其数据进行ECC编码,产生ECC校验信息,把原数据写入Flash数据区,ECC产生的校验位信息写入Spare区。当前页面写操作完毕时,读取当前Flash写状态寄存器值判断是否写正确,如果写正确标记为1,否则为0。把标记位值与当前命令队列ID打包成完成队列信息发送给信息控制管理模块,信息控制管理模块接收完成队列信息后释放当前请求命令队列,并对完成队列进行处理,判断当前操作是否执行成功,如果写Flash不成功需要采取适当的措施重写,如果写Flash成功,表示此操作已经结束。
第二种是读Flash操作:
在信息控制管理模块发出请求读Flash操作时,Flash控制器接收读请求,在当前通道闲置或者即将闲置的时候,响应读应答信号,Flash控制器接收命令队列,下一时钟周期解析命令队列,按当前任务命令指导,读取当前Flash页面数据和Spare区的信息,并对其当前页面的数据与Spare区的信息进行ECC算法解码来发现原数据是否有错误存在,通过算法对错误的位进行纠错;如果数据位错误数量超出ECC纠错算法范围外,Flash控制器将采用2种情况来进行处理:
一种是直接确定原数据有错误;
另一种是进入Rety模式,再次读取Flash页面数据和Spare区域信息,再次进行ECC纠错算法进行位数据纠错,如有位错误数超出纠错范围外,再次进入Rety模式,以此循环,当循环次数超出预设定次数时,原数据位错误数依然超出纠错范围外,表示当前页面数据有错误,原数据无法恢复。
如果当前读操作flash页面数据位错误没有超出纠错范围外,通过纠错算法能把错误位正常纠正,标志为0,否则为1;并把数据出错标志位信息与当作操作的命令队列ID打包成完成队列信息发送给信息控制管理模块,并释放当前请求命令队列,信息控制管理模块接收完成队列信息并进行正确处理。
第三种是对Flash进行块擦除操作:
当SSD系统要对Flash块进行擦除操作时,由信息控制管理模块向Flash控制器发出请求命令队列,Flash控制器接收请求,在当前Flash通道闲置或者即将闲置时,响应块请求应答信号,Flash控制器接收命令队列,下一时钟周期解析命令队列,按命令指示对Flash进行块擦除。当块擦除操作擦除完毕时,读取Flash状态寄存器查看擦除操作是否成功,如果擦除成功标志位0,否则为1;并把其标志位信息与当前队列ID打包成完成队列信息发送给信息控制管理模块,并释放当前请求命令队列,信息控制管理模块接收完成队列信息并进行正确处理。
如图9八个请求命令队列与一个完成队列相关联流程图所示,当第一个请求命令队列进入Flash控制器后,当前命令队列处理完毕时不用发送当前的完成队列给信息控制管理模块就能释放当前请求命令队列,同时开启接收第二个请求命令队列。以此类推,直到第八个请求命令队列完成时,再把所有的请求命令队列ID号和每一个队列完成执行结果标志打包成一个完成队列发送给信息控制管理模块进行批处理,由信息控制管理模块来分析判断当前所有请求命令队列执行情况做正确的处理。这样设置的好处是加快了系统对命令队列的发送,加速了Flash控制器对命令队列的响应、执行,从而进一步提升了SSD性能。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的Flash控制器数据处理方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
Claims (10)
1.一种Flash控制器数据处理方法,其特征在于,包括:
接收信息控制管理模块发送的请求命令队列信息;
对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
判断所述当前处理通道是否处于闲置状态;
如果是,则通过所述当前处理通道采用多级流水方式执行所述待处理操作;
操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块;
其中,请求命令队列为一个固定大小的环形缓存区,由所述信息控制管理模块把请求发送给Flash控制器,同时把信息任务和Flash地址存放在请求命令队列中,由所述Flash控制器解析信息任务并按任务命令执行Flash操作;
命令完成队列是一个固定大小的环形缓存区,存储每个已经完成的命令队列所对应的完成包,为请求命令队列发布完成状态,一个请求命令队列与一个完成队列相关联,或者多个请求命令队列与一个完成队列相关联。
2.如权利要求1所述的Flash控制器数据处理方法,其特征在于,在所述将执行结果作为完成队列信息发送至所述信息控制管理模块之后还包括:
所述信息控制管理模块接收所述完成队列信息后,释放与所述完成队列信息相关联的请求命令队列。
3.如权利要求1或2所述的Flash控制器数据处理方法,其特征在于,所述操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块包括:
若多个请求命令队列与一个完成队列相关联,当前命令队列完成后不发送当前的完成队列信息,释放当前请求命令队列,并继续执行下一个请求命令队列,直到相关联的所述请求命令队列完成时,将所有请求命令队列的完成执行结果作为完成队列信息发送至所述信息控制管理模块。
4.如权利要求3所述的Flash控制器数据处理方法,其特征在于,所述请求命令队列信息包括命令队列ID号、Flash操作、Flash地址信息、每次操作的数据量以及Flash通道信息。
5.如权利要求4所述的Flash控制器数据处理方法,其特征在于,所述操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块包括:
操作执行完成后,读取Flash状态位来判断操作是否正确;
将执行结果打包为完成队列信息发送至所述信息控制管理模块,所述完成队列信息包括:当前请求命令队列的ID、当前队列完成请求以及执行结果。
6.一种Flash控制器数据处理装置,其特征在于,包括:
接收模块,用于接收信息控制管理模块发送的请求命令队列信息;
解析模块,用于对接收到的所述请求命令队列信息进行解析,获取待处理操作,并从控制器存储介质的多个可独立并行处理的通道中确定当前处理通道;
判断模块,用于判断所述当前处理通道是否处于闲置状态;
执行模块,用于当判定所述当前处理通道处于闲置状态时,通过所述当前处理通道采用多级流水方式执行所述待处理操作;
发送模块,用于操作执行完成后,将执行结果作为完成队列信息发送至所述信息控制管理模块;
其中,请求命令队列为一个固定大小的环形缓存区,由所述信息控制管理模块把请求发送给Flash控制器,同时把信息任务和Flash地址存放在请求命令队列中,由所述Flash控制器解析信息任务并按任务命令执行Flash操作;
命令完成队列是一个固定大小的环形缓存区,存储每个已经完成的命令队列所对应的完成包,为请求命令队列发布完成状态,一个请求命令队列与一个完成队列相关联,或者多个请求命令队列与一个完成队列相关联。
7.如权利要求6所述的Flash控制器数据处理装置,其特征在于,还包括:
释放模块,用于在所述将执行结果作为完成队列信息发送至所述信息控制管理模块之后,所述信息控制管理模块接收所述完成队列信息后,释放与所述完成队列信息相关联的请求命令队列。
8.如权利要求6或7所述的Flash控制器数据处理装置,其特征在于,所述发送模块具体用于:
若多个请求命令队列与一个完成队列相关联,当前命令队列完成后不发送当前的完成队列信息,释放当前请求命令队列,并继续执行下一个请求命令队列,直到相关联的所述请求命令队列完成时,将所有请求命令队列的完成执行结果作为完成队列信息发送至所述信息控制管理模块。
9.如权利要求8所述的Flash控制器数据处理装置,其特征在于,所述请求命令队列信息包括命令队列ID号、Flash操作、Flash地址信息、每次操作的数据量以及Flash通道信息。
10.如权利要求9所述的Flash控制器数据处理装置,其特征在于,所述发送模块包括:
判断单元,用于在操作执行完成后,读取Flash状态位来判断操作是否正确;
发送单元,用于将执行结果打包为完成队列信息发送至所述信息控制管理模块,所述完成队列信息包括:当前请求命令队列的ID、当前队列完成请求以及执行结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610270491.0A CN105912307B (zh) | 2016-04-27 | 2016-04-27 | 一种Flash控制器数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610270491.0A CN105912307B (zh) | 2016-04-27 | 2016-04-27 | 一种Flash控制器数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105912307A CN105912307A (zh) | 2016-08-31 |
CN105912307B true CN105912307B (zh) | 2018-09-07 |
Family
ID=56752065
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610270491.0A Active CN105912307B (zh) | 2016-04-27 | 2016-04-27 | 一种Flash控制器数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105912307B (zh) |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106528465B (zh) * | 2016-11-10 | 2019-08-02 | 郑州云海信息技术有限公司 | 一种Nand Flash控制器及方法 |
KR20190032809A (ko) | 2017-09-20 | 2019-03-28 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것의 동작 방법 |
CN108563399B (zh) * | 2018-03-13 | 2020-02-14 | 中山市江波龙电子有限公司 | 存储设备的数据读取方法、装置、终端设备和存储介质 |
CN110858127B (zh) * | 2018-08-22 | 2023-09-12 | 慧荣科技股份有限公司 | 数据存储装置 |
CN109683823B (zh) * | 2018-12-20 | 2022-02-11 | 湖南国科微电子股份有限公司 | 一种管理存储器多并发请求的方法及装置 |
CN110007876A (zh) * | 2019-04-15 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种固态硬盘数据存储方法、装置、设备及介质 |
CN110764823B (zh) * | 2019-09-02 | 2021-11-16 | 芯创智(北京)微电子有限公司 | 一种指令流水线的回路控制系统及方法 |
CN112130762B (zh) * | 2020-09-07 | 2024-01-26 | 上海威固信息技术股份有限公司 | 一种固态硬盘数据存储与操作方法 |
CN112817533A (zh) * | 2021-01-29 | 2021-05-18 | 深圳忆联信息系统有限公司 | Ssd管理方法、装置计算机设备及存储介质 |
CN113268204B (zh) * | 2021-05-26 | 2022-10-18 | 绿芯半导体(厦门)有限公司 | 一种提高ssd多通道并发数据读写效率的方法 |
CN114721978B (zh) * | 2022-03-04 | 2023-08-25 | 成都储迅科技有限责任公司 | 一种加快Nand Flash控制命令执行速度的方法及系统 |
CN117215480A (zh) * | 2023-06-25 | 2023-12-12 | 深圳市晶存科技有限公司 | NAND Flash的数据处理方法、装置、电子设备及存储介质 |
CN117055820B (zh) * | 2023-10-09 | 2024-02-09 | 苏州元脑智能科技有限公司 | 一种固态硬盘的命令处理方法、固态硬盘和存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046725A (zh) * | 2007-03-23 | 2007-10-03 | 忆正存储技术(深圳)有限公司 | 闪存控制器 |
CN101082891A (zh) * | 2007-05-10 | 2007-12-05 | 忆正存储技术(深圳)有限公司 | 并行闪存控制器 |
CN101498994B (zh) * | 2009-02-16 | 2011-04-20 | 华中科技大学 | 一种固态硬盘控制器 |
CN102541678A (zh) * | 2011-12-30 | 2012-07-04 | 中国人民解放军国防科学技术大学 | 多通道与非型快闪并行存储控制器 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
CN103984646A (zh) * | 2014-06-05 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 一种基于pcie数据传输的存储系统设计方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7949856B2 (en) * | 2004-03-31 | 2011-05-24 | Icera Inc. | Method and apparatus for separate control processing and data path processing in a dual path processor with a shared load/store unit |
WO2009039222A2 (en) * | 2007-09-19 | 2009-03-26 | Marvell World Trade Ltd. | Flexible sequencer design architecture for solid state memory controller |
WO2011021906A2 (en) * | 2009-08-21 | 2011-02-24 | Samsung Electronics Co., Ltd. | Method and apparatus for requesting data, and method and apparatus for obtaining data |
CN101673192B (zh) * | 2009-10-26 | 2011-09-14 | 北京云快线软件服务有限公司 | 时序化的数据处理方法、装置及系统 |
JP5733680B2 (ja) * | 2011-01-20 | 2015-06-10 | 日本電気株式会社 | コマンド実行装置、コマンド実行システム、コマンド実行方法およびコマンド実行プログラム |
-
2016
- 2016-04-27 CN CN201610270491.0A patent/CN105912307B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046725A (zh) * | 2007-03-23 | 2007-10-03 | 忆正存储技术(深圳)有限公司 | 闪存控制器 |
CN101082891A (zh) * | 2007-05-10 | 2007-12-05 | 忆正存储技术(深圳)有限公司 | 并行闪存控制器 |
CN101498994B (zh) * | 2009-02-16 | 2011-04-20 | 华中科技大学 | 一种固态硬盘控制器 |
CN102541678A (zh) * | 2011-12-30 | 2012-07-04 | 中国人民解放军国防科学技术大学 | 多通道与非型快闪并行存储控制器 |
CN103778013A (zh) * | 2014-01-24 | 2014-05-07 | 中国科学院空间应用工程与技术中心 | 一种多通道Nand Flash控制器及其控制方法 |
CN103984646A (zh) * | 2014-06-05 | 2014-08-13 | 浪潮电子信息产业股份有限公司 | 一种基于pcie数据传输的存储系统设计方法 |
Also Published As
Publication number | Publication date |
---|---|
CN105912307A (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105912307B (zh) | 一种Flash控制器数据处理方法及装置 | |
CN108958907B (zh) | 用于数据存储系统的上下文感知动态命令调度 | |
US10540115B2 (en) | Controller adaptation to memory program suspend-resume | |
EP3314612B1 (en) | Method and apparatus for reducing read latency for a block erasable non-volatile memory | |
US8700834B2 (en) | Systems and methods for an enhanced controller architecture in data storage systems | |
EP2377028B1 (en) | Modifying commands | |
US8296505B2 (en) | System and method for controlling flash memory using descriptor array | |
US20190079676A1 (en) | System and method for channel time management in solid state memory drives | |
US20040083334A1 (en) | Method and apparatus for managing the integrity of data in non-volatile memory system | |
KR20100113083A (ko) | 셀당 단일 비트 nand 플래시 메모리를 에뮬레이팅하기 위한 셀당 다수 비트 nand 플래시 메모리에 대한 제어기 | |
CN103403681A (zh) | 描述符调度器 | |
KR20130092482A (ko) | 신뢰성 있는 ssd를 위한 효율적인 raid 기법 | |
CN102880521A (zh) | 检测出现的坏块 | |
CN110503999A (zh) | 用于管理存储器访问操作的方法和系统 | |
EP2927779A1 (en) | Disk writing method for disk arrays and disk writing device for disk arrays | |
CN104216771B (zh) | 软件程序的重启方法及装置 | |
CN109992287A (zh) | 一种固件升级方法、系统、设备及介质 | |
CN110362274A (zh) | 一种NVMe控制器、网络化存储设备及系统 | |
CN107797821A (zh) | 重试读取方法以及使用该方法的装置 | |
KR20130086366A (ko) | 리던던트 방식으로 복수의 메모리 장치들 내에 데이터 블록들을 저장하는 방법, 메모리 컨트롤러, 및 메모리 시스템 | |
TW202034178A (zh) | 資料儲存裝置與資料處理方法 | |
US20120198124A1 (en) | Methods and systems for optimizing read operations in a non-volatile memory | |
US9483395B2 (en) | Asynchronous bad block management in NAND flash memory | |
US20190026033A1 (en) | Method and system for hardware accelerated cache flush | |
CN103339603B (zh) | 计算机重新编程方法、数据存储介质和机动车辆计算机 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |