固态储存装置及其数据保存方法
技术领域
本发明是有关于-种固态储存装置,且特别是有关于一种固态储存装置及其数据保存方法。
背景技术
众所周知,固态储存装置(Solid State Drive,SSD)使用非挥发性内存(non-volatile memory)为主要储存组件。也就是说,当数据写入非挥发性内存后,一旦系统电源关闭,数据仍保存在固态储存装置中。其中,非挥发性内存可为闪存(flash memory)
请参照图1,其所示为电子装置及其固态储存装置的示意图。电子装置50中至少包括一主机12与一固态储存装置10。其中,固态储存装置10包括一控制单元101与一闪存105。而在固态储存装置10外部,控制单元101通过一外部总线20与主机(host)12之间进行控制指令与数据的传递。其中,外部总线20可为USB总线、IEEE 1394总线或SATA总线等等。
再者,主机12可以发出控制命令至固态储存装置10的控制单元101,用以读写闪存105中的数据。其中,电子装置50可为计算机系统、数字相机系统、数字播放系统等等。
举例来说,当主机12发出写入命令与写入地址至控制单元101时,主机12将用户数据(user data)传递至控制单元101。而控制单元101中的错误校正单元(ECC单元,未绘示)会据以产生错误校正码(ECC码),并将用户数据与ECC码一并写入闪存105中。反之,当主机12发出读取命令与读取地址至控制单元101时,控制单元101会由闪存105中读取对应的用户数据与ECC码。而经由ECC单元进行错误校正后,控制单元101将正确的用户数据输出至主机12。
由于非挥发性内存(例如闪存)的制程进步,使得其单价日益降低,而应用的层面也渐广。然而,当非挥发性内存暴露于高温的条件下,其储存数据的正确性也将受到严格的考验。
一般来说,当储存数据长时间记录在非挥发性内存中未被更新,储存数据将有流逝的风险存在。而此风险是不论是在固态储存装置运作时,或是未提供电源时都持续的在进行着。
发明内容
本发明的目的在于提供一种固态储存装置及其数据保存方法,以改进公知技术中存在的缺陷。
为实现上述目的,本发明提供的固态储存装置的数据保存方法,该固态储存装置连接至一主机,包括下列步骤:
于该固态储存装置接收一供应电源时,接收由该主机输出的一现在日期数据;
当该主机产生一控制指令时,执行该主机的该控制指令;其中,当该控制指令为一写入指令时,将一新的储存数据写入一闪存;
当该主机并未产生该控制指令时,读取该闪存中多笔储存数据中的一第一笔储存数据;
比较该第一笔储存数据中的一储存日期数据与该现在日期数据,产生一时间周期;以及
当该时间周期大于一预设周期时,将该现在日期数据更新于该第一笔储存数据后,将更新的该第一笔储存数据写入该闪存的其他位置;
其中,该新的储存数据中至少包括:一用户数据、一错误校正码与该现在日期数据,且该现在日期数据代表该新的储存数据的该储存日期数据。
所述的数据保存方法,其中,该错误校正码与该储存日期数据记录于该闪存的一多余空间中。
所述的数据保存方法,其中,该储存数据为一个页的数据或者一个区块的数据。
所述的数据保存方法,其中,接收由该主机输出的一现在日期数据,是由该固态储存装置发出一读取日期的指令至该主机,使得该主机回复该现在日期数据至该固态储存装置。
所述的数据保存方法,其中,接收由该主机输出的一现在日期数据,是由该主机自行发出该现在日期数据至该固态储存装置。
本发明提供的固态储存装置,该固态储存装置连接至一主机,包括:
一闪存;以及
一控制单元,连接于该主机与该闪存之间,当该控制单元接收一供应电源时,接收由该主机输出的一现在日期数据;当该主机产生一控制指令时,该控制单元执行该主机的该控制指令;且当该控制指令为一写入指令时,将一新的储存数据写入一闪存;且该新的储存数据中至少包括:一用户数据、一错误校正码与该现在日期数据,且该现在日期数据代表该新的储存数据的该储存日期数据;
其中,当该主机并未产生该控制指令时,该控制单元读取该闪存中多笔储存数据中的一第一笔储存数据;比较该第一笔储存数据中的一储存日期数据与该现在日期数据,产生一时间周期;以及,当该时间周期大于一预设周期时,将该现在日期数据更新于该第一笔储存数据后,将更新的该第一笔储存数据写入该闪存的其他位置。
所述的固态储存装置,其中,该错误校正码与该储存日期数据是记录于该闪存的一多余空间中。
所述的固态储存装置,其中,该储存数据为一个页的数据或者一个区块的数据。
所述的固态储存装置,其中,当该控制单元接收该供应电源时,发出一读取日期的指令至该主机,使得该主机回复该现在日期数据至该控制单元。
所述的固态储存装置,其中,当该控制单元接收该供应电源时,该主机自行发出该现在日期数据至该控制单元。
本发明在固态储存装置的待机状态时,可读取储存数据。并根据储存数据中的储存日期数据与现在日期数据来决定该储存数据是否有流失的风险,并进行补救。因此,可以增加储存数据的储存时间,降低储存数据流失的风险。
附图说明
图1所示为电子装置及其固态储存装置的示意图。
图2所示为闪存中储存数据的流失示意图。
图3所示为本发明电子装置及其固态储存装置的示意图。
图4所示为1个8K bytes页的储存数据配置示意图。
图5所示为本发明固态储存装置中的数据保存方法。
附图中主要组件符号说明:
10、310:固态储存装置
12、312:主机
20、320:外部总线
50、350:电子装置
101、301:控制单元
105、305:闪存
S510~S526:步骤
具体实施方式
本发明的固态储存装置的数据保存方法,该固态储存装置连接至一主机,包括下列步骤:于该固态储存装置接收一供应电源时,接收由该主机输出的一现在日期数据;当该主机产生一控制指令时,执行该主机的该控制指令;其中,当该控制指令为一写入指令时,将一新的储存数据写入一闪存;当该主机并未产生该控制指令时,读取该闪存中多笔储存数据中的一第一笔储存数据;比较该第一笔储存数据中的一储存日期数据与该现在日期数据,产生一时间周期;以及,当该时间周期大于一预设周期时,将该现在日期数据更新于该第一笔储存数据后,将更新的该第一笔储存数据写入闪存的其他位置;其中,该新的储存数据中至少包括:一用户数据、一错误校正码与一现在日期数据,且该现在日期数据代表该新的储存数据的该储存日期数据。
本发明的固态储存装置,该固态储存装置连接至一主机,包括:一闪存;以及一控制单元,连接于该主机与该闪存之间,当该控制单元接收一供应电源时,接收由该主机输出的一现在日期数据;当该主机产生一控制指令时,该控制单元执行该主机的该控制指令;且当该控制指令为一写入指令时,将一新的储存数据写入一闪存;且该新的储存数据中至少包括:一用户数据、一错误校正码与一现在日期数据,且该现在日期数据代表该新的储存数据的该储存日期数据;其中,当该主机并未产生该控制指令时,该控制单元读取该闪存中多笔储存数据中的一第一笔储存数据;比较该第一笔储存数据中的一储存日期数据与该现在日期数据,产生一时间周期;以及,当该时间周期大于一预设周期时,将该现在日期数据更新于该第一笔储存数据后,将更新的该第一笔储存数据写入闪存的其他位置。
为了对本发明上述及其他方面有更佳的了解,下文特举较佳实施例,并配合附图作详细说明如下:
请参照图2,其所示为闪存中储存数据的流失示意图。如图所示,当储存数据记录于闪存并经过特定的时间(例如2年)后,其储存数据的回复机率已经小于特定值A(例如95%)。换句话说,当储存数据记录于闪存超过2年之后,可能造成储存数据无法读取的状况发生。而本发明即是为了预防此情况发生的解决方法。
请参照图3,其所绘示为本发明电子装置及其固态储存装置的示意图。电子装置350中至少包括一主机312与一固态储存装置310。其中,固态储存装置310包括一控制单元301与一闪存305。而在固态储存装置310外部,控制单元301通过一外部总线320与主机312之间进行控制指令与数据的传递。其中,外部总线320可为USB总线、IEEE 1394总线或SATA总线等等。
本发明的主要技术特征在于控制单元301中的操作方法。当主机320将用户数据输入至固态储存装置310时,控制单元301会将日期数据对应地储存于闪存305中,并以日期数据来作为后续储存数据是否需要进行数据保存动作的依据。而本发明的详细说明如下:
一般来说,闪存305中包括许多区块(block),而每个区块中又包括多个页(page)。例如,一个区块中有64页,而每个页的容量为8K bytes。再者,由于闪存305的特性,每次写入数据时是以页为最小单位,而每次抹除(erase)时则是以区块为单位进行数据抹除。
请参照图4,其所示为1个8K bytes页的储存数据配置示意图。实际上,在一个8K bytes页的储存数据配置中包含有8K bytes加上324bytes的多余空间(spare area),可规划为4个框(Frame 0~Frame 3),每个框皆为2129Byte。
以第0框为例,其规划包含2K Bytes的用户数据(user data),而81Bytes的多余空间(spare area)可让系统厂商自行运用。根据本发明的实施例,多余空间中包括:75Bytes的错误校正码(ECC码),2Bytes的韧体(firmware)数据,以及4bytes的储存日期数据。换句话说,当控制单元301写入一页的数据至闪存305时,储存数据中至少包括用户数据、ECC码与储存日期数据。而ECC码与储存日期数据记录于多余空间中。
请参照图5,其所示为本发明固态储存装置中的数据保存方法。当固态储存装置接收供应电源(步骤S510)时,先接收由主机输出的现在日期数据(current date information)(步骤S 512)。
接着判断主机是否产生控制指令(步骤S514)时,当主机产生控制指令则执行主机的控制指令。换句话说,当控制指令为写入指令(步骤S516)时,控制单元将一新的储存数据写入闪存(步骤S520)。其中,新的储存数据至少包括:用户数据、ECC码与现在日期数据,且ECC码与现在日期数据系记录于多余空间中。而当新的储存数据写至闪存后,新的储存数据中的现在日期数据即代表该笔储存数据的储存日期数据(stored dateinformation)。另外,当控制指令不为写入指令(步骤S516)时,则控制单元处理其他的指令(步骤S518)。
当判断主机并未产生控制指令时,则此时的固态储存装置为待机状态(idle state),而控制单元读取闪存中多笔储存数据中的一第一笔储存数据,并开始进行该第一笔储存数据的流失风险判断。
首先,读取并比较第一笔储存数据中的储存日期数据与现在日期数据,产生一时间周期(步骤S522)。判断时间周期是否大于一预设周期(步骤S524),当时间周期大于预设周期时,将现在日期数据更新于该第一笔储存数据后,将更新的第一笔储存数据写入闪存的其他位置(步骤S526)。另外,当时间周期并未大于预设周期时,则该第一笔储存数据不做任何处理。其中,在步骤S526所述,将现在日期数据更新于该第一笔储存数据,系将第一笔储存数据中的储存日期数据更改为现在日期数据,并成为更新的第一笔储存数据。
若储存完更新的第一笔储存数据且主机仍未产生控制指令时,比较第二笔储存数据,并判断时间周期是否大于预设周期,而决定是否进行(步骤S526),上述步骤会重复进行直到主机产生控制指令或无法接收供应电源为止。
根据本发明的实施例,一笔储存资料即代表一个页(page)的数据,而ECC码与储存日期数据即记录于一个页的剩余空间内。当然,一笔储存数据也可以是一个区块(block)的资料,而ECC码与储存日期数据即记录于一个区块的剩余空间内。
以一笔储存数据即代表一个页(page)的资料为例。当固态储存装置接收供应电源时,即接收主机输出的现在日期数据。之后,固态储存装置在执行写入命令时,将用户数据写入新的一页中,而在新的一页中至少包括:用户数据、ECC码与现在日期数据。
当固态储存装置处于待机模式时,即开始进行储存数据流失的风险判断并予以补救。根据本发明的实施例,先读取并比较一个页中的储存日期数据与现在日期数据,进而产生一时间周期。如果时间周期大于一预设周期(例如一年半)时,则代表该页中的数据可能会流失。此时,先将此页中的储存日期数据更改为现在日期数据。之后,将此更新的该页数据(用户数据、ECC码与现在日期数据)写入闪存的其他位置。而闪存中,旧的页之位置即被设定为无效页(invalid page),无法再被读取。
由以上说明可知,本发明在固态储存装置的待机状态时,可读取储存数据。并根据储存数据中的储存日期数据与现在日期数据来决定该储存数据是否有流失的风险,并进行补救。因此,可以增加储存数据的储存时间,降低储存数据流失的风险。
再者,固态储存装置获得现在日期数据的方式有很多种。例如,当固态储存装置接收供应电源后,控制单元发出一读取日期的指令至主机,使得主机回复现在日期数据至固态储存装置。或者,当固态储存装置接收供应电源后,主机自动产生现在日期数据至固态储存装置。
由以上说明可知,本发明提出的固态储存装置及其数据保存方法,当固态储存装置将用户数据写入闪存时,将用户数据、ECC码与现在日期数据合并为新的储存数据写入闪存。而新的储存数据当中之现在日期数据即代表该新的储存数据写入的储存日期数据。
于固态储存装置处于待机状态时,将现在日期数据与一笔储存数据的储存日期数据比较,并根据比较的结果来进行该笔储存数据的流失风险判断,并且予以补救。
综上所述,虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明。本领域技术人员在不脱离本发明的精神和范围内,当可作各种更动与润饰。因此,本发明的保护范围应以申请的权利要求范围所界定的内容为准。