发明内容
本发明的目的在于提供一种闪存及其数据更新方法,以有效地缩短对闪存中的数据进行更新时的时间,并有效地提高闪存的可靠性。为了解决上述问题,本发明提供一种闪存,包括:第一存储阵列、第二存储阵列和缓冲单元,所述第一存储阵列和第二存储阵列的结构相同,且包含多个相对应的扇区;其中,在对其中一个存储阵列的某一个扇区进行数据更新时,另一个存储阵列中相对应的扇区作为写入备份单元;
所述缓冲单元,用于在数据更新时,存储从其中一个存储阵列中读出的数据,并将修改后的数据写入另一个存储阵列中相对应的扇区。
可选地,所述第一存储阵列和第二存储阵列中包含的扇区数相同。
可选地,所述第一存储阵列和第二存储阵列中包含的扇区数不同。
可选地,所述闪存还包括:读取单元,连接所述第一存储阵列和第二存储阵列,用于将所述闪存中存储的数据读出。
可选地,所述读取单元包括:多个第一灵敏放大器,多个第二灵敏放大器,以及多个对应连接所述第一灵敏放大器和第二灵敏放大器的与门电路;其中,所述多个第一灵敏放大器,分别对应连接第一存储阵列的多条位线,通过感应和放大各条位线上的信号变化得出第一存储阵列中存储的数据;并将得出的第一存储阵列中存储的数据发送至对应连接与门电路的第一输入端;
所述多个第二灵敏放大器,分别对应连接第二存储阵列的多条位线,并通过感应和放大各条位线上的信号变化得出第二存储阵列中存储的数据;并将得出的第二存储阵列中存储的数据发送至对应连接与门电路的第二输入端;
所述多个与门电路,用于将接收到的第一输入端和第二输入端的数据进行与逻辑处理,并将处理结果输出,以读出所述闪存中存储的数据。
可选地,所述读取单元包括:位线调整单元、电流镜单元、比较单元以及输出单元;
所述位线调整单元,连接第一存储阵列与第二存储阵列相对应的位线节点,在对闪存进行读取操作时,将第一存储阵列与第二存储阵列相对应的位线上的电流之和输出至数据线节点;
所述电流镜单元,连接所述数据线节点,用于对位线调整单元输出的第一存储阵列与第二存储阵列相对应的位线上的电流之和进行镜像,获得镜像电流,并将所述镜像电流输出至数据节点;
所述比较单元,连接所述数据节点,用于比较所述电流镜单元输出的镜像电流与参考电流以得出比较结果,并将所述比较结果输出至输出单元;
所述输出单元,基于所述比较单元输出的比较结果输出对应的输出数据。
可选地,所述参考电流包括:第一存储阵列的第一参考电流和第二存储阵列的第二参考电流之和。
可选地,所述电流镜单元包括:栅极相连的输入MOS管和镜像MOS管,所述输入MOS管和镜像MOS管的源极连接电源;所述输入MOS管的漏极与栅极连接,均连接至所述数据线节点,用于输入第一存储阵列与第二存储阵列相对应的位线上的电流之和;所述镜像MOS管的漏极连接数据节点,用于输出镜像电流。
可选地,所述位线调整单元包括:可变增益放大器,以及具有第一端、第二端和控制端的调整晶体管;所述可变增益放大器的输入端连接所述位线节点,输出端连接调整晶体管的控制端;调整晶体管的第一端连接所述数据线节点,第二端连接所述位线节点。
可选地,所述闪存的类型为或非闪存。
本发明还提供了一种应用上述闪存的数据更新方法,包括:
检测待更新的数据对应的扇区,以确定所述待更新的数据被存储的存储阵列;
将待更新的数据从其存储的扇区中读出,并存储至缓冲单元;
修改缓冲单元中的数据;
将修改后的数据写入另一个存储阵列的相应扇区。
可选地,所述检测待更新的数据对应的扇区,以确定所述待更新的数据被存储的存储阵列包括:对待更新的数据对应的第一存储阵列和第二存储阵列的扇区进行读取操作,当检测到存储阵列中读出的数据全部为“1”时,则判定该存储阵列未存储所述待更新的数据;反之,当检测到存储阵列中读出的数据包括“0”,则判定所述待更新的数据存储于该存储阵列。
可选地,所述闪存的数据更新方法还包括:在将修改后的数据写入另一个存储阵列的相应扇区的同时,擦除原数据存储阵列中对应的扇区。
可选地,所述闪存的数据更新方法还包括:在将修改后的数据写入另一个存储阵列的相应扇区之后,擦除原数据存储阵列中对应的扇区。
与现有技术相比,上述技术方案至少具有以下优点:
1)本发明的闪存包括两个存储阵列,在对所述闪存进行数据更新时,将当前存储数据的一个存储阵列的数据读出并保存到缓冲单元,在所述缓冲单元进行数据修改后,将修改后的数据写入另一个存储阵列。在这种更新方式中,数据更新时不再需要等待原数据存储阵列的擦除结束,因此可以有效地缩短数据更新的时间。
2)由于本发明的闪存中包括了两个存储阵列,在对闪存的数据进行更新时,每个存储阵列的擦除次数为现有技术的存储阵列的一半。因此能有效地提高闪存的存储单元的可靠性,进而能够延长闪存的使用寿命。
3)可选方案中,在将修改后的数据写入未存储数据阵列的相应扇区时,还可以同时进行原数据存储阵列对应的扇区的擦除操作。这样可以有效地缩短在数据更新结束后,正确读取所述闪存中的数据所需等待的时间。
这是因为,在现有技术中,只有通过读取(Read)-擦除(Erase)-修改(Modify)-写入(Write)等步骤之后,才可以对闪存中的数据进行读取,所需的时间较长;而本方案中,可以在写入步骤进行的同时进行擦除操作,因此进一步缩短了读取所述闪存中的数据所需等待的时间。
4)可选方案中,还可以在将修改后的数据写入未存储数据阵列的相应扇区之后,再擦除原数据存储阵列中对应的扇区。在这种数据更新方式下,所述闪存能够有效地避免突然断电时存储数据的影响,避免了存储的数据遗失。
具体实施方式
根据现有技术的描述,在对现有的闪存进行数据更新时,会浪费大量的时间在擦除和写入的步骤上,从而使得更新的时间较长,影响了闪存的效能;并且在现有的更新方式中,由于频繁擦除某一个扇区而导致该扇区的可靠性下降,进而影响到闪存的使用寿命。
本发明提供的闪存包括了两个存储阵列,在其中一个存储阵列进行数据存储时,另外一个会作为更新数据时的写入备份单元,即在需要对当前存储数据的存储阵列进行更新时,会将该存储阵列的数据读出并保存至缓冲单元;在缓冲单元中进行修改;将修改后的数据写入到未存储数据的另一个存储阵列中。在这种更新方式中,不再需要等待原数据存储阵列的擦除结束,就可以直接将修改后的数据写入另一个存储阵列中,从而完成数据更新操作。因此,本发明的闪存有效地缩短了数据更新所需的时间,提高了闪存的效能;并且有效地减小了每个存储阵列被擦除的次数,有效地提高了其可靠性,延长了闪存的使用寿命。
为使本发明的上述目的、特征和优点能够更为明显易懂,下面结合附图对本发明的具体实施方式做详细的说明。
图3示出了本发明闪存的一种结构示意图。如图3所示,所述闪存包括:第一存储阵列100、第二存储阵列200和缓冲单元300。
所述第一存储阵列100包含多个扇区,如图3所示的第一扇区110,用于数据的存储。其中,所述第一扇区110包括多个存储单元,如图3所示的第一存储单元120。
所述第二存储阵列200,与第一存储阵列100的结构相同,包含与第一存储阵列100中多个扇区相对应的多个扇区,如图3所示的与所述第一存储阵列100的第一扇区110相对应的第二扇区210;所述第二扇区210还包括多个存储单元,如图3所示的与所述第一存储单元120相对应的第二存储单元220。
所述缓冲单元300,用于在数据更新时,存储从某一存储阵列(例如第一存储阵列100)中读出的数据,并将修改后的数据写入另一个存储阵列(例如第二存储阵列200)中相对应的扇区。在本实施例中,所述缓冲单元300为静态随机存储器(SRAM,Static Random Access Memory)。当然,在其他实施例中,也可以采用其他结构的存储器,例如动态随机存储器(DRAM,DynamicRandom Access Memory)等,其不应限制本发明的保护范围。
在本实施例中,所述闪存的类型为或非闪存(NOR Flash)。
其中,上述两个存储阵列中相对应的扇区在数据更新时互为写入备份单元。具体地,以本实施例中相互对应的第一扇区110与第二扇区210为例,若待更新的数据被存储于第一存储阵列100中的第一扇区110,那么所述第二存储阵列200中的第二扇区210就作为此次数据更新时的写入备份单元,也就是说,修改后的数据将会被写入所述第二存储阵列200中的第二扇区210中;反之,若待更新的数据被存储于第二存储阵列200中的第二扇区210,那么所述第一存储阵列100中的第一扇区110就作为数据更新时的写入备份单元,即修改后的数据将会被写入所述第一存储阵列100中的第一扇区110中。
在本实施例中,所述第二存储阵列200与第一存储阵列100具有相同数量的扇区,也就是说,第二存储阵列200中的多个扇区与第一存储阵列100中的扇区一一对应。
图4示出了本发明闪存的另一种结构示意图。如图4所示,所述闪存包括:第一存储阵列100、第二存储阵列200和缓冲单元300。
本实施例的闪存与图3所示的闪存的区别在于:所述第二存储阵列200包含的扇区数大于第一存储阵列100中包含的扇区数,参考图4,本实施例中的第二存储阵列200还包括第三扇区230;所述第三扇区230未与第一存储阵列100中的扇区对应,不作为数据更新时的写入备份单元,也就是说,所述第三扇区230不受第一存储阵列100的影响;而所述第二存储阵列200中的其他扇区与第一存储阵列100的多个扇区一一对应,在数据更新时作为写入备份单元。
当然,图4所示的闪存仅为举例说明,其不就限制本发明的保护范围。本领域的技术人员可以在不违背本发明的精神下对闪存结构作简单的修改或变形。例如,在其他实施例中,所述第二存储阵列200还可以包括与第三扇区230相类似的其他扇区,这些扇区不与第一存储阵列100中的扇区一一对应,不受第一存储阵列100的影响。再如,在其他实施例中,还可以是第一存储阵列100包含的扇区数大于第二存储阵列200中包含的扇区数。
上述两种实施例的闪存均包括两个存储阵列,其中一个存储阵列用于存储数据,另一个存储阵列中相对应的扇区则在数据更新时作为写入备份单元。这样,在对所述闪存的数据进行更新时,可以缩短数据更新的时间。并且在数据更新时,每个存储阵列的擦除次数相应地减少为现有技术中的一半,因此,能有效地提高闪存的可靠性,进而延长了闪存的使用寿命。
下面再结合附图对本发明闪存的数据更新方式做详细说明。
参考图5,本实施例中,所述闪存的数据更新方法大致包括以下步骤:
步骤S11,检测待更新的数据对应的扇区,以确定所述待更新的数据被存储的存储阵列;
步骤S12,将待更新的数据从其存储的扇区中读出,并存储至缓冲单元;
步骤S13,修改缓冲单元中的数据;
步骤S14,将修改后的数据写入另一个存储阵列的相应扇区。
下面以图3所示的闪存为例,对图5所示的闪存的数据更新流程做详细介绍。但是需要说明的是,此不应限制本发明的保护范围,本领域技术人员可以将本发明提供的数据更新方式应用到其他结构的闪存中。
为了方便说明,假定图3所示的第一扇区110或第二扇区210中存储的数据为所述待更新的数据;进一步地,所述待更新的数据具体地对应于所述第一扇区110的第一存储单元120或第二扇区210的第二存储单元220。
结合图3和图5,首先执行步骤S11,分别检测第一存储阵列100的第一扇区110,以及第二存储阵列200的第二扇区210,以确定所述待更新的数据被存储的存储阵列。
在本实施例中,上述步骤S11的具体过程包括:分别将第一存储阵列100的第一扇区110,以及第二存储阵列200的第二扇区210中数据读出,并分别对读出的数据进行检测,若检测到某一存储阵列读出的数据全部为“1”,则说明该存储阵列中未存储所述待更新的数据;反之,若检测到某一存储阵列读出的数据中包括“0”,则说明所述待更新的数据被存储于该存储阵列中。
为了方便说明,在本实施例中,假定通过步骤S11进行检测时,由第二存储阵列200的第二扇区210中读出的数据全部为“1”;而由第一存储阵列100的第一扇区110中读出的数据中则至少包括一个“0”。由此,可以判定所述待更新的数据被存储于第一存储阵列100的第一扇区110。
接着执行步骤S12,将第一存储阵列100中第一扇区110的数据读出至缓冲单元300。
接着执行步骤S13,在所述缓冲单元300中将数据进行相应修改。具体地,在本实施例中,即是将对应于第一扇区110中第一存储单元120的数据进行修改。
执行步骤S14,将缓冲单元300中修改后的数据写入第二存储阵列200的第二扇区210。至此,实现了对图3所示闪存的一次数据更新。
需要说明的是,在执行步骤S14的同时或者在执行完步骤S14之后,可以对第一存储阵列100的第一扇区110进行擦除,从而为下一次的数据更新做好准备。由此可知,在对对应于所述闪存中的第一扇区110和第二扇区210的数据进行下一次更新时,所述第一扇区110由于被擦除、且未存储数据,因此将作为所述第二扇区210的写入备份单元。其他的步骤与前述步骤相类似,故在此不再赘述。
本实施例的数据更新过程中,对闪存中的数据更新所需的时间由现有技术中的读取、擦除、修改和写入四个步骤所占用的时间减少为读取、修改和写入的时间,由于可以节省擦除步骤所需的时间,因此本实施例中数据更新的时间被缩短,从而有效地提高了数据更新的速度以及闪存的效能。
虽然现有技术中可以将修改步骤和擦除步骤同时进行,从而可以节省修改步骤所需的时间,但是由于修改步骤所需的时间远远小于擦除步骤所需的时间,因此,与这种数据更新方式相比,本实施例仍然可以有效地缩短数据更新时间。
发明人对现有技术的更新方式和本方案的更新方式进行了实验验证,通过比较分析后发现,闪存中某扇区被读出的时间大约为0.02ms,在缓冲单元中修改数据的时间大约为0.01ms,该扇区被擦除的时间大约为3ms,而将修改后的数据写入的时间大约为2ms。因此,现有技术中闪存的数据更新时间大约为5.03ms(即0.02ms、0.01ms、2ms与3ms之和)或5.02ms(即0.02ms、2ms与3ms之和);而本方案的更新时间大约为2.03ms(即0.02ms、0.01ms与2ms之和)。由上述数据可以看出,与现有技术的数据更新方式相比,本方案的数据更新所需的时间至少可以缩短2.99ms(即5.02ms与2.03ms之差)。
并且,本实施例中,所述第一存储阵列100与第二存储阵列200互为写入备份单元,因此,在对其进行数据更新时,每个存储阵列被擦除的次数相对于现有技术降低了一半,从而能有效地提高闪存的可靠性,并且进一步地可以有效地延长闪存的使用寿命。
需要说明的是,在执行步骤S14时还可以同时擦除原数据存储阵列中对应的扇区,即在将修改后的数据写入第二存储数据阵列200的第二扇区210的同时,擦除第一数据存储阵列100中的第一扇区110。
这样,由于擦除第一扇区110的步骤与写入第二扇区210的步骤同时进行,又可以进一步地缩短从所述闪存中正确读取更新后的数据所需等待的时间。由前述分析可知,在现有技术中,数据更新结束后才可以进行读取操作,因此现有技术中,读取闪存中的数据所需等待的时间大约为5.02ms(即0.02ms、2ms与3ms之和);而在本方案中,读取闪存中的数据所需等待的时间只包括读出与擦除所占用的时间,即大约为3.02ms(即0.02ms与3ms之和),从而进一步地缩短了对闪存中更新后的数据进行读取操作所需等待的时间。
当然,也可以在执行完步骤S14之后,再擦除原数据存储阵列中对应的扇区,即在将修改后的数据写入第二存储数据阵列200的第二扇区210的之后,再擦除第一数据存储阵列100中的第一扇区110。在这种实施方式中,由于所述第一扇区110的数据会保存一段时间,直至第二扇区210中被写入修改后的数据,因此也可以避免由于在数据更新时出现断电而导致的数据丢失。
下面再结合附图对本发明所述闪存的读取单元进行详细说明。为了方便说明,仍然以图3所示闪存为例,但是此不应限制本发明的保护范围。
图6示出了所述读取单元的一种电路结构。在本实施例中,所述读取单元包括:多个第一灵敏放大器、多个第二灵敏放大器以及与多个门电路。为了方便说明,图6仅示出了一个读取单元的结构,该读取单元对应连接第一存储阵列100的第一位线(图3未示出)和第二存储阵列200的第二位线(图3未示出),所述第一位线对应于第一扇区110,第二位线对应于第二扇区210。
如图6所示,所述读取单元包括:第一灵敏放大器300、第二灵敏放大器400以及与门电路500。
所述第一灵敏放大器300,对应连接第一存储阵列100的第一位线(图6未示出),用于感应和放大所述第一位线上的信号变化以得出该位线上的数据Data1,并将得出的数据Data1输出至与门电路500的第一输入端。
所述第二灵敏放大器400,对应连接第二存储阵列200的第二位线(图6未示出),用于感应和放大所述第二位线上的信号变化以得出该位线上的数据Data2,并将得出的数据Data2输出至与门电路500的第二输入端。
所述与门电路500,将接收到的第一输入端的数据Data1和第二输入端的数据Data2进行与逻辑处理,并在输出端输出处理结果。所述处理结果即为所述闪存中存储的数据。这是因为,所述闪存的第一存储阵列100和第二存储阵列200始终只有一个存储阵列用于存储数据,而另一个存储阵列处于被擦除的状态,即所述数据Data1和Data2中有一个始终为“1”,经过与门电路500进行与逻辑后输出的处理结果即为闪存中存储的数据。
图7示出了读取单元的另一种电路结构示意图。本实施例中仍以图3所示的闪存为例进行说明,但是其不应限制本发明的保护范围。如图7所示,所述读取单元包括:位线调整单元600、电流镜单元700、比较单元800以及输出单元900。
所述位线调整单元600,连接第一存储阵列与第二存储阵列对应连接的位线节点VD。具体地,在本实施例中,所述位线调整单元600包括:可变增益放大器A1,以及具有第一端、第二端和控制端的调整晶体管m2。所述可变增益放大器A1的输入端连接位线节点VD,输出端连接调整晶体管m2的控制端;所述调整晶体管m2第一端连接数据线节点VE,第二端连接所述位线节点VD。
所述位线调整单元600,在对闪存进行读取操作时,将所述第一存储阵列100上的位线电流Icell,以及与其相对应的第二存储阵列200上的位线电流Icell′的电流之和输出至数据线节点VE。
所述电流镜单元700,连接所述数据线节点VE,用于对位线调整单元600输出的第一存储阵列100与第二存储阵列200相对应的位线上的电流之和(即Icell和Icell′之和)进行镜像,获得镜像电流,并将所述镜像电流输出至数据节点VF。
具体地,在本实施例中,所述电流镜单元700包括:栅极相连的输入MOS管mr和镜像MOS管m1。所述输入MOS管mr和镜像MOS管m1的源极连接电源VDD;所述输入MOS管mr的漏极与其栅极连接,均连接于所述数据线节点VE,用于输入第一存储阵列100与第二存储阵列200相对应的位线上的电流之和(即Icell和Icell′之和);所述镜像MOS管m1的漏极连接数据节点VF,用于输出镜像电流Im1。
比较单元800,比较电流镜单元700输出的镜像电流Im1与参考电流Iref以得出比较结果,并将所述比较结果输出至输出单元900。具体地,在镜像电流Im1大于参考电流Iref时对数据节点VF进行充电,升高数据电压;在镜像电流Im1小于参考电流Iref时对数据节点VF进行放电,降低数据电压。在本实施例中,所述参考电流Iref为第一存储阵列100的第一参考电流和第二存储阵列200的第二参考电流之和。
输出单元900,基于所述比较单元800输出的比较结果,即数据节点VF上的数据电压,输出对应的输出数据Sout。所述输出单元900包括反相器901和902,所述反相器901和902对接收的数据电压信号进行整形和放大,并最终输出数据Sout。
在本实施例中,将第一存储阵列100与第二存储阵列200相对应的位线上的电流之和(即Icell和Icell′之和)与参考电流Iref进行比较,可以正确地将闪存中存储的数据读出。
本发明虽然以较佳实施例公开如上,但其并不是用来限定权利要求,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。