基于命令描述符的闪存控制方法

文档序号:6364580阅读:139来源:国知局
专利名称:基于命令描述符的闪存控制方法
技术领域
本发明涉及一种闪存控制方法,具体是涉及一种NAND闪存的控制方法。
背景技术
闪存设备已为公知,且市面上的闪存设备通常依据单独的存储单元在单元序列中的互联方式不同而区分为NOR (或非)设备和NAND (与非)设备。关于后者,即NAND设备 (NAND Flash Device, NFD)由于较之NOR设备成本低、写入和擦除速度快,且更适宜数据存储等诸多优点而被业界广泛采用。然而,由于NAND的管理和控制比较复杂,关于NAND闪存标准化组织当前并没有制定统一的接口标准,导致市场上NAND闪存种类繁多,这势必会增加闪存控制器的设计难度,因此,有必要提供新的闪存控制方法,以屏蔽或者说隐藏不同厂家NAND闪存的差异,降低闪存控制器的设计难度。中国第CN101477443A发明专利申请公开在其说明书背景技术部分对现有NFD的控制方法进行了较规范的论述,并提出了一种控制方法,该控制方法中主机用于将要进行的操作转化为子操作序列,并用微指令集编码成微指令序列,再将微指令序列输出到与非闪存控制器中。而与非闪存控制器则包括微指令存储队列、编码和控制模块、状态机群和数据缓存。其中,微指令存储队列存储主机输出的微指令序列,解码和控制模块依序从微指令存储队列中读取微指令序列并解码,状态机群根据解码和控制模块的解码结果将对应的与非闪存控制器接口信号时序发送给与非闪存器件、并将对应的控制信号发送给数据缓存, 数据缓存接收状态机群给出的控制信号以及缓存主机和与非闪存器件之间的交互数据。从而,针对不同的闪存器件只需配置不同的微指令序列就可以实现,提高了闪存控制的灵活性。然而,上述CN101477443A发明专利申请公开所记载的方案的支持内容仍然需要包含NFD子操作类命令(4条指令)、微指令序列控制(3条指令)和其他类指令(3条指令)。 公知的,传统的闪存控制方法中主机,如CPU只需下达功能命令,无需编写控制流程,使得主机的负担较小;显然,基于上述申请公开的方案需要编制操作序列,且所使用指令较多, 实现方法相对比残复杂,势必会较大的增加主机的负担,对应的硬件译码电路面积也会比较大。本申请及上述的CN101477443A发明专利申请公开理论上都是该CN101477443A发明专利申请第0005段所述的方法B的改进方案,均需要占用一定的CPU资源,所加以改进的主要目的在于降低对CPU资源的占用,尽可能的减小CPU的负担。

发明内容
因此,本发明的目的在于提供一种基于命令描述符的闪存控制方法,以有效精简支持指令,控制方法简单,从而使主机的负担大大减小,进而减小硬件译码电路的面积。为了实现本发明的发明目的,所采用的技术方案为
一种基于命令描述符的闪存控制方法,应用于与非闪存设备的控制,所述闪存控制方法包括
主机根据用户所需的与非闪存操作编写命令描述符的步骤,所述命令描述符由描述有该命令描述符执行条件的表头和其后的操作指令组成,而操作指令依据具体操作有选择地包括加在表头后的用于配置闪存接口的命令指令、描述有与非闪存设备操作地址的地址指令和描述有与非闪存控制器进行数据操作的数据指令中的至少一个;
当检测到与非闪存设备外挂,主机根据读取的与非闪存设备ID进行配置,建立连接; 与非闪存控制器下载所述命令描述符;
解析所述命令描述符,获得所述命令描述符的执行条件,进而依据所述执行条件依序执行表头后操作指令,并在执行条件中的终止条件满足时转入下一命令描述符的操作或者产生中断。依据上述方法,满足主机直接下达功能命令的一般优点,同时,由于依据上述方法的基于命令描述符的闪存控制方法所需要的指令非常精减,每一个命令描述符最多只使用 4条指令,也就是本方法只需使用四条指令,较之已有同类方法之控制方法相对复杂的缺陷,本方案的实现比较简单,不仅是主机的负担大大减小,而且硬件译码电路面积也大大减小。显见的是,采用了相对精简的指令体系,命令描述符的长度会比较短,不会对主机造成很大的负担,这也是所述领域需要解决的技术问题。上述基于命令描述符的闪存控制方法,用于与非闪存控制器进行数据操作的数据缓存配置为使用主机数据缓存,或者说使用的是系统缓存,以实现资源共享。现有的与非闪存控制器的数据缓存都集成在片内,不利于其他功能模块的调用,可以说是对缓存资源的很大浪费;本方案使用系统缓存,在闪存使用频率较低的特点下,不会造成比较大的浪费, 也不会过多的占用系统资源。上述基于命令描述符的闪存控制方法,当含有多个操作时,表头给出对应的操作个数作为终止条件,每一个操作有一个结束条件,当执行完一个操作时,核对是否执行完所有的操作,若没有则执行下一个操作,直至完成所有操作。操作符的在系统中占用若干字, 如32位系统中,一个字的字长是32位,表头占用一个字长,整个描述符的字段长度最多4 个字,而每个字所包含的信息足够完成多个操作,因此,依据上述方法可以完成多个操作, 且通过表头设置实现相应命令描述符的顺利执行。上述基于命令描述符的闪存控制方法,所述命令指令包括与非闪存厂商定制的协议指令和用户根据需要对闪存控制器进行预定操作的用户指令,协议指令用于完成闪存接口规范所规制的接口操作,用户指令则用于一些特殊闪存接口操作,如传输端口延时,等待一个设备空闲。上述基于命令描述符的闪存控制方法,所述与非闪存控制器设有描述符缓存和流程控制模块,以及仲裁主机与流程控制模块对所述描述符缓存控制权的描述符控制模块, 其中描述符缓存用于存放主机编写的命令描述符,以备流程控制模块调用;
流程控制模块调用描述符缓存中存放的命令描述符并解析,控制与其相连的功能模块完成命令描述符的各条指令,实现主机与通过与非闪存控制器与闪存设备交互。上述基于命令描述符的闪存控制方法,为了更有利于操作的识别,并在不解析整条指令时就可以预先进行相关的操作,并在条件成就时,再执行指令中操作,可以节省资源,因此,所述命令指令、地址指令的操作符中均含有标识指令类型的标志,流程控制模块在解析出对应指令和标志后将其一同发送给用于控制闪存设备与主机进行数据搬运的数据通路控制模块,数据通路控制模块根据读取的标志所对应的指令类型,进行匹配对应指令的操作。上述基于命令描述符的闪存控制方法,在进行匹配对应指令的操作时需结合数据通路控制模块所控制数据通路的状态进行操作,避免与其他操作相冲突。上述基于命令描述符的闪存控制方法,所述数据指令的操作码含有读写标志位, 流程控制模块读取数据指令的操作码时,先判断读写及读写所操作的地址空间,如果是读操作,则发送读数据标志和数据长度到数据通路控制模块,数据通路控制模块将读数据标志和读数据长度写入写缓存,进而控制负责将数据与AHB总线设备交互的数据搬运模块将所读数据搬运到目标AHB总线设备;
如果是写操作,流程控制模块则发送写数据标志和写数据长度到数据通路模块,数据通路模块将写数据标志和写数据长度写入写缓存,进而控制复杂将数据与AHB总线设备交互的数据搬运模块从AHB总线设备中读入数据,再将写数据标志和写数据逐一写入写缓存
中。


图I为依据本发明的一种基于命令描述符的闪存控制方法的控制流程。
图2为一种基于命令描述符的闪存控制方法所依赖的单通道闪存控制器配置结构框图。
图3为与非闪存协议时钟。
图4为命令描述符在描述符缓存中的存放结构。
图5为多通道结构配置的结构框图。
具体实施方式
参照说明书附图2,图中描述了依据本发明的基于命令描述符的闪存控制方法所
依赖的一种单通道闪存控制器的硬件结构框图,支持8 口闪存接口,主机或者CPU编写的命令描述符存在系统RAM中。图中
AHB (Advanced High performance Bus,系统总线)主机端口 用于闪存控制器通过系统总线向SOC (System on Chip,片上系统)芯片系统读写数据。AHB从机端口 AHB总线设备端,挂接与非闪存控制器,用于CPU通过系统总线读写闪存控制器。总线译码模块连接AHB从极端口,将AHB总线请求译码,分别将读写请求发送到与其连接的相应下位器件,如图2中的寄存器组、描述符控制模块和用户数据缓存。其中寄存器组为用于CPU读写的控制寄存器,控制闪存控制器的相关配置。描述符控制模块则用于仲裁CPU及与该描述符控制模块连接的流程控制模块对与该描述符控制模块相连的描述符缓存的控制权。描述符缓存用于存放CPU编写的命令描述符,描述符控制模块仲裁给CPU对该描述符缓存的控制权后,CPU可以变形命令描述符,并存放在g描述符缓存中,CPU也可以在系统缓存(如系统Cache)或者RAM中编写,再下载到上述描述符缓存中,供流程控制模块提取。用户数据缓存用于存放CPU编写的用户信息。地址生成模块连接于下面的流程控制模块,用于生成地址指令所需的发送到闪存设备的相关地址。初始化模块连接于所述流程控制模块,用于检索当前通路控制器(图I中的数据通路控制模块)是否外接有效设备。流程控制模块在描述符缓存中存有命令描述符时,描述符控制模块发送一个信号给该流程控制模块,表明有命令描述符需要执行,而流程控制模块则解析该命令描述符, 控制所连接的各功能模块完成命令描述符里的各条指令。进而,流程控制模块连接数据通路控制模块,以接收流程控制模块控制,进行数据通路的搬运控制。数据搬运模块通过数据通路控制模块连接到闪存接口,负责将数据读入闪存控制器或者通过AHB主机端口将数据写入SOC系统中。纠错码模块连接所述数据通路控制模块,负责数据部分的编码、解码和纠错。根据读写控制,所述数据通路控制模块还连接有用于将数据进行加扰的数据加扰模块和用于将数据进行解扰的数据解扰模块,并在数据加扰模块与闪存接口间配置数据取反模块和写缓存,数据解扰模块与闪存接口间配置数据取反模块及写缓存。其中写缓存用于存放流程控制模块向闪存接口发送的命令请求、地址请求和写数据请求。读缓存用于存放闪存接口读入的数据。闪存接口 按照闪存物理层时序要求将命令、地址发送到闪存,以进行数据的读依据上述结构的一个写页操作的示例
图3为与非闪存的协议要求。首先,有CPU编写一个命令描述符,写命令描述符用表I进行顺明。表I:
写业命令描述符地址偏移配置信息描述CMDHEADER0X00000XF5—00—08—Od表头Speccmd(80)0X00040X41—00—xx—80协议指令Coladdr(2)0X00080X02—xx—00—00列地址Rowaddr(3)OXOOOcOXOb—00—00—01行地址Wr—main-data(0x2000-0000)0X00100X82—20—00—00数据指令Speccmd(10)0X00200X41—00—xx—10协议指令Usercmd(waitbusy)0X00280X40—00—xx—04用户指令Usercmd(delay2)0X002c0X40—00—xx—02用户指令Speccmd(70)0X00300X40—00—xx—70协议指令Usercmd(readstatus)0X00340X40—00—xx—05协议指令Usercmd(end)0X00380X40—00—xx—Of用户指令
表中“描述”仅给出指令类型,不对指令进行详述,下面的方法中会给出相应的说明。系统上电后,CPU可以控制初始化模块检测闪存控制器是否外挂设备以及外挂设备的数量,并根据读取得闪存ID配置寄存器组。
6
进而,控制流程为
首先,CPU将编写好的命令描述符通过AHB从极端口下载到命令描述符缓存;这里CPU 在系统RAM中编写命令描述符,在描述符控制模块仲裁给CPU以描述符缓存控制权时,CPU 将编写好的命令描述符下载到命令描述符缓存内,供流程控制模块调用。当CPU将命令描述符的最后一条指令(用户指令_结束,表I中最后一条指令 User_cmd(end))下载完毕后,命令描述符控制模块向流程控制模块包括有命令描述符需要执行,并仲裁给流程控制模块以描述符缓存控制权。然后,流程控制模块发现有命令描述符需要执行时,到命令描述符控制模块索取数据,进而将命令描述符的表头读出,解析表头,分析当前的操作是块操作还是扇区操作以及操作个数,当前描述符的长度以及命令结束后是否需要产生中断。然后逐一读取下面的操作码,直到读到uSer_Cmd(end)为止,如果当前的块或者扇区操作个数等于表头的操作个数则说明当前命令描述符结束,否则流程控制模块将跳回表头的下一条操作码,重复执行。进而,如果流程控制模块读取到命令指令,将命令标志和命令(Spec_cmd(80)) 一起发送到数据通路控制模块,数据通路控制模块见到命令标志,将数据加扰模块和数据取反模块无效后,将命令标志和命令写入写缓存,闪存接口得知写缓存非空时,读出命令标志和命令,然后按照闪存接口协议将命令发出。如果流程控制模块读取到地址指令,先从地址生成模块中得到相应的列地址和行地址,然后将地址标志和地址一起发送到数据通路控制模块,数据通路控制模块见到地址标志,将数据加扰模块和数据取反模块无效后,将地址标志和地址写入写缓存,闪存接口得知写缓存非空时,读出地址标志和地址,然后按照闪存接口协议将地址发出。如果流程控制模块读取到数据指令,首先判断读写及操作的地址空间,如果是读操作,则发送读数据标志和读数据长度到数据通路模块,数据通路模块会将读数据标志和读数据长度写入写缓存,并控制数据搬运模块将从闪存读取的数据搬运到S O C系统中; 如果是写操作,则发送写数据标志和写数据长度到数据通路模块,数据通路模块会先将写数据标志和写数据长度写入缓存,然后控制数据搬运模块从S O C系统中将数据读入,再将写数据标志和写数据逐一写入写缓存中。结合上述示例可知,本发明只需要4条基本指令,就可以完成复杂的读、写操作, 当然,依据协议指令,可以对相关指定地址可以进行块、扇区的操作,指令大大精简,CPU的负担相对比较小。参见说明书附图2,每一个与非闪存控制器通道均需要一个用于存放命令描述符的独立的描述符缓存,如附图4,命令描述符按照FIFO (First Input First Output,先入先出队列)的数据结构存放入描述符缓存中,方便命令描述符的依序提取。命令描述符则构成一个指令队列,如附图4,表头、地址指令、命令指令和数据指令依次存放,一个命令描述符最多由五个字组成,表头既表不一个命令描述符的头,又描述有命令描述符执行的一些条件。下面对命令描述符做详细的表述。表头由4个字节,即32位字段构成,形成的描述结构如表2
表2 :位 31; 28定义标志描述表头标志27O保留26 25Bs选择块或扇区计数 00块和扇区计数无效 01块计数使能 10扇区计数使能 11保留24I中断使能23 16Bs_oount_h块/扇区高位循环计数15 BBs_count_l块/扇区低位循环计数7 OTable length描述符长度
命令操作码由4个字节构成,形成的描述结构如表3 : 表3 :位定义描述31; 257b0100_000命操作码标志24SUI:协议指令 O用户指令23 19Reserved保留18 16Ce_num片选15 BI CWC_wr —count当ICWC时写扇区计数(Reserved)(保留)7 OCmd code被发送到闪存设备的命令指令
地址操作码有4个字节构成,形成的描述结构如表4 表4 :
权利要求
1.一种基于命令描述符的闪存控制方法,应用于与非闪存设备的控制,其特征在于,所述闪存控制方法包括主机根据用户所需的与非闪存操作编写命令描述符的步骤,所述命令描述符由描述有该命令描述符执行条件的表头和其后的操作指令组成,而操作指令依据具体操作有选择地包括加在表头后的用于配置闪存接口的命令指令、描述有与非闪存设备操作地址的地址指令和描述有与非闪存控制器进行数据操作的数据指令中的至少一个;当检测到与非闪存设备外挂,主机根据读取的与非闪存设备ID进行配置,建立连接;与非闪存控制器下载所述命令描述符;解析所述命令描述符,获得所述命令描述符的执行条件,进而依据所述执行条件依序执行表头后操作指令,并在执行条件中的终止条件满足时转入下一命令描述符的操作或者产生中断。
2.根据权利要求I所述的基于命令描述符的闪存控制方法,其特征在于,用于与非闪存控制器进行数据操作的数据缓存配置为使用主机数据缓存,以实现资源共享。
3.根据权利要求2所述的基于命令描述符的闪存控制方法,其特征在于,当含有多个操作时,表头给出对应的操作个数作为终止条件,每一个操作有一个结束条件,当执行完一个操作时,核对是否执行完所有的操作,若没有则执行下一个操作,直至完成所有操作。
4.根据权利要求2所述的基于命令描述符的闪存控制方法,其特征在于,所述命令指令包括与非闪存厂商定制的协议指令和用户根据需要对闪存控制器进行预定操作的用户指令。
5.根据权利要求I至4任一所述的基于命令描述符的闪存控制方法,其特征在于,所述与非闪存控制器设有描述符缓存和流程控制模块,以及仲裁主机与流程控制模块对所述描述符缓存控制权的描述符控制模块,其中描述符缓存用于存放主机编写的命令描述符,以备流程控制模块调用;流程控制模块调用描述符缓存中存放的命令描述符并解析,控制与其相连的功能模块完成命令描述符的各条指令,实现主机与通过与非闪存控制器与闪存设备交互。
6.根据权利要求5所述的基于命令描述符的闪存控制方法,其特征在于,所述命令指令、地址指令的操作符中均含有标识指令类型的标志,流程控制模块在解析出对应指令和标志后将其一同发送给用于控制闪存设备与主机进行数据搬运的数据通路控制模块,数据通路控制模块根据读取的标志所对应的指令类型,进行匹配对应指令的操作。
7.根据权利要求6所述的基于命令描述符的闪存控制方法,其特征在于,在进行匹配对应指令的操作时需结合数据通路控制模块所控制数据通路的状态进行操作。
8.根据权利要求5所述的基于命令描述符的闪存控制方法,其特征在于,所述数据指令的操作码含有读写标志位,流程控制模块读取数据指令的操作码时,先判断读写及读写所操作的地址空间,如果是读操作,则发送读数据标志和数据长度到数据通路控制模块,数据通路控制模块将读数据标志和读数据长度写入写缓存,进而控制负责将数据与AHB总线设备交互的数据搬运模块将所读数据搬运到目标AHB总线设备; 如果是写操作,流程控制模块则发送写数据标志和写数据长度到数据通路模块,数据通路模块将写数据标志和写数据长度写入写缓存,进而控制复杂将数据与AHB总线设备交互的数据搬运模块从AHB总线设备中读入数据,再将写数据标志和写数据逐一写入写缓存中。
全文摘要
本发明公开了一种基于命令描述符的闪存控制方法,应用于与非闪存设备的控制,所述闪存控制方法包括主机根据用户所需编辑命令描述符,由与非闪存控制器下载所属命令描述符并解析,进而执行解析出的指令,本发明能够有效精简支持指令,控制方法简单,从而使主机的负担大大减小,进而减小硬件译码电路的面积。
文档编号G06F3/06GK102609222SQ201210030838
公开日2012年7月25日 申请日期2012年2月13日 优先权日2012年2月13日
发明者张洪柳, 李峰, 王运哲, 赵阳, 陆崇心 申请人:山东华芯半导体有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1