一种芯片内嵌的Flash存储器和存储控制方法与流程

文档序号:26004033发布日期:2021-07-23 21:21阅读:186来源:国知局
一种芯片内嵌的Flash存储器和存储控制方法与流程

本发明涉及信息存储技术领域,具体涉及一种芯片内嵌的flash存储控器和存储控制方法。



背景技术:

ic芯片(integratedcircuitchip)是将大量的微电子元器件(晶体管、电阻、电容等)形成的集成电路制作在一小块或几小块半导体晶片或介质基片上,然后封装在一个管壳内,成为具有所需电路功能的微型结构。目前在ic芯片内嵌入的flash方案基本成熟,由于flash逻辑部分与芯片数字功能部分的逻辑构成方式有所不同,一般是根据芯片制程工艺定制化设计,属于一种特殊设计,而且flash一般用来存储cpu或者其他功能部件的功能执行代码,所以从flash读取到的数据有任何问题都可能造成系统的紊乱。因此如何提高芯片内嵌flash存储数据的健壮性,进而提高片上系统的健壮性,是当前在芯片内嵌flash存储技术中主要的研究方向。



技术实现要素:

本发明主要解决的技术问题是如何提高芯片内嵌flash存储数据的健壮性。

根据第一方面,一种实施例中提供一种芯片内嵌的flash存储器,所述flash存储器包括至少两个存储空间和存储控制器;每个所述存储空间的存储内容相同;

所述存储控制器用于按一预设顺序选取一个所述存储空间读取存储数据,读取该存储空间的存储数据时,校验被读取的存储数据,并当被读取的存储数据有错误时,读取另一个所述存储空间存储的相同数据,以替换原所述存储空间有错误的存储数据。

一实施例中,所述存储控制器读取其它所述存储空间存储的相同数据,包括:

存储控制器读取其它所述存储空间的相同数据时,校验被读取的存储数据,且当所述存储控制器读取的存储数据校验有错误时,再次更换所述存储空间读取相同数据。

一实施例中,每个所述存储空间的代码存储结构相同,所述代码存储结构括包括存储容量、flash存储块和/或数据存储地址的排布方式。

一实施例中,每个所述存储空间包括至少一个存储单元行,所述存储单元行包括数据部分和冗余部分;所述冗余部分用于对所述数据部分的存储内容进行校验和/或纠错。

一实施例中,所述冗余部分包括汉明码位和错误标记位;

所述汉明码位用于对所述数据部分进行汉明码查错和纠错,所述错误标记位用于标记所述数据部分的错误状态。

根据第二方面,一种实施例中提供一种芯片内嵌的flash存储器存储控制方法,其特征在于,包括:

按一预设顺序选取flash存储器的一个存储空间;所述flash存储器包括至少两个存储空间,每个所述存储空间的存储内容相同;

读取被选的所述存储空间的存储数据,并校验被读取的存储数据;

当被读取的存储数据校验结果为有错误时,读取另一个所述存储空间存储的相同数据,并替换原所述存储空间有错误的存储数据。

一实施例中,所述读取另一个所述存储空间存储的相同数据,包括:

读取其它所述存储空间的相同数据时,校验被读取的存储数据。

一实施例中,每个所述存储空间包括至少一个存储单元行,所述存储单元行包括数据部分和冗余部分;所述冗余部分用于对所述数据部分的存储内容进行校验和/或纠错;所述冗余部分包括汉明码位和错误标记位;所述汉明码位用于对所述数据部分进行汉明码查错和纠错,所述错误标记位用于标记所述数据部分的错误状态。

一实施例中,该方法还包括:

当一个所述存储空间的至少一个存储单元行的存储数据出错并不能被纠错,则该存储空间从所述预设顺序中剔除。

根据第三方面,一种实施例中提供一种计算机可读存储介质,所述介质上存储有程序,所述程序能够被处理器执行以实现第一方面所述的方法。

依据上述实施例的flash存储器,由于采用多个存储空间来存储相同的数据,当一个存储空间出现数据错误时从另一个存储空间读取相同数据进行替换,使得芯片内嵌flash存储器存储数据的健壮性得到提高。

附图说明

图1为一种实施例中芯片内嵌的flash存储器的结构示意图;

图2为一种实施例中存储单元行结构示意图;

图3为一种实施例中存储单元行冗余部分的机构示意图;

图4为另一种实施例中芯片内嵌的flash存储器存储控制方法流程示意图;

图5为一种实施例中flash存储块的分布示意图。

具体实施方式

下面通过具体实施方式结合附图对本发明作进一步详细说明。其中不同实施方式中类似元件采用了相关联的类似的元件标号。在以下的实施方式中,很多细节描述是为了使得本申请能被更好的理解。然而,本领域技术人员可以毫不费力的认识到,其中部分特征在不同情况下是可以省略的,或者可以由其他元件、材料、方法所替代。在某些情况下,本申请相关的一些操作并没有在说明书中显示或者描述,这是为了避免本申请的核心部分被过多的描述所淹没,而对于本领域技术人员而言,详细描述这些相关操作并不是必要的,他们根据说明书中的描述以及本领域的一般技术知识即可完整了解相关操作。

另外,说明书中所描述的特点、操作或者特征可以以任意适当的方式结合形成各种实施方式。同时,方法描述中的各步骤或者动作也可以按照本领域技术人员所能显而易见的方式进行顺序调换或调整。因此,说明书和附图中的各种顺序只是为了清楚描述某一个实施例,并不意味着是必须的顺序,除非另有说明其中某个顺序是必须遵循的。

本文中为部件所编序号本身,例如“第一”、“第二”等,仅用于区分所描述的对象,不具有任何顺序或技术含义。而本申请所说“连接”、“联接”,如无特别说明,均包括直接和间接连接(联接)。

flash是存储芯片的一种,通过特定的程序可以修改里面的数据。flash在电子以及半导体领域内往往表示flashmemory的意思,即平时所说的“闪存”,全名叫flasheeprommemory。flash存储器又称闪存,它结合了rom和ram的长处,不仅具备电子可擦除可编程(eeprom)的性能,还可以快速读取数据(nvram的优势),使数据不会因为断电而丢失。

当ic芯片中内置的存储设备采用flash技术时,由于该技术只能有限次地擦写存储设备,因此flash存储数据时定会涉及数据健壮性的技术问题。flash存储一般分为主存储块和信息块,主存储块用于存储程序,我们写的程序一般存储在这里,信息块又分成系统存储器和选项字节,系统存储器存储用于存放在系统存储器自举模式下的启动程序。选项字节存储芯片的配置信息及对主存储块的保护信息。为了保证存储数据的可靠性,通常的方法是采用纠错码来纠正存储过程中产生的错误,而事实上,在flash技术的实际运用中数据存储产生错误的概率还是比较小的。一般flash由数据部分加冗余部分组成,例如常见的位宽140bit的flash,是由128bit的数据部分和12bit的冗余部分组成。冗余位一般用来校验和纠错数据部分的错误,数据出现错误的原因一般是由于受损或者外界干扰引起的单比特数据翻转。在本申请是针对flash的单比特数据出现错误时,设计的一种即使flash存储的数据出现错误也可以及时发现并更正的存储控制方法。

在本发明实施例中,采用多个存储空间来存储相同的数据,当一个存储空间出现数据错误时从另一个存储空间读取相同数据,并进行替换,使得芯片内嵌flash存储器存储数据的健壮性得到提高。

实施例一:

请参考图1,为一种实施例中芯片内嵌的flash存储器的结构示意图,flash存储器包括至少两个存储空间10和存储控制器20。每个存储空间10的存储内容相同。存储控制器20用于按一预设顺序选取一个存储空间10读取存储数据,读取该存储空间的存储数据时,校验被读取的存储数据,并当被读取的存储数据有错误时,读取另一个存储空间存储10的相同数据,以替换原存储空间10有错误的存储数据。其中,存储控制器20读取其它存储空间10存储的相同数据包括:存储控制器20读取其它存储空间10的相同数据时,校验被读取的存储数据,且当存储控制器20读取的存储数据校验有错误时,再次更换存储空间10读取相同数据。

一实施例中,flash存储器的每个存储空间10的代码存储结构相同,代码存储结构括包括存储容量、flash存储块和数据存储地址的排布方式。一实施例中,每个flash存储块的容量为8k,每个存储空间10包括两个flash存储块,flash存储器包括n个存储空间10。当每个存储空间10中的flash存储块未存满时,未存储数据的空间保留处理,一实施例中,存储数据最后占用的flash存储块的保留空间的最后一行留作备用存储空间。

请参考图2,为一种实施例中存储单元行结构示意图,每个存储空间包括至少一个存储单元行,存储单元行包括数据部分和冗余部分,冗余部分用于对数据部分的存储内容进行校验和/或纠错。一实施例中,存储单元行长度为140bit,数据部分长度为128bit,冗余部分长度为12bit。其中,一般存储数据出错是由于受损或者外界干扰引起的但比特数据翻转。

请参考图3,为一种实施例中存储单元行冗余部分的机构示意图,存储单元行的冗余部分包括汉明码位和错误标记位,汉明码位用于对数据部分进行汉明码查错和纠错,错误标记位用于标记数据部分的错误状态。一实施例中,汉明码位长度为8bit,错误标记位长度为4bit。汉明码位用来做数据部分的汉明码查错纠错,错误标记位用来标注数据部分4个字的对应错误情况。数据部分与冗余部分的存储方式不仅限于明确界限区分,可按一定的规则打乱存放。一实施例中,如果数据部分有错误(一般发生错误为单比特发生)则对应标注位应标记为“0”,flash擦除后默认为高,即无错误情况,在为擦除之前只能由“1”写“0”,不能逆向操作。

本申请考虑的范围是芯片经过生产测试后,在芯片的正常使用过程中读取flash存储器发生比特损坏的技术问题,即经过出厂测试合格后损坏。通过本申请提出的增添备份存储单元、汉明码纠错及错误标记等方法实现flash存储器的检查错误、纠正错误、标记错误等提高flash存储数据的健壮性,即使所读取的flash行有比特损坏的情况仍可以定位并纠错的能力,具有较强的纠错能力,避免控制器读到错误的存储数据。相对于传统的数据校验只能判断数据出错的情况,即使使用了纠错码,具有一定的纠错能力,一旦是纠错码部分损坏也是于事无补的,本申请不只是单纯的复制了一份存储的数据,更是让两部分存储空间相互结合,在做出错误标记,是基于整个存储器的系统性提出的解决方案。

本申请实施例中公开了一种芯片内嵌的flash存储器,flash存储器包括至少两个存储空间和存储控制器,每个存储空间的存储内容相同。存储控制器用于按一预设顺序选取一个存储空间读取存储数据,读取该存储空间的存储数据时,校验被读取的存储数据,并当被读取的存储数据有错误时,读取另一个存储空间存储的相同数据,来替换原存储空间有错误的存储数据。由于采用多个存储空间来存储相同的数据,当一个存储空间出现数据错误时从另一个存储空间读取相同数据进行替换,使得芯片内嵌flash存储器存储数据的健壮性得到提高。

实施例二:

请参考图4,为另一种实施例中芯片内嵌的flash存储器存储控制方法流程示意图,包括:

步骤110,选取一个存储空间。

按一预设顺序选取flash存储器的一个存储空间,flash存储器包括至少两个存储空间,每个存储空间的存储内容相同。一实施例中,预设顺序是按存储空间的排列顺序依次选取,例如,第一次选取1号存储空间读取数据,下一次选取2号存储空间读取数据,按此方式依次更换选取。

步骤120,校验读取的存储数据。

读取被选的存储空间的存储数据,并校验被读取的存储数据是否有错误。

步骤130,存储数据有错误时更换存储空间。

当被读取的存储数据校验结果为有错误时,更换存储空间读取数据,或读取另一个存储空间存储的相同数据。

步骤140,替换原存储空间有错误的存储数据。

将读取的另一个存储空间存储的无错误数据替换原存储空间有错误的存储数据。其中,读取其它存储空间的相同数据时,校验被读取的存储数据。

一实施例中,flash存储器每个存储空间包括至少一个存储单元行,存储单元行包括数据部分和冗余部分,冗余部分用于对数据部分的存储内容进行校验和/或纠错。一实施例中,冗余部分包括汉明码位和错误标记位,汉明码位用于对数据部分进行汉明码查错和纠错,错误标记位用于标记数据部分的错误状态。

一实施例中,当一个存储空间的至少一个存储单元行的存储数据出错并不能被纠错,则该存储空间从预设顺序中剔除。

请参考图5,为一种实施例中flash存储块的分布示意图,下面通过一具体实施例来表述本方法的具体实施过程,在芯片内嵌的flash存储器空间中虚拟划分出相同容量的flash存储块110(如8k大小为一块),下载程序代码时以零地址为起始地址(称为存储数据a),当代码末尾所占的flash行不是块的最后一行时(未占满一个flash存储块110),备份代码从下一个flash存储块的起始地址开始写入(称为存储数据b),相当于一份代码保存两份。flash存储块110中每个存储单元行有128bit的数据部分、8bit的汉明码位以及4比特的错误标记位。系统上电启动时会默认从存储数据a中的代码段开始读取程序,这里我们暂时默认flash存储器没有损坏比特(经过出厂测试,会确保flash能够正常使用)。在系统长期的运行过程中某些flash的比特位可能不堪重负提前结束使用寿命(大多数生产过程中连线或pn结受杂质、工艺等影响没有达到期望要求,效短期内具有正常的功能属性,频繁读写过后会导致失效)。在程序运行过程中flash控制器读取flash中的数据时首先会检查所在存储单元行的错误标记位中字标注部分是否有问题(字标注部分标注了出错的字所在位置),同时会计算含明码检查数据部分是否有问题。如果有问题则屏蔽错误标记位的对应字,然后照此方法去存储数据b中对应的存储单元进行读取,如果存储数据b中对应的存储单元行存储的代码段没错误,则直接替换对应位置,如果存储数据b中对应的存储单元行的代码段也有问题,则对比存储数据b和存储数据a中两个有错误的存储单元行的数据部分进行比对,查看有多少比特不一致,如果只有两个比特不一致(存储数据a和存储数据b中各一个),则可以用汉明码纠正错误比特返回正确数据并标记错误所在字,读取128bit数据部分以及冗余部分的汉明码,由于汉明码(成熟的纠错码技术)具有一比特的纠错能力。如果当前存储单元行坏了两个比特(不会同时损坏,字标记部分事先会标记出第一个坏的比特所在字)可以通过与代码b段对比的方式确认第二个损坏比特所在字,并进行标注。正常来说flash的比特损坏概率很低,只有要求比较高的工控领域才会关注这个问题,在一个flash上坏两个比特的概率会更低,存储数据a和存储数据b之间对应字的部分也同样出了坏两个比特的概率基本为0,即在flash规定的使用寿命期间两个代码段对应字部分全部损坏无法纠错的概率基本不可能出现。

如果在汉明码位不匹配且数据部分代码存储数据a和存储数据b相匹配时,即数据部分没有比特损坏,汉明码位所在比特出了问题需要去另一码段的对应存储单元行去读取汉明码。汉明码一旦出错则此存储单元行不具有单独纠错能力,这时将错误标记位部分全部清零表示此该存储单元行汉明码失效。如果是错误标记位部分损坏,基本不可能四个字全部损坏,如果真的遇到错误标记位的四个字节全部损坏的情况则可以认为整片flash损坏,所以用四个错误标记位全为“0”来标记flash所在存储单元行的汉明码出错,即汉明码不可用。

存储控制器在读取代码的过程中遇到汉明码不匹配或者有错误的错误标记的错误标记位,需要进一步差错纠错处理,这样会影响正常的程序的读取速度,进而可能会影响到程序的执行,所以在系统发生复位时(上电复位除外)flash将改变默认代码段(如果之前默认读取存储数据a,存储数据b做备份,复位之后则将存储数据b作为默认读取段,存储数据a作为代码备份段)。通过这钟利用代码备份域相互检查存储问题情况,可以极大的提高由于flash比特损坏所带来的风险,避免因为cpu执行错误代码紊乱的情况。

本领域技术人员可以理解,上述实施方式中各种方法的全部或部分功能可以通过硬件的方式实现,也可以通过计算机程序的方式实现。当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:只读存储器、随机存储器、磁盘、光盘、硬盘等,通过计算机执行该程序以实现上述功能。例如,将程序存储在设备的存储器中,当通过处理器执行存储器中程序,即可实现上述全部或部分功能。另外,当上述实施方式中全部或部分功能通过计算机程序的方式实现时,该程序也可以存储在服务器、另一计算机、磁盘、光盘、闪存盘或移动硬盘等存储介质中,通过下载或复制保存到本地设备的存储器中,或对本地设备的系统进行版本更新,当通过处理器执行存储器中的程序时,即可实现上述实施方式中全部或部分功能。

以上应用了具体个例对本发明进行阐述,只是用于帮助理解本发明,并不用以限制本发明。对于本发明所属技术领域的技术人员,依据本发明的思想,还可以做出若干简单推演、变形或替换。

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