CN106168932A - 一种Flash控制方法及装置 - Google Patents

一种Flash控制方法及装置 Download PDF

Info

Publication number
CN106168932A
CN106168932A CN201610499782.7A CN201610499782A CN106168932A CN 106168932 A CN106168932 A CN 106168932A CN 201610499782 A CN201610499782 A CN 201610499782A CN 106168932 A CN106168932 A CN 106168932A
Authority
CN
China
Prior art keywords
flash
control command
flash control
queue
command
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
CN201610499782.7A
Other languages
English (en)
Other versions
CN106168932B (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.)
Lenovo Beijing Ltd
Original Assignee
Lenovo Beijing 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 Lenovo Beijing Ltd filed Critical Lenovo Beijing Ltd
Priority to CN201610499782.7A priority Critical patent/CN106168932B/zh
Publication of CN106168932A publication Critical patent/CN106168932A/zh
Application granted granted Critical
Publication of CN106168932B publication Critical patent/CN106168932B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1605Handling requests for interconnection or transfer for access to memory bus based on arbitration
    • G06F13/1642Handling requests for interconnection or transfer for access to memory bus based on arbitration with request queuing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/16Handling requests for interconnection or transfer for access to memory bus
    • G06F13/1668Details of memory controller

Abstract

本申请提供了一种Flash控制方法及装置,Flash控制方法应用于Flash控制器,包括:接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中;从预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与当前控制任务对应的Flash控制命令所对应的操作;将命令执行结果写入预设队列中,以供CPU从预设队列中读取命令执行结果,并根据命令执行结果执行相应的操作。在本申请中,通过以上方式缩短了CPU的整体工作时间,提高了CPU的整体工作效率。

Description

一种Flash控制方法及装置
技术领域
本申请涉及Flash控制技术领域,特别涉及一种Flash控制方法及装置。
背景技术
Flash(FLASH闪存,Flash Memory)作为非易失性存储器,被广泛应用在各类便携式数字设备(如手机和平板电脑等)中。而在Flash使用过程中,某些接口时序复杂的Flash,在读写数据时需要配有Flash控制器。
目前对配有Flash控制器的Flash的读写控制实现方式为:CPU(中央处理器,Central Processing Unit)向Flash控制器发送控制命令,Flash控制器通过接收到的控制命令对Flash进行相应的操作(如读数据或写数据),Flash控制器在对Flash进行操作完成后,便向CPU发送一个携带有操作结果的中断请求,CPU在接收到Flash控制器发送的中断请求后,才会发送下一个控制指令。其中,CPU在接收到Flash控制器发送的中断请求时,需要暂停当前正在运行的程序,将当前正在运行的程序相关的指令压入堆栈,转而查看Flash控制器发送的操作结果,在查看Flash控制器发送的操作结果并执行相应的操作后,从堆栈里读取当前正在运行的程序相关的指令,重新运行原来被中断的程序。然而,将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作会延长CPU的整体工作时间,降低了CPU的整体工作效率。
发明内容
为解决上述技术问题,本申请实施例提供一种Flash控制方法及装置,以达到缩短CPU的整体工作时间,提高CPU的整体工作效率的目的,技术方案如下:
一种Flash控制方法,应用于Flash控制器,包括:
接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中;
从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作;
将命令执行结果写入所述预设队列中,以供所述CPU从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
优选的,所述接收CPU发送的Flash控制命令,并将接收到的所述Flash控制命令写入预设队列中的过程,包括:
接收所述CPU发送的Flash控制命令,并将接收到的Flash控制命令中,针对不同Flash区块的Flash控制命令分别写入不同的预设队列中;
其中,同一个预设队列中存储的是针对同一个Flash区块的Flash控制命令。
优选的,所述接收CPU发送的Flash控制命令的过程,包括:
接收所述CPU并行发送的多个Flash控制命令。
优选的,从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的过程,包括:
从所述预设队列中读取当前控制任务对应的多个不同的子Flash控制命令,所述子Flash控制命令为针对某一个Flash区块的Flash控制命令;
并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作。
优选的,从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的过程,包括:
从所述预设队列中读取当前控制任务对应的Flash控制命令,并通过预设指令集解析所述当前控制任务对应的Flash控制命令,得到底层Flash指令,所述底层Flash指令为可被所述Flash控制器直接识别的指令;
对所述Flash进行与所述底层Flash指令对应的操作。
一种Flash控制方法,应用于CPU,所述方法包括:
发送Flash控制命令至Flash控制器,以使所述Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中;
从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
优选的,所述发送Flash控制命令至Flash控制器的过程,包括:
并行发送多个不同的Flash控制命令至Flash控制器。
一种Flash控制装置,应用于Flash控制器,所述Flash控制装置包括:
第一写入模块,用于接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中;
读取模块,用于从所述预设队列中读取当前控制任务对应的Flash控制命令;
操作模块,用于对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作;
第二写入模块,用于将命令执行结果写入所述预设队列中,以供所述CPU从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
优选的,所述第一写入模块包括:
写入单元,用于接收所述CPU发送的Flash控制命令,并将接收到的Flash控制命令中,针对不同Flash区块的Flash控制命令分别写入不同的预设队列中;
其中,同一个预设队列中存储的是针对同一个Flash区块的Flash控制命令。
优选的,所述第一写入模块包括:
接收单元,用于接收所述CPU并行发送的多个Flash控制命令。
优选的,所述读取模块包括:
第一读取单元,用于从所述预设队列中读取当前控制任务对应的多个不同的子Flash控制命令,所述子Flash控制命令为针对某一个Flash区块的Flash控制命令;
所述操作模块包括:
第一操作单元,用于并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作。
优选的,所述读取模块包括:
第二读取单元,用于从所述预设队列中读取当前控制任务对应的Flash控制命令;
所述操作模块包括:
解析单元,用于通过预设指令集解析所述当前控制任务对应的Flash控制命令,得到底层Flash指令,所述底层Flash指令为可被所述Flash控制器直接识别的指令;
第二操作单元,用于对所述Flash进行与所述底层Flash指令对应的操作。
一种Flash控制装置,应用于CPU,所述Flash控制装置包括:
发送模块,用于发送Flash控制命令至Flash控制器,以使所述Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中;
执行模块,用于从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
优选的,所述发送模块包括:
发送单元,用于并行发送多个不同的Flash控制命令至Flash控制器。
与现有技术相比,本申请的有益效果为:
在本申请中,Flash控制器在对Flash进行与所述待执行Flash控制命令对应的操作之后,将命令执行结果写入预设队列进行缓存,CPU则可以在执行完当前运行的程序之后再从预设队列中读取命令执行结果,不再需要进行将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作,虽然CPU需要从预设队列中读取命令执行结果,但是相比于现有技术中CPU将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的方式,CPU的工作量得到减少,从而缩短了CPU的整体工作时间,提高了CPU的整体工作效率。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的Flash控制方法的一种流程图;
图2是本申请提供的Flash控制方法的一种流程图;
图3是本申请提供的Flash控制方法的一种流程图;
图4是本申请提供的Flash控制方法的另一种流程图;
图5是本申请提供的Flash控制装置的一种逻辑结构示意图;
图6是本申请提供的Flash控制装置的另一种逻辑结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
实施例一
在本实施例中,提供了一种Flash控制方法,可应用于Flash控制器,请参见图1,其示出了本申请提供的Flash控制方法的一种流程图,可以包括以下步骤:
步骤S101:接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中。
在本实施例中,Flash控制器会预先构建预设队列,用于存放CPU发送的Flash控制命令及CPU发送的Flash控制命令对应的命令执行结果。
Flash控制器可以控制一个Flash或控制多个Flash。在Flash控制器控制一个Flash时,Flash控制器可以构建一个预设队列或多个预设队列。Flash控制器在构建一个预设队列时,无论CPU发送的Flash控制命令是针对Flash整体的Flash控制命令,还是针对同一个Flash中不同Flash区块的Flash控制命令,都需要将接收到的Flash控制命令写入同一个预设队列中。Flash控制器在构建多个预设队列时,若CPU发送的Flash控制命令为针对某一个Flash区块的Flash控制命令,Flash控制器则可以接收所述CPU发送的Flash控制命令,并将接收到的Flash控制命令中,针对不同Flash区块的Flash控制命令分别写入不同的预设队列中;其中,同一个预设队列中存储的是针对同一个Flash区块的Flash控制命令。
在Flash控制器控制多个Flash时,Flash控制器同样可以构建一个预设队列或多个预设队列。当Flash控制器构建一个预设队列时,Flash控制器则需要将CPU发送的针对不同Flash的Flash控制命令写入同一个预设队列中。当Flash控制器构建多个预设队列时,Flash控制器则可以将CPU发送的针对不同Flash的Flash控制命令写入不同的预设队列中,其中,每个预设队列对应一个Flash即每个预设队列仅存储对应的Flash对应的Flash控制命令。
CPU可以采用串行的方式向Flash控制器发送Flash控制命令,即每次发送一个Flash控制命令。相应的,Flash控制器接收CPU发送的Flash控制命令具体为:Flash控制器接收CPU串行发送的Flash控制命令。
当然,CPU可以并行发送多个Flash控制命令至Flash控制器,即CPU一次发送多个Flash控制命令至Flash控制器。相应的,Flash控制器接收CPU发送的Flash控制命令具体为:Flash控制器接收CPU并行发送的多个Flash控制命令。
其中,CPU并行发送多个Flash控制命令至Flash控制器的方式相比于CPU采用串行的方式向Flash控制器发送Flash控制命令,缩短了CPU的命令发送时间和Flash控制器的命令接收时间,提高了CPU的整体工作效率和Flash控制器的整体工作效率。
需要说明的是,Flash控制器无论接收CPU串行发送的Flash控制命令,还是接收CPU并行发送的多个Flash控制命令,Flash控制器均是依次将接收到的Flash控制命令写入预设队列中。
步骤S102:从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作。
在本实施例中,Flash控制器在将CPU发送的Flash控制命令写入同一个预设队列中时,Flash控制器则直接从该预设队列中读取当前控制任务对应的Flash控制命令。
Flash控制器在将CPU发送的Flash控制命令写入到不同的预设队列中时,Flash控制器则需要从不同的预设队列中读取当前控制任务对应的Flash控制命令。例如,Flash控制器控制一个Flash,该Flash被划分为Flash区块1、Flash区块2和Flash区块3,Flash控制器构建三个预设队列,分别为预设队列1、预设队列2和预设队列3,预设队列1用于存放Flash区块1对应的Flash控制命令,预设队列2用于存放Flash区块2对应的Flash控制命令,预设队列3用于存放Flash区块3对应的Flash控制命令,Flash控制器在接收到CPU发送的针对Flash区块1的Flash控制命令时,将CPU发送的针对Flash区块1的Flash控制命令写入预设队列1中,Flash控制器在接收到CPU发送的针对Flash区块2的Flash控制命令时,将CPU发送的针对Flash区块2的Flash控制命令写入预设队列2中,Flash控制器在接收到CPU发送的针对Flash区块3的Flash控制命令时,将CPU发送的针对Flash区块3的Flash控制命令写入预设队列3中,并在执行当前控制任务时,相应的,从预设队列1中读取针对Flash区块1的Flash控制命令,从预设队列2中读取针对Flash区块2的Flash控制命令,从预设队列3中读取针对Flash区块3的Flash控制命令。
Flash控制器构建预设队列,将CPU发送的Flash控制命令写入预设队列的方式,使得Flash控制器可以根据不同的命令阶段对不同的Flash区块对应的Flash控制命令进行调度,实现Flash控制器对不同的Flash区块的并行处理。例如,预设队列中存储有Flash控制命令A和Flash控制命令B,Flash控制命令A对应Flash区块A,Flash控制命令B对应Flash区块B,Flash控制器可以首先从预设队列中读取Flash控制命令A,并对Flash区块A进行与Flash控制命令A所对应的操作,Flash控制器不必等到Flash区块A执行完Flash控制命令A所对应的操作后就可以从预设队列中读取Flash控制命令B,并对Flash区块B进行与Flash控制命令B所对应的操作,实现了对Flash区块A和Flash区块B的并行操作。
步骤S103:将命令执行结果写入所述预设队列中,以供所述CPU从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作。
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
在本实施例中,Flash控制器在对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作之后,将命令执行结果写入预设队列中缓存,而不再是将携带有命令执行结果的中断请求发送至CPU,使CPU由被动的根据命令执行结果执行相应的操作转变为主动的从预设队列中读取命令执行结果,并根据命令执行结果执行相应的操作,因此CPU可以不中断当前运行的程序,而是可以在运行完当前运行的程序后,再从预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作,不再需要进行将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作。
在Flash控制器仅构建一个预设队列时,Flash控制器将命令执行结果写入该预设队列中即可。在Flash控制器构建多个预设队列中,Flash控制器则将命令执行结果写入命令执行结果对应的Flash控制命令对应的预设队列中。仍以步骤S102中Flash控制器控制一个Flash,该Flash被划分为Flash区块1、Flash区块2和Flash区块3,Flash控制器构建三个预设队列,分别为预设队列1、预设队列2和预设队列3为例,Flash控制器在得到针对Flash区块1的Flash控制命令对应的命令执行结果1时,将命令执行结果1写入预设队列1中,Flash控制器在得到针对Flash区块2的Flash控制命令对应的命令执行结果2时,将命令执行结果2写入预设队列2中,Flash控制器在得到针对Flash区块3的Flash控制命令对应的命令执行结果3时,将命令执行结果3写入预设队列3中。
当然,在本实施例中,存放CPU发送的Flash控制命令的预设队列和存放CPU发送的Flash控制命令对应的命令执行结果的预设队列可以不同,只需要Flash控制器构建不同的预设队列即可。
在本申请中,Flash控制器在对Flash进行与所述待执行Flash控制命令对应的操作之后,将命令执行结果写入预设队列进行缓存,CPU则可以在执行完当前运行的程序之后再从预设队列中读取命令执行结果,不再需要进行将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作,虽然CPU需要从预设队列中读取命令执行结果,但是相比于现有技术中CPU将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的方式,CPU的工作量得到减少,从而缩短了CPU的整体工作时间,提高了CPU的整体工作效率。
在本实施例中,上述从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作具体可以为:每次从所述预设队列中读取当前控制任务对应的某一个Flash控制命令,并对Flash进行与所述当前控制任务对应的该Flash控制命令对应的操作。
当然,上述从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作具体过程,可以参见图2,可以包括以下步骤:
步骤S201:从所述预设队列中读取当前控制任务对应的多个不同的子Flash控制命令,所述子Flash控制命令为针对某一个Flash区块的Flash控制命令。
Flash控制器可以从预设队列中一次性读取当前控制任务对应的多个不同的子Flash控制命令。
步骤S202:并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作。
在从预设队列中一次性读取出当前控制任务对应的多个不同的子Flash控制命令后,并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作,可以提高Flash控制器的工作效率,并充分的利用了Flash控制器所控制的Flash的接口带宽。
其中,步骤S201和步骤S202示出的过程即Flash控制器可以根据不同的命令阶段对不同的Flash区块对应的Flash控制命令进行调度的实现过程。
在本实施例中,从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的具体过程可以参见图3,可以包括以下步骤:
步骤S301:从所述预设队列中读取当前控制任务对应的Flash控制命令,并通过预设指令集解析所述当前控制任务对应的Flash控制命令,得到底层Flash指令,所述底层Flash指令为可被所述Flash控制器直接识别的指令。
在本实施例中,在Flash控制器所控制的Flash时序发生变化时,可以通过更改预设指令集,来保证Flash控制器解析出的底层Flash控制命令仍能被Flash识别,从而保证Flash控制器仍能对时序发生变化的Flash进行控制,而不需要为了适应Flash的时序变化更改Flash控制器的硬件设计,从而改善了Flash控制器设计的灵活性。
步骤S302:对所述Flash进行与所述底层Flash指令对应的操作。
实施例二
在本实施例中,提供的Flash控制方法,应用于CPU,请参见图4,其示出了本申请提供的Flash控制方法的另一种流程图,可以包括以下步骤:
步骤S401:发送Flash控制命令至Flash控制器,以使所述Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中。
在本实施例中,CPU可以采用串行的方式向Flash控制器发送Flash控制命令,即每次发送一个Flash控制命令。
当然,CPU可以并行发送多个不同的Flash控制命令至Flash控制器,即CPU一次发送多个不同的Flash控制命令至Flash控制器。
其中,Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中的具体过程,请参见实施例一示出的Flash控制器的执行过程,在此不再赘述。
步骤S402:从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作。
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
在本实施例中,由于CPU可以主动从预设队列中读取命令执行结果,因此CPU可以在任意时刻从预设队列中读取命令执行结果,具体的,可以在当前运行程序运行结束后从预设队列中读取命令执行结果,并根据命令执行结果执行相应的操作,不再需要进行将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作,减少了工作量,从而缩短了CPU的整体工作时间,提高了CPU的整体工作效率。
实施例三
本实施例提供了一种Flash控制装置,应用于Flash控制器,请参见图5,Flash控制装置包括:第一写入模块11、读取模块12、操作模块13和第二写入模块14。
第一写入模块11,用于接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中。
在本实施例中,Flash控制器会预先构建预设队列,用于存放CPU发送的Flash控制命令及CPU发送的Flash控制命令对应的命令执行结果。
Flash控制器可以控制一个Flash或控制多个Flash。在Flash控制器控制一个Flash时,Flash控制器可以构建一个预设队列或多个预设队列。Flash控制器在构建一个预设队列时,无论CPU发送的Flash控制命令是针对Flash整体的Flash控制命令,还是针对同一个Flash中不同Flash区块的Flash控制命令,都需要将接收到的Flash控制命令写入同一个预设队列中。Flash控制器在构建多个预设队列时,若CPU发送的Flash控制命令为针对某一个Flash区块的Flash控制命令,第一写入模块11包括的写入单元接收所述CPU发送的Flash控制命令,并将接收到的Flash控制命令中,针对不同Flash区块的Flash控制命令分别写入不同的预设队列中;其中,同一个预设队列中存储的是针对同一个Flash区块的Flash控制命令。
在Flash控制器控制多个Flash时,Flash控制器同样可以构建一个预设队列或多个预设队列。当Flash控制器构建一个预设队列时,第一写入模块11则需要将CPU发送的针对不同Flash的Flash控制命令写入同一个预设队列中。当Flash控制器构建多个预设队列时,第一写入模块11则可以将CPU发送的针对不同Flash的Flash控制命令写入不同的预设队列中,其中,每个预设队列对应一个Flash即每个预设队列仅存储对应的Flash对应的Flash控制命令。
CPU可以采用串行的方式向Flash控制器发送Flash控制命令,即每次发送一个Flash控制命令。相应的,第一写入模块11接收CPU发送的Flash控制命令具体为:第一写入模块11接收CPU串行发送的Flash控制命令。
当然,CPU可以并行发送多个Flash控制命令至Flash控制器,即CPU一次发送多个Flash控制命令至Flash控制器。相应的,在本实施例中,第一写入模块11包括的接收单元,接收所述CPU并行发送的多个Flash控制命令。
其中,CPU并行发送多个Flash控制命令至Flash控制器的方式相比于CPU采用串行的方式向Flash控制器发送Flash控制命令,缩短了CPU的命令发送时间和Flash控制器的命令接收时间,提高了CPU的整体工作效率和Flash控制器的整体工作效率。
需要说明的是,Flash控制器无论接收CPU串行发送的Flash控制命令,还是接收CPU并行发送的多个Flash控制命令,Flash控制器均是依次将接收到的Flash控制命令写入预设队列中。
读取模块12,用于从所述预设队列中读取当前控制任务对应的Flash控制命令。
操作模块13,用于对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作。
在本实施例中,Flash控制器在将CPU发送的Flash控制命令写入同一个预设队列中时,读取模块12则直接从该预设队列中读取当前控制任务对应的Flash控制命令。
Flash控制器在将CPU发送的Flash控制命令写入到不同的预设队列中时,读取模块12则需要从不同的预设队列中读取当前控制任务对应的Flash控制命令。例如,Flash控制器控制一个Flash,该Flash被划分为Flash区块1、Flash区块2和Flash区块3,Flash控制器构建三个预设队列,分别为预设队列1、预设队列2和预设队列3,预设队列1用于存放Flash区块1对应的Flash控制命令,预设队列2用于存放Flash区块2对应的Flash控制命令,预设队列3用于存放Flash区块3对应的Flash控制命令,Flash控制器在接收到CPU发送的针对Flash区块1的Flash控制命令时,将CPU发送的针对Flash区块1的Flash控制命令写入预设队列1中,Flash控制器在接收到CPU发送的针对Flash区块2的Flash控制命令时,将CPU发送的针对Flash区块2的Flash控制命令写入预设队列2中,Flash控制器在接收到CPU发送的针对Flash区块3的Flash控制命令时,将CPU发送的针对Flash区块3的Flash控制命令写入预设队列3中,并在执行当前控制任务时,相应的,从预设队列1中读取针对Flash区块1的Flash控制命令,从预设队列2中读取针对Flash区块2的Flash控制命令,从预设队列3中读取针对Flash区块3的Flash控制命令。
Flash控制器构建预设队列,将CPU发送的Flash控制命令写入预设队列的方式,使得Flash控制器可以根据不同的命令阶段对不同的Flash区块对应的Flash控制命令进行调度,实现Flash控制器对不同的Flash区块的并行处理。例如,预设队列中存储有Flash控制命令A和Flash控制命令B,Flash控制命令A对应Flash区块A,Flash控制命令B对应Flash区块B,Flash控制器可以首先从预设队列中读取Flash控制命令A,并对Flash区块A进行与Flash控制命令A所对应的操作,Flash控制器不必等到Flash区块A执行完Flash控制命令A所对应的操作后就可以从预设队列中读取Flash控制命令B,并对Flash区块B进行与Flash控制命令B所对应的操作,实现了对Flash区块A和Flash区块B的并行操作。
第二写入模块14,用于将命令执行结果写入所述预设队列中,以供所述CPU从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
在本实施例中,操作模块13在对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作之后,将命令执行结果写入预设队列中缓存,而不再是将携带有命令执行结果的中断请求发送至CPU,使CPU由被动的根据命令执行结果执行相应的操作转变为主动的从预设队列中读取命令执行结果,并根据命令执行结果执行相应的操作,因此CPU可以不中断当前运行的程序,而是可以在运行完当前运行的程序后,再从预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作,不再需要进行将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作。
在Flash控制器仅构建一个预设队列时,Flash控制器将命令执行结果写入该预设队列中即可。在Flash控制器构建多个预设队列中,第二写入模块14则将命令执行结果写入命令执行结果对应的Flash控制命令对应的预设队列中。仍以步骤S102中Flash控制器控制一个Flash,该Flash被划分为Flash区块1、Flash区块2和Flash区块3,Flash控制器构建三个预设队列,分别为预设队列1、预设队列2和预设队列3为例,Flash控制器在得到针对Flash区块1的Flash控制命令对应的命令执行结果1时,将命令执行结果1写入预设队列1中,Flash控制器在得到针对Flash区块2的Flash控制命令对应的命令执行结果2时,将命令执行结果2写入预设队列2中,Flash控制器在得到针对Flash区块3的Flash控制命令对应的命令执行结果3时,将命令执行结果3写入预设队列3中。
当然,在本实施例中,存放CPU发送的Flash控制命令的预设队列和存放CPU发送的Flash控制命令对应的命令执行结果的预设队列可以不同,只需要Flash控制器构建不同的预设队列即可。
在本实施例中,读取模块12包括:第一读取单元,用于从所述预设队列中读取当前控制任务对应的多个不同的子Flash控制命令,所述子Flash控制命令为针对某一个Flash区块的Flash控制命令。
在本实施例中,操作模块13包括:第一操作单元,用于并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作。
在从预设队列中一次性读取出当前控制任务对应的多个不同的子Flash控制命令后,并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作,可以提高Flash控制器的工作效率,并充分的利用了Flash控制器所控制的Flash的接口带宽。
当然,在本实施例中,读取模块12可以包括:第二读取单元,用于从所述预设队列中读取当前控制任务对应的Flash控制命令。
所述操作模块13可以包括:解析单元和第二操作单元。
解析单元,用于通过预设指令集解析所述当前控制任务对应的Flash控制命令,得到底层Flash指令,所述底层Flash指令为可被所述Flash控制器直接识别的指令。
在本实施例中,在Flash控制器所控制的Flash时序发生变化时,可以通过更改预设指令集,来保证Flash控制器解析出的底层Flash控制命令仍能被Flash识别,从而保证Flash控制器仍能对时序发生变化的Flash进行控制,而不需要为了适应Flash的时序变化更改Flash控制器的硬件设计,从而改善了Flash控制器设计的灵活性。
第二操作单元,用于对所述Flash进行与所述底层Flash指令对应的操作。
实施例三
本实施例提供了一种Flash控制装置,应用于CPU,请参见图6,Flash控制装置包括:发送模块21和执行模块22。
发送模块21,用于发送Flash控制命令至Flash控制器,以使所述Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中。
在本实施例中,CPU可以采用串行的方式向Flash控制器发送Flash控制命令,即每次发送一个Flash控制命令。
当然,发送模块21具体可以包括:发送单元,用于并行发送多个不同的Flash控制命令至Flash控制器。实现CPU可以并行发送多个不同的Flash控制命令至Flash控制器,即CPU一次发送多个不同的Flash控制命令至Flash控制器。
执行模块22,用于从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作。
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
在本实施例中,由于CPU可以主动从预设队列中读取命令执行结果,因此CPU可以在任意时刻从预设队列中读取命令执行结果,具体的,可以在当前运行程序运行结束后从预设队列中读取命令执行结果,并根据命令执行结果执行相应的操作,不再需要进行将当前正在运行的程序相关的指令压入堆栈和从堆栈里读取当前正在运行的程序相关的指令的操作,减少了工作量,从而缩短了CPU的整体工作时间,提高了CPU的整体工作效率。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种Flash控制方法及装置进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

Claims (14)

1.一种Flash控制方法,其特征在于,应用于Flash控制器,包括:
接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中;
从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作;
将命令执行结果写入所述预设队列中,以供所述CPU从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
2.根据权利要求1所述的方法,其特征在于,所述接收CPU发送的Flash控制命令,并将接收到的所述Flash控制命令写入预设队列中的过程,包括:
接收所述CPU发送的Flash控制命令,并将接收到的Flash控制命令中,针对不同Flash区块的Flash控制命令分别写入不同的预设队列中;
其中,同一个预设队列中存储的是针对同一个Flash区块的Flash控制命令。
3.根据权利要求1或2所述的方法,其特征在于,所述接收CPU发送的Flash控制命令的过程,包括:
接收所述CPU并行发送的多个Flash控制命令。
4.根据权利要求1所述的方法,其特征在于,从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的过程,包括:
从所述预设队列中读取当前控制任务对应的多个不同的子Flash控制命令,所述子Flash控制命令为针对某一个Flash区块的Flash控制命令;
并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作。
5.根据权利要求1所述的方法,其特征在于,从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的过程,包括:
从所述预设队列中读取当前控制任务对应的Flash控制命令,并通过预设指令集解析所述当前控制任务对应的Flash控制命令,得到底层Flash指令,所述底层Flash指令为可被所述Flash控制器直接识别的指令;
对所述Flash进行与所述底层Flash指令对应的操作。
6.一种Flash控制方法,其特征在于,应用于CPU,所述方法包括:
发送Flash控制命令至Flash控制器,以使所述Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中;
从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
7.根据权利要求6所述的方法,其特征在于,所述发送Flash控制命令至Flash控制器的过程,包括:
并行发送多个不同的Flash控制命令至Flash控制器。
8.一种Flash控制装置,其特征在于,应用于Flash控制器,所述Flash控制装置包括:
第一写入模块,用于接收CPU发送的Flash控制命令,并将接收到的Flash控制命令写入预设队列中;
读取模块,用于从所述预设队列中读取当前控制任务对应的Flash控制命令;
操作模块,用于对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作;
第二写入模块,用于将命令执行结果写入所述预设队列中,以供所述CPU从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
9.根据权利要求8所述的Flash控制装置,其特征在于,所述第一写入模块包括:
写入单元,用于接收所述CPU发送的Flash控制命令,并将接收到的Flash控制命令中,针对不同Flash区块的Flash控制命令分别写入不同的预设队列中;
其中,同一个预设队列中存储的是针对同一个Flash区块的Flash控制命令。
10.根据权利要求8或9所述的Flash控制装置,其特征在于,所述第一写入模块包括:
接收单元,用于接收所述CPU并行发送的多个Flash控制命令。
11.根据权利要求8所述的Flash控制装置,其特征在于,所述读取模块包括:
第一读取单元,用于从所述预设队列中读取当前控制任务对应的多个不同的子Flash控制命令,所述子Flash控制命令为针对某一个Flash区块的Flash控制命令;
所述操作模块包括:
第一操作单元,用于并行对各个所述子Flash控制命令对应的Flash区块进行相应的操作。
12.根据权利要求8所述的Flash控制装置,其特征在于,所述读取模块包括:
第二读取单元,用于从所述预设队列中读取当前控制任务对应的Flash控制命令;
所述操作模块包括:
解析单元,用于通过预设指令集解析所述当前控制任务对应的Flash控制命令,得到底层Flash指令,所述底层Flash指令为可被所述Flash控制器直接识别的指令;
第二操作单元,用于对所述Flash进行与所述底层Flash指令对应的操作。
13.一种Flash控制装置,其特征在于,应用于CPU,所述Flash控制装置包括:
发送模块,用于发送Flash控制命令至Flash控制器,以使所述Flash控制器将接收到的Flash控制命令写入预设队列中,以及从所述预设队列中读取当前控制任务对应的Flash控制命令,并对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作,以及将命令执行结果写入所述预设队列中;
执行模块,用于从所述预设队列中读取命令执行结果,并根据所述命令执行结果执行相应的操作;
所述命令执行结果为对Flash进行与所述当前控制任务对应的Flash控制命令所对应的操作的结果。
14.根据权利要求13所述的Flash控制装置,其特征在于,所述发送模块包括:
发送单元,用于并行发送多个不同的Flash控制命令至Flash控制器。
CN201610499782.7A 2016-06-29 2016-06-29 一种Flash控制方法及装置 Active CN106168932B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610499782.7A CN106168932B (zh) 2016-06-29 2016-06-29 一种Flash控制方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610499782.7A CN106168932B (zh) 2016-06-29 2016-06-29 一种Flash控制方法及装置

Publications (2)

Publication Number Publication Date
CN106168932A true CN106168932A (zh) 2016-11-30
CN106168932B CN106168932B (zh) 2020-12-18

Family

ID=58064581

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610499782.7A Active CN106168932B (zh) 2016-06-29 2016-06-29 一种Flash控制方法及装置

Country Status (1)

Country Link
CN (1) CN106168932B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108172249A (zh) * 2017-12-22 2018-06-15 湖南国科微电子股份有限公司 一种NAND Flash访问操作方法、装置及系统
CN109313608A (zh) * 2018-09-19 2019-02-05 深圳市汇顶科技股份有限公司 图像校验系数的读取方法、闪存控制器、系统及存储介质
CN112802527A (zh) * 2021-04-14 2021-05-14 上海灵动微电子股份有限公司 嵌入式闪存高速编程的实现方法、嵌入式闪存的编程系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246450A (zh) * 2008-03-26 2008-08-20 普天信息技术研究院有限公司 一种闪存存储器及其存储空间管理方法
CN101799793A (zh) * 2010-03-23 2010-08-11 深圳市硅格半导体有限公司 闪存控制方法及装置
CN102789439A (zh) * 2012-06-16 2012-11-21 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法
CN103377154A (zh) * 2012-04-25 2013-10-30 无锡江南计算技术研究所 存储器的访存控制装置及方法、处理器及北桥芯片
CN103778013A (zh) * 2014-01-24 2014-05-07 中国科学院空间应用工程与技术中心 一种多通道Nand Flash控制器及其控制方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246450A (zh) * 2008-03-26 2008-08-20 普天信息技术研究院有限公司 一种闪存存储器及其存储空间管理方法
CN101799793A (zh) * 2010-03-23 2010-08-11 深圳市硅格半导体有限公司 闪存控制方法及装置
CN103377154A (zh) * 2012-04-25 2013-10-30 无锡江南计算技术研究所 存储器的访存控制装置及方法、处理器及北桥芯片
CN102789439A (zh) * 2012-06-16 2012-11-21 北京忆恒创源科技有限公司 控制数据传输过程中的中断的方法
CN103778013A (zh) * 2014-01-24 2014-05-07 中国科学院空间应用工程与技术中心 一种多通道Nand Flash控制器及其控制方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108172249A (zh) * 2017-12-22 2018-06-15 湖南国科微电子股份有限公司 一种NAND Flash访问操作方法、装置及系统
CN108172249B (zh) * 2017-12-22 2021-09-17 湖南国科微电子股份有限公司 一种NAND Flash访问操作方法、装置及系统
CN109313608A (zh) * 2018-09-19 2019-02-05 深圳市汇顶科技股份有限公司 图像校验系数的读取方法、闪存控制器、系统及存储介质
WO2020056622A1 (zh) * 2018-09-19 2020-03-26 深圳市汇顶科技股份有限公司 图像校验系数的读取方法、闪存控制器、系统及存储介质
CN112802527A (zh) * 2021-04-14 2021-05-14 上海灵动微电子股份有限公司 嵌入式闪存高速编程的实现方法、嵌入式闪存的编程系统

Also Published As

Publication number Publication date
CN106168932B (zh) 2020-12-18

Similar Documents

Publication Publication Date Title
US9934160B1 (en) Bit-mapped DMA and IOC transfer with dependency table comprising plurality of index fields in the cache for DMA transfer
CN101894042B (zh) 一种多操作系统间共享应用的实现方法、系统及移动终端
CN107515795A (zh) 基于队列的多任务并行数据处理方法、装置、介质和设备
CN100349150C (zh) 通过直接存储器访问控制器传输数据的系统及方法
US20130198757A1 (en) Resource allocation method and apparatus of gpu
TWI712951B (zh) 電子存放裝置的任務管理方法、主機和存儲裝置
CN106168932A (zh) 一种Flash控制方法及装置
US8069333B2 (en) Converting logical to real number to access shared configuration information in event driven state transiting reconfigurable system
CN102073461A (zh) 输入输出请求调度方法、存储控制器和存储阵列
CN109062826B (zh) 数据传输方法及系统
US20140258778A1 (en) Automated test equipment and control method thereof
US20220350655A1 (en) Controller and memory system having the same
CN107704310B (zh) 一种实现容器集群管理的方法、装置和设备
CN107066413B (zh) 一种用于处理多个总线设备数据的方法及其总线系统
CN104615558B (zh) 一种数据传送方法及电子装置
CN105677491A (zh) 一种数据传输方法及装置
CN102609231A (zh) 基于飞腾处理器平台的多显示屏输出方法
CN102542525A (zh) 一种信息处理设备以及信息处理方法
CN103186430A (zh) 文件操作装置及方法,和对应的数字处理设备和数字处理系统
CN102541808A (zh) Soc芯片系统及实现Soc芯片中可配置缓冲器的方法
KR101847976B1 (ko) 반도체 시스템
CN103488527A (zh) 一种php api调用方法、相关设备及系统
CN103593148A (zh) 一种cdf侧离线话单数据快速存取的方法及装置
CN109992560B (zh) 一种通信方法及通信系统
CN103634344A (zh) 一种单机运行多MySQL数据库实例的方法和设备

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