一种NANDFlash访问操作方法、装置及系统与流程

文档序号:14716585发布日期:2018-06-16 01:28阅读:301来源:国知局
一种NAND Flash访问操作方法、装置及系统与流程

本发明涉及访问操作技术领域,尤其涉及一种NAND Flash访问操作方法、装置及系统。



背景技术:

NAND Flash存储器为Flash存储器中的一种非易失性存储器,其在断电时仍旧能够保存所存储的信息。NAND Flash存储器具有存储密度高、改写速度远高于硬盘等的优点,适用于大量数据的存储,在业界得到了越来越广泛的应用。

NAND Flash存储器在使用时,需要特殊的系统接口以及复杂的Flash管理,因而应用NAND Flash存储器较为困难。为便于NAND Flash存储器的管理和操作,通常需要一个硬件控制器--NAND Flash控制器(英文名称:NAND Flash Controller)作为系统接口,以便于将系统对NAND Flash存储器的操作转译为NAND Flash存储器的接口定义,进而firmware(中文名称:固件)用户通过NAND Flash控制器能够实现对NAND Flash存储器的灵活管理。

NAND Flash存储器的生产厂家众多,因而接口类型定义复杂,由此存在多样化的接口时序要求。若每一接口都需要在软件应用层定义,则提升了系统处理的复杂度。如附图1所示的NAND Flash典型的page read操作结构图。由附图1可知,page read操作包括命令、地址锁存,从NAND存储阵列读出数据到其数据寄存器,以及数据寄存器输出等,这一系列的操作都分别对应着特定的NAND接口时序,这导致系统处理的复杂度。为简化复杂度,软件应用层通常定义要执行的NAND Flash操作类型,而复杂的接口协议实现则由物理层硬件完成。即根据NAND操作实现的不同阶段,软件应用层定义不同的操作指令,物理层硬件接收操作指令后通过解析、控制的方式生成满足NAND接口时序的命令,进而最终被NAND Flash锁存。系统通过软硬件功能划分的方式实现NAND Flash存储器的管理以及访问。

通过软硬件功能划分的方式虽然能够实现NAND Flash存储器的管理以及访问,但从软件应用层看,软件应用层操作的原子为预定义的指令,多个预定义指令串起来完成一个诸如复位、读、写、擦等的NAND Flash访问操作。由此,软件应用层仍然需要管理大量的Flash操作指令,不利于管理维护。另外,由于多个预定义指令串起来完成一个NAND Flash操作,因而软件应用层需要频繁下发指令,这大大增加NAND的访问时间,降低NAND Flash控制器的性能,进而使得访问NAND Flash存储器的速度降低。



技术实现要素:

本发明提供一种NAND Flash访问操作方法、装置及系统,以解决现有NAND Flash访问操作方法访问速度较慢的问题。

本发明提供一种NAND Flash访问操作方法,包括:

预定义多个由指令模板构建的指令序列模板,所述指令模板包括指令类型和固化指令参数;

接收应用层软件下发的指令序列,并对所述指令序列解析,以从所述指令序列模板中调用与所述指令序列相对应的指令序列模板;

对调用的所述指令序列模板解析和重构,生成子命令;

将所述子命令发送到NAND接口。

优选地,接收应用层软件下发的指令序列前,将所述指令序列模板初始化于芯片内嵌内存中。

优选地,对所述指令序列解析,以从所述指令序列模板中调用与所述指令序列相对应的指令序列模板包括:

对接收的所述指令序列解析,得到所述指令序列中的指令序列模板起始地址;

根据所述指令序列模板起始地址从预定义的所述指令序列模板中调用与所述指令序列模板起始地址相同的指令序列模板。

优选地,对调用的所述指令序列模板解析和重构包括:

对调用的所述指令序列模板中的所述指令模板逐一解析,并逐一构建为操作NAND的子命令。

优选地,预定义多个包含指令模板的指令序列模板包括:

根据NAND Flash操作类型预定义多个指令模板;

多个所述指令模板通过串行拼接方式构建多个完成NAND Flash操作的指令序列模板。

优选地,所述NAND Flash操作类型包括复位、设置特性、获取特性、读、编程和擦。

优选地,所述指令序列包括NAND指令码、访问NAND地址、DMA信息和运行时间参数。

本发明提供一种NAND Flash访问操作装置,包括:

指令序列模板模块,用于预定义多个包含指令模板的指令序列模板;

指令译码模块,用于接收指令序列,并对所述指令序列解析,以从所述指令序列模板中调用当前NAND操作的指令序列模板;以及对调用的所述指令序列模板解析和重构,生成子指令;

发送模块,用于接收所述指令译码模块发送的所述子指令,以及将所述子指令发送到NAND接口。

本发明提供一种NAND Flash访问操作系统,所述系统包括软件、物理层硬件和NAND Flash;其中,

所述软件包括电连接的应用层软件和固件;

所述物理层硬件包括电连接的CPU和权利要求8中的NAND Flash访问操作装置;

所述固件与所述CPU电连接;所述NAND Flash访问操作装置与所述NAND Flash电连接。

本发明的实施例提供的技术方案可以包括以下有益效果:

本发明提供一种NAND Flash访问操作方法、装置及系统。该方法预先将软件应用层的操作原子定义为一个指令序列,即提出指令序列方式,进而根据指令序列预定义指令模板。根据指令模板构建指令序列模板。当接收指令序列时,对接收到的指令序列解析,并调用与指令序列相对应的指令序列模板。对调用的指令序列模板进行解析和重构,以实现硬件自动将指令序列进行解析和下发,进而减少软件指令的频繁下发,提升访问NAND Flash存储器的速度。由于定义了指令模板,因而能够减少软件的重复类型指令的重复下发,由硬件自动解析模板下发指令,这不仅减轻了软件对操作指令集的管理工作,还提升了访问NAND速度,提升了NAND Flash操作性能。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为相关技术中NAND Flash典型的page read操作结构图;

图2为本发明实施例提供的NAND Flash访问操作方法的流程示意图;

图3为本发明实施例提供的NAND Flash访问操作装置的结构示意图;

图4为本发明实施例提供的NAND Flash访问操作系统的结构示意图。

具体实施方式

在访问NAND Flash存储器的过程中,虽然通过软硬件功能划分的方式能够实现NAND Flash存储器的管理以及访问,但从软件应用层看,软件应用层操作的原子为预定义的指令,多个预定义指令串起来完成一个诸如复位、读、写、擦等的NAND Flash访问操作。由此,软件应用层仍然需要管理大量的Flash操作指令,不利于管理维护。另外,由于多个预定义指令串起来完成一个NAND Flash操作,因而软件应用层需要频繁下发指令,这大大增加NAND的访问时间,降低NAND Flash控制器的性能,进而使得访问NAND Flash存储器的速度降低。

针对上述问题,本发明实施例提供一种NAND Flash访问操作方法、装置及系统。本申请的核心思想是:将软件应用层的操作原子定义为一个指令序列,即提出指令序列方式。由指令模板构建的指令序列模板对指令序列重新构造,以实现硬件自动将指令序列进行解析和下发,进而减少软件指令的频繁下发,提升访问NAND Flash存储器的速度。

具体地,请参考附图2、3,附图2示出了本发明实施例提供的NAND Flash访问操作方法的流程示意图;附图3示出了本发明实施例提供的NAND Flash访问操作装置的结构示意图。在下述表述中,NAND Flash存储器简称为NAND Flash。

由附图2可知,本发明实施例提供的NAND Flash访问操作方法包括:

步骤S01:预定义多个包含指令模板的指令序列模板,指令模板包括指令类型和固化指令参数。

访问NAND Flash存储器的操作类型众多,比如复位、设置特性(set feature)、获取特性(get feature)、读、编程和擦等,且每种操作由多种参数构成。由于操作类型不同,因而不同的操作对应不同的指令,且该指令包括多个参数。对于一种操作类型的重复操作,某些参数是固定不变的,而有些特有的参数是变动的,且每次NAND Flash操作所特有的参数由软件下发的操作指令序列提供。在本发明实施例中,定义指令序列为操作NAND Flash存储器时下发的指令,该指令序列包括当前操作调用哪个指令序列模板、NAND指令码、访问NAND地址、DMA信息、运行时间参数、编程/读NAND的数据来源/目的等。

根据NAND Flash存储器的操作类型定义多个指令模板,该指令模板为预定义的一系列通常使用的NAND Flash操作指令,其对应的操作参数源自于指令序列。本发明实施例提供了一些常用的预定义的指令模板,具体请参考表1。

表1:预定义的指令模板

在本发明实施例中,指令模板包括指令类型和固化指令参数。其中,指令类型即为NAND Flash存储器的操作类型,是完成一次NAND Flash操作的必要子集。固化指令参数为每一次NAND Flash操作都保持一致的参数,因而固化指令参数不同于每次NAND Flash操作的特有参数。例如,两次读操作的NAND page地址不同,这一参数强烈依赖于每一次读操作。软件下发给硬件的表征是一个下发NAND地址的伪指令,该伪指令是不变的。由于类似于NAND page地址的参数对于每次NAND操作都不变,因而将参数固化到指令模板中能够有效减少软件对于同一操作指令的重复配置,从而实现硬件加速处理。

进一步,一些指令模板指定了操作参数在指令序列中的偏移,这使得上述操作参数所对应的操作具有统一的格式类型,进而便于NAND Flash存储器的管理。

对于一个NAND Flash操作类型,将预定义的多个指令模板通过串行拼接方式构建一个完成NAND Flash操作的指令序列模板,即指令模板为构成指令序列模板的子集。由此,对于多种NAND Flash操作类型能够构建多个完成NAND Flash操作的指令序列模板。如表2所示,示出了通用的page program操作和page read操作的指令序列模板。

表2:通用的page program操作和page read操作的指令序列模板

步骤S02:接收应用层软件下发的指令序列,并对所述指令序列解析,以从所述指令序列模板中调用与所述指令序列相对应的指令序列模板。

在应用层软件操作NAND Flash之前,指令序列模板需要通过Firmware(中文名称:固件)初始化于物理层硬件中,尤其是初始化于芯片内嵌内存中。当指令序列模板初始化于芯片内嵌内存后,若对NAND Flash执行相同或重复的操作,则物理层硬件能够自动调用指令模板。由于指令模板根据软件下发的操作指令序列生成,因而指令模板完全覆盖NAND Flash操作的指令序列,由此,软件应用层下发指令序列时,物理层硬件能够自动重构NAND Flash访问的命令序列,实现物理层硬件的加速。

访问NAND Flash存储器时,接收软件应用层下发指令序列,该指令序列包括采用标准的TLV(Type、Length、Value)方式定义的NAND指令码、访问NAND地址、DMA信息以及其他一些runtime参数,如表3所示。CMD Handle(英文全称:command handle;中文全称:指令处理)模块接收软件应用层下发指令序列。CMD Handle模块中的Command Decoding(中文名称:指令译码)模块对指令序列进行解析,得到指令序列模板的起始地址。Command Decoding模块根据解析得到的指令序列模板起始地址调用预定义的指令序列模板,从而在预定义的指令序列模板中选取与指令序列模板起始地址相同的指令序列模板作为指定模板。

表3:采用TLV方式定义的指令序列

步骤S03:对调用的指令序列模板解析和重构,生成子指令。

Command Decoding模块获取到已调用的指令序列模板后,对指令序列模板中的指令模板逐一解析,并逐一构建为操作NAND的子命令。例如,以解析到指令模板ALE为例,Command Decoding模块读取指令序列中具体的NAND操作地址,并重新构建成ALE指令。重新构建的操作NAND的子命令已经具备直接操作NAND接口的功能。

步骤S04:将子指令发送到NAND接口。

Command Decoding模块通过CMD发布模块将重构后的子指令下发到NAND接口。进一步,由于NAND操作存在特定操作时序,因而Command Decoding模块在下发子指令时需要完成指令操作相关时序的处理。

本发明实施例提供的NAND Flash访问操作方法将软件应用层的操作原子定义为一个指令序列,其中,一个指令序列对应完成一次NAND操作。即本发明实施例提出一种指令序列方式。由指令模板构建的指令序列模板对指令序列重新构造,以实现硬件自动将指令序列进行解析和下发,提升访问NAND Flash存储器的速度。由于定义了指令模板,因而能够减少软件的重复类型指令的重复下发,由硬件自动解析模板下发指令,这不仅减轻了软件对操作指令集的管理工作,还提升了访问NAND速度,提升了NAND Flash操作性能。

本发明实施例还提供一种NAND Flash访问操作装置,如附图3所示。本发明实施例提供的NAND Flash访问操作装置包括:

指令序列模板模块,用于预定义多个包含指令模板的指令序列模板;

指令译码模块,用于接收指令序列,并对指令序列解析,以从指令序列模板中调用当前NAND操作的指令序列模板;以及对调用的指令序列模板解析和重构,生成子指令;

发送模块,用于接收指令译码模块发送的子指令,以及将子指令发送到NAND接口。

具体地,指令序列模板模块根据通常使用的NAND Flash操作指令预定义多个指令模板,其中,该指令模板包括指令类型和固化指令参数。根据一个NAND Flash操作类型,将多个指令模板通过串行拼接方式构建一个完成NAND Flash操作的指令序列模板。由于NAND Flash操作类型多样,因而指令序列模板模块能够预定义多个指令序列模板。

在应用层软件操作NAND Flash之前,固件对指令序列模板初始化。应用层软件发起操作NAND Flash时,物理层硬件中的指令译码模块接收软件应用层下发指令序列,并对指令序列进行解析,得到指令序列模板的起始地址。指令译码模块根据解析得到的指令序列模板起始地址调用指令序列模板模块中预定义的指令序列模板,从而在预定义的指令序列模板中选取与指令序列模板起始地址相同的指令序列模板作为指定模板。

确定指定模板后,指令译码模块对指令序列模板中的指令模板逐一解析,并逐一构建为操作NAND的子命令,重构的子命令已经具备直接操作NAND接口的功能。指令译码模块将重构的子命令通过CMD执行模块中的CMD发布模块发送至NAND接口,进而通过NAND接口访问NAND Flash。

本发明实施例还提供一种NAND Flash访问操作系统,如附图4所示。本发明实施例提供的NAND Flash访问操作系统包括:软件、物理层硬件和NAND Flash;其中,

软件包括电连接的应用层软件和固件;

物理层硬件包括电连接的CPU和NAND Flash访问操作装置;

固件与CPU电连接;NAND Flash访问操作装置与NAND Flash电连接。

本发明实施例提供的NAND Flash访问操作系统的工作过程为:软件发起访问NAND Flash时,由应用层软件发起NAND Flash的访问操作,且发起的NAND Flash操作由OS(英文全称:Operation System;中文名称:操作系统)给固件下发任务。固件接收到下发的任务后,根据具体的任务内容通过物理层硬件中的CPU下发具体的NAND操作的指令序列。CPU将接收到的NAND操作的指令序列传送至NAND Flash访问操作装置,进而由NAND Flash访问操作装置对指令序列进行处理,并生成能够访问NAND Flash的子命令。NAND Flash访问操作装置通过将子命令发送至NAND Flash,进而实现应用层软件对NAND Flash的访问操作。

本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上所述的本发明实施方式并不构成对本发明保护范围的限定。

本领域技术人员在考虑说明书及实践这里发明的公开后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1