CN1584856A - 计算机的数据存取方法及其计算机本身 - Google Patents

计算机的数据存取方法及其计算机本身 Download PDF

Info

Publication number
CN1584856A
CN1584856A CN 200410049237 CN200410049237A CN1584856A CN 1584856 A CN1584856 A CN 1584856A CN 200410049237 CN200410049237 CN 200410049237 CN 200410049237 A CN200410049237 A CN 200410049237A CN 1584856 A CN1584856 A CN 1584856A
Authority
CN
China
Prior art keywords
data
block
computing machine
segmentation
nonvolatile memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200410049237
Other languages
English (en)
Other versions
CN1279453C (zh
Inventor
王建发
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Via Technologies Inc filed Critical Via Technologies Inc
Priority to CN 200410049237 priority Critical patent/CN1279453C/zh
Publication of CN1584856A publication Critical patent/CN1584856A/zh
Application granted granted Critical
Publication of CN1279453C publication Critical patent/CN1279453C/zh
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本发明提供一种用于一计算机的数据存取方法及其计算机本身,该计算机包含有一非易失性存储器与一易失性存储器,其中非易失性存储器设有一第一部分与一第二部分,第一部分用来存放该计算机的基本输出入系统。该方法包含有:当开启计算机时,将非易失性存储器内的第二部分的数据储存于易失性存储器中;若使用者欲更新非易失性存储器内的第二部分的数据,则在易失性存储器中进行更新;以及当关闭计算机时,将更新后的数据回存至非易失性存储器中。

Description

计算机的数据存取方法及其计算机本身
技术领域
本发明涉及一种计算机数据存取方法及其计算机本身,特别是涉及一种可利用计算机的闪存储存重要数据并快速存取所述数据的方法。
背景技术
在现代化的今日信息社会,个人计算机(PC,Personal Computer)已经成为大众接触、处理数字信息最重要的平台之一。尤其是近年来,利用精简后的个人计算机架构来实现的信息家电(IA,Information Appiance),更是以其简单易懂的操作方式以及低廉的价格,让数字信息能更深入社会各阶层;即使是一般未受高度计算机操作训练的人,也能轻易操控此类信息家电,达到善用信息、增加知识的目的。
架构规格已为业界熟知、成本低廉、支持资源丰富的的x86个人计算机主机架构是实现个人计算机乃至于信息家电最方便的架构之一。请参考图1。图1为一典型的x86个人计算机10主机架构的示意图。计算机10中有负责数据处理与运算的中央处理器12,易失性的随机存取存储器(RAM,RandomAccess Memory)16,以及用来储存计算机10基本输出入系统的闪存18。北桥电路14A电连于随机存取存储器16与中央处理器12之间,负责两者间的数据交换。
当个人计算机电源一打开时,个人计算机会依据储存于闪存18的基本输出入系统来进行如电源自我测试(power self test)、随插即用测试(plugand play test)乃至于硬件设定(hardware configuration)等等的操作。完成上述的操作后,个人计算机才会加载操作系统(Operating System)软件,而操作系统也才能根据基本输出入系统完成的设定,协调个人计算机中的硬件与相关软件,执行个人计算机的功能。
在已知技术中,储存基本输出入系统的闪存其功能就是专门用来储存基本输出入系统,不会储存其它数据。硬件架构精简的信息家电,所需的基本输出入系统就更小了。如此一来,储存基本输出入系统的闪存就可空出一定的存储空间。但在已知技术中,储存基本输出入系统的闪存仅专门在个人计算机开机时使用,无形中浪费了闪存中多余的存储空间。尤其是对硬件架构很精简的信息家电,不希望使用机械式易受灰尘污染、易磨损及运转噪音高的硬盘。但在另一方面,用来储存基本输出入系统的非易失性闪存其读写速度也比一般易失性的随机存取存储器来的慢,妨碍了此闪存用于储存一般数据的用途。
发明内容
本发明的主要目的在于提供一种应用于个人计算机乃至于信息家电的数据存取方法及相关装置,以有效率地运用储存基本输出入系统的闪存多余的存储空间来储存重要数据。
为了实现本发明的目的,提供了一种用于一计算机的数据存取方法,该计算机包含有一非易失性存储器与一易失性存储器,其中该非易失性存储器设有一第一部份与一第二部份,该第一部份用来存放该计算机的基本输出入系统;该方法包含有:当开启该计算机时,将该非易失性存储器内的第二部份的数据储存于该易失性存储器中;若一使用者欲更新该非易失性存储器内的第二部份的数据,则在该易失性存储器中进行更新;以及当关闭该计算机时,将该更新后的数据回存至该非易失性存储器中。
本发明还提供了一种计算机,其包含有:一非易失性存储器,其设有一第一部份与一第二部份,该第一部份用来存放该计算机的基本输出入系统;一易失性存储器,用来在该计算机运作期间暂存数据;以及一中央处理器,用来控制该计算机;其中当使用者开启该计算机时,该中央处理器将该非易失性存储器内的第二部份的数据复制至该易失性存储器中;若使用者欲更新该非易失性存储器内的第二部份的数据,则在该易失性存储器中进行更新;当关闭该计算机时,该中央处理器将该更新后的数据回存至该非易失性存储器中。
附图说明
图1为一已知计算机的功能方块图。
图2为本发明执行时存储空间配置的相关示意图。
图3为本发明中在开机时进行初始流程的流程图。
图4为本发明在计算机运作过程中存储空间配置的相关示意图。
图5为本发明在关机时执行回写流程的流程图。
图6A为本发明在执行图5中流程时存储空间配置的相关示意图。
图6B为本发明在完成图5中流程后存储空间配置的相关示意图。
附图符号说明
16A随机存取存储器中的存储空间
18闪存
18A基本输出入系统                    18B第二部份
20区块映射表                         21、25项目
24分段映射表
30、32、32A、32B、34、36、36A、36B、36C、38、40、42、42A、42B、
42C、42D、42E、42F、42G、42H、42I、44、46步骤
Free_flag、Bad_flag、Ssector#、w_count、
Update_flag、Block#字段
具体实施方式
本发明可广泛运用于各种计算机系统,像是图1中典型的个人计算机架构而不需要硬盘;而本发明特别适用于硬件结构精简的信息家电。以下就将以本发明运用于图1中的计算机为例,详细说明本发明实施的细节。本发明的特色,就是利用储存基本输出入系统的闪存多余的存储空间,来储存重要的数据,像是计算机使用者个人化的数据,包括上网时的首页地址、电子邮件地址或是最常访问的网站地址等。而本发明另一个重要的特色,则是能快速地存取储存于闪存中的数据。如前所述,闪存存取的速度较慢,且其写入(烧录)数据的次数有限,在计算机操作过程中若频繁地存取,不但效率较低,而且也容易损坏闪存。本发明披露的技术,则是在计算机运作的过程中,以计算机中的随机存取存储器来暂存闪存的数据内容;当使用者要以本发明技术存取储存于闪存多余存储空间的一般数据时,使用者实际上存取的是随机存取存储器,这样不仅存取效率高,也不会损害闪存的寿命。直到使用者关机时,计算机才会将随机存取存储器中暂存闪存的数据回存于闪存中,达到非易失性储存的目的。
为了具体实施本发明的方法,本发明中进一步揭示一存储器管理方法,以管理计算机中的随机存取存储器16与闪存18。请参考图2。图2为本发明开始运作之初,闪存与随机存取存储器配置的示意图。一般来说,闪存18中会有多个区块(block)。闪存要擦除(erase)数据时,都是以一区块为单位;换句话说,在闪存擦除数据时,同一区块中的数据都会被同时擦除。如前所述,在现代的技术下,计算机的基本输出入系统仅须占用闪存18的一部份存储空间;图2中闪存18的第一部份18A,就是闪存18用来储存基本输出入系统的存储空间。闪存18的第二部份18B,则是闪存18多余的存储空间,也是本发明要利用来储存使用者一般数据的存储空间。在这里所讨论的实施例中,第二部份18B可依区块的划分分为多个区块B1、B2、...、B190、B191。在闪存18要擦除数据、存入新数据时,同一区块中的数据会被同时擦除。
为了要管理第二部份18B中的存储空间,本发明以一区块B0来储存一区块映像表20。用来储存区块映像表20的区块B0在标头(Header)处建立一特殊的标示S,用来区分区块B0与其它第二部份中的区块(即区块B1、B2至B191)。针对第二部份18B中的每一个区块,区块映射表20中都包含多个对应的项目21,用来对应地表示各区块的状态,而图2中区块与各项目21间的虚线箭头即代表区块与项目21对应的关系。为了管理各区块,各项目21中较佳地包含有四字段(也可有其它字段记录其它的事项),分别是字段Free_flag、Bad_flag、Sector#以及字段w_count。各项目21中的字段Free_flag代表对应区块中的数据是否可重写(例如字段内容为1则代表没有数据,或代表对应区块中的数据已经没有用处、可以加以重写);字段Bad_flag代表对应区块是否已经不能读写了,即对应区块是否已经损坏;字段Sector#代表的意义容后再述;字段w_count代表对应区块被写入数据的次数。以图2中的例子来说,区块B1存有数据(字段Free_flag为0)、能正常读写(字段Bad_flag为0)、之前曾被写入一次(字段w_count为1)。
为了要在计算机运作期间以随机存取存储器16代替闪存18,在计算机运作期间,随机存取存储器16中也会建置(allocate)一块存储空间16A,用来储存第二部份18B中各区块的数据。因为第二部份中有区块B1至B191可用来储存数据,存储空间16A中也有对应数目的多个分段(sector)S1至S191;每一个分段对应一个闪存中的区块;一分段的存储空间可以和一区块的存储空间相同大小。同样地,为了管理存储空间16A中的各分段,随机存取存储器16中也存有一分段映像表24。对应存储空间16A中的各分段S1至S191,分段映射表24中也有对应数目的项目25(图2中各项目25与各分段间的虚线箭头即代表两者间的对应关系);各项目25中较佳地包含有三个字段,分别是字段Update_flag、Free_flag以及Block#。字段Update_flag代表对应分段的数据是否在计算机运作期间被更新;字段Free_flag代表对应分段是否存有数据;字段Block#则代表对应分段与哪一个区块对应;相对地,区块映像表20中各项目21的字段Sector#则代表各区块B0至B191对应的各分段。在此实施例中,区块B0是用来储存区块映像表20的,在存储空间16A中没有对应的分段,所以区块B0在区块映像表20中对应项目的字段Sector#储存的值是-1。‘
为了要适当地建立存储空间16A与闪存18第二部份18B间的对应关系,在计算机开机时,是以一定的初始流程来建置随机存取存储器中的分段映像表24。请参考图3。图3为计算机开机之初本发明建置分段映像表的流程图。图3中的诸步骤可说明如下。
步骤30:开始。图3中的初始流程会在计算机开机、加载操作系统软件后,但使用者还未开始使用前开始进行。
步骤32:扫瞄闪存第二部份18B中各区块的标头(header)。如前所述,存有区块映射表的区块B0会有特殊的记号S。若发现标头有特殊记号S的区块,则继续进行至步骤32B。若扫瞄完第二部份中的各区块都没发现标头有特殊记号S的区块,表示区块映射表尚未被建立,则继续进行至步骤32A。
步骤32A:由步骤32至此,表示区块映射表尚未建立。在本步骤中就可在随机存取存储器中先建立一区块映像表。如前所述,区块映射表中有对应于第二部份各区块的各项目;各项目中则有各字段。各项目中各字段的初始值可设定如下:字段Free_flag内容为1,表示第二部份18B中的各区块还没有用来储存数据;若字段Bad_flag内容为0,表示该区块未损坏;字段Sector#内容为-1(表示各区块尚不须对应于存储空间16A中的特定分段);字段w_count的内容也是0(表示第二部份各区块也都未曾写入数据)。然后继续至步骤34。
步骤32B:表示区块映射表在至少上一次开机时就已存在,而步骤32也已找出存有区块映射表的区块B0。这样就可由区块B0将区块映像表20读入随机存取存储器,并继续至步骤34。
步骤34:表示区块映像表20已经存在于随机存取存储器中。这样就可在随机存取存储器中建置存储空间16A及各分段S1至S191;同时也可建立分段映射表24。分段映射表24中对应于各分段的各项目25,其字段的初始值设定如下:字段Update_flag为0(表示对应分段的内容未更新);字段Free_flag为1(表示对应分段未储存数据);字段Block#为-1(表示分段未被对应于特定区块)。
步骤36:此步骤针对区块映射表中的每一个项目进行下列子步骤:
步骤36A:检查其各字段;(请注意区块映像表中的一项目即对应第二部份18B中的一区块)
步骤36B:检查逻辑叙述:(字段Free_flag为1)或(字段Bad_flag为1)或(字段Sector#为-1)的逻辑值;若为否,则继续至步骤36C。若为是,则对此项目不进行特定操作,继续检查区块映像表中的下一项目。
步骤36C:由步骤36B到此步骤,表示此项目的字段Free_flag为0(即对应此项目的区块存有有用的数据);字段Bad_flag为0(对应区块未损坏)以及字段Sector#不为-1(表示对应区块不是用来储存区块映像表,而是储存一般数据的)。此时便要将对应此项目的区块的数据加载对应的分段中。由此项目的字段Sector#可知道此项目对应的区块中的数据应该要加载至哪一个分段,如此便可将区块中的数据加载对应的分段中;接下来还要更新对应分段在分段映像表中的项目。因为分段映像表中的每一个项目对应一个分段,项目中的各字段用来储存该分段的相关信息;既然已将区块中的数据存入对应的分段中,那么该分段在分段映像表中对应项目的各字段也应该更新如下:字段Block#更新为对应区块的编号(表示此分段已经存有该区块的数据);字段Free_flag更新为0(代表本分段已经存有数据)。
步骤38:结束。在完成初始化流程后,使用者便可真正开始使用计算机。
请再度参考图2。图2中分段映射表的各字段就是在开机之初,图3初始化流程结束,但使用者尚未开始操作计算机前的可能情形。在图2中已假设区块映像表20已经存在(并存于有特殊记号S的区块B0),故初始化流程中步骤32后就进行步骤32B;步骤34后在进行步骤36时,依照各区块不同的情形,有下列不同的状况。区块B0储存有区块映像表20,所以对应项目中字段Sector#为-1;也因此在步骤36中不会进行至步骤36C。区块B1对应项目的字段Free_flag为0(存有有用的数据)、Bad_flag为0(未损坏)以及字段Sector#为#S1(即代表本区块对应至分段S1),所以步骤36中针对此项目会进行至步骤36C,以将闪存18的区块B1中的数据加载随机存取存储器的分段S1(依照此项目中字段Sector#的记载);而分段S1在分段映射表24中对应的项目,其字段Free_flag也改为0;字段Block#则计入区块B1的编号,表示此分段已经储存了区块B1的数据。在区块B2中,由其在区块映像表20中对应项目的字段可知,区块B2本身未存入数据,或其内的数据为可重写的旧数据,故其字段Free_flag为1,不会进行至步骤36C。由于区块B2对应于分段S2,但区块B2在区块映射表20中对应的项目并不会进行至步骤36C,所以分段S2在分段映像表24中对应项目的各字段也会维持在步骤34中建立的初始值,其字段Update_flag、Free_flag以及Block#分别为0、1、-1。步骤36会对区块映射表20中的每一个项目进行步骤36A、36B,直到所有的项目都进行完毕。如区块B190内有数据,步骤36C中就会将数据存入字段Sector#指定的分段S190;分段S190在分段映像表中对应项目的字段Block#也改为区块B190的编号#B190;字段Free_flag则会改为0。最后,对应于分段S191的区块191中没有数据,所以分段191在分段映像表24中对应项目的字段也维持于步骤34中设定的初始值。
结束本发明开机时在随机存取存储器中安排各分段及分段映像表的初始流程后,使用者便可存取区块中的数据。当然,此时本发明会在操作系统中配合一文件管理程序;使用者通过此文件管理程序,就可将闪存储存基本输出入系统后多余的第二部份当作一存储空间(例如是另一个非易失性的存储器)来使用。以业者熟知的窗口操作系统为例,文件管理程序可将闪存的第二部份在窗口操作系统中显示为另一个磁盘,让使用者可在此磁盘中存取数据。不过,正如前面强调过的,本发明在计算机运作期间,即使使用者通过文件管理程序存取闪存中第二部份的数据,本发明也不会直接读写闪存,而是先以初始流程(见图3)中建置好的存储空间16A的各区段来暂代闪存的第二部份。也就是说,在计算机一般运作期间,当使用者通过文件管理程序存取闪存的第二部份时,文件管理程序实际上是在存取存储空间16A。这样一来,就可以避免直接存取闪存所耗费的时间,进而延长闪存的寿命。
在使用者通过文件管理程序将闪存的第二部份当作一般存储装置存取数据时,文件管理程序会存取存储空间16A,并对应地更新分段映射表24,以反应对存储空间16A存取的情形。若使用者通过文件管理程序要在一区块中存入数据,文件管理程序实际上会把数据存在该区块对应的分段中;在分段映射表中对应该分段的项目,其字段Update_flag会改为1(表示其内容已经更新)、字段Free_flag会设成0(表示对应分段中已有数据)。相对地,若使用者通过文件管理程序要将一区块中的数据删除,文件管理程序实际上是将该区块对应分段中的数据删除;在分段映像表中对应该分段的项目,文件管理程序也会将其下的字段改写而将字段Update_flag设为1(删除也是更新的一种),字段Free_flag设为1(删除数据后已经没有数据了)。
请参考图4。图4为计算机运作期间,本发明中分段映像表24及相关存储配置的示意图。为了说明上述所讨论的在计算机运作过程中文件管理程序运作的情形,此处假设使用者通过文件管理程序要在分段S1、S2中存入数据,并删除分段S190中的数据。如前所述,在计算机运作期间,文件管理程序并不会真的在闪存的第二部份18B中写入或擦除数据,而是在分段中存取或删除数据。要将新的数据存入原先已经有数据的分段S1时(请对照图2),文件管理程序只会将数据先存入分段S1,而在分段映射表24中对应分段S1的项目,其字段Update_flag也会改为1(表示数据已经更新)。同理,若要将数据存入原先没有储存数据的分段S2,文件管理程序只会依据分段映像表24中的记录,将数据先存入对应的分段S2。同时,分段映射表24中,对应分段S2的项目其字段也会改变,原来字段Update_flag为0要改为1;原来Free_flag为0,在存入数据后也要改为1。要删除原先存于区块B190的数据时,文件管理程序会先删除对应区块B190的分段S190中的数据;在分段映射表24中对应分段190的项目,其字段Update_flag也会改为1,字段Free_flag也会改为1(表示已经没有数据了)。其实文件管理程序甚至可以不用删除分段S190中的数据,重要的是改变分段映像表中对应项目的字段,以记录数据更新或删除的情形。
在计算机运作期间,文件管理程序并不会真的读写闪存第二部份18B的区块,只是存取存储空间16A中对应的分段。到了使用者关机时,文件管理程序才会将分段中曾改变的数据,回写至对应区块中。有关详细的实施方法,请参考图5。图5为本发明在关机时执行一回写流程的流程图。回写流程的步骤如下:
步骤40:开始本发明的回写流程。此回写流程是使用者下达关机指令后,但计算机未真正关闭电源、停止运作前开始执行。用来储存区块映像表的区块,其于区块映像表中对应项目的字段Free_flag也要设为1,表示储存区块映像表的区块已经可以被重写。因为区块映像表在计算机运作过程中已改变,原先存于区块中的区块映像表已经可以重写。
步骤42:此步骤是针对分段映射表中的每一个项目来进行下列子步骤。
步骤42A:检查分段映像表中一项目(对应于一分段)的各字段;
步骤4 2B:检查字段Update_flag是否为1。若不是1,表示此项目对应的分段在计算机运作期间未曾更新(未曾存入新数据或删除数据),既然不曾更新也就不须进行接下来的子步骤。若字段Update_flag是1,表示对应分段中的数据在计算机运作期间曾经改变(可能存入了新数据或是将原先的数据删除),要进一步至步骤42C做另外的处理。
步骤42C:检查字段Block#是否为-1。若此字段为-1,表示此一分段对应的区块在开机之前并没有储存数据,而此分段中更新的数据是在计算机运作期间更新的;若此字段不是-1,代表此一分段对应的区块在开机之前就以非易失性的方式储存了数据,并在初始流程(图3)中将数据加载了此分段中。若此字段为-1,进行至步骤42E;若不是-1,则进行至步骤42D。
步骤42D:改变对应区块在区块对应表中的项目,将该项目下的字段Free_flag设为1,字段Sector#设为-1,表示此一分段对应的区块中原本储存有数据,但其内容已在计算机运作期间中更新,所以原本区块中的数据一定要重新回存。在以下的步骤中,本发明会找寻一个写入次数较少的区块,让闪存第二部份中的各区块写入次数能较为平均,达到延长闪存的目的。在此步骤中将对应区块在区块对应表中项目的字段Free_flag设成1,仅是用来表示该区块中的数据是可以重写的(因为该区块中的数据已经更新了)。继续至步骤42E。
步骤42E:判断此项目的字段Free_flag是否为1。若是1表示此分段中的数据虽经更新,但已经没有数据(可能是数据被删除);这样就不必进行进一步处理。相对地,若此字段不是1,表示此项目对应的分段存有更新后的数据,而这数据是要回存至闪存的第二部份的;所以要继续进行至步骤42F。
步骤42F:寻找一未损坏、可以重写且写入次数最少的区块。只要扫瞄区块映像表中各项目,其字段Bad_flag为0(未损坏),字段Free_flag为1(可重写)且字段w_count(写入次数)最少的,就可找到符合条件的区块。
步骤42G:将此项目对应分段的数据写入步骤42F找出的区块,以将该笔数据存于闪存的第二部份中,使其能以非易失性的方式储存。同时,这个在步骤42F中找出的区块,其在区块映像表中对应项目的字段也要加以改变;字段Free_flag要设为0(表示已存入数据),字段Sector#要更新为目前此项目对应的分段,以重新建立区块与分段间的对应关系,字段w_count的值也要累进加1,以表示此区块被写入数据的次数又增加了一次。
步骤42H:进行写入测试,以测试步骤42G是否已将数据正确地写入区块中。此写入测试可以为:直接读取该区块中的数据,与对应分段中原先的数据比对,以了解数据是否已正确地写入区块中。若测试通过,表示对此一项目的处理已经成功,可以继续处理分段映像表中的下一个项目。若测试未通过,就要继续至步骤42I。
步骤42I:步骤42H的写入测试未通过,表示该区块(由步骤42F选出来的区块)已经损坏不能使用。此时要将该区块在区块映像表中对应项目的字段Bad_flag设为1,表示此区块已经损坏。然后继续重试步骤42F,重新寻找一个未损坏、可重写且写入次数最少的区块进行步骤42G、42H。请注意步骤42F至步骤42H会一直重试直到找到一正常未损坏的区块并通过步骤42H的写入测试。
步骤44:在对分段映像表的每一项目进行完步骤42后,最后还要将区块映射表写回闪存的第二部份。此一步骤要先找寻一未损坏、可重写且写入次数最少的区块(如步骤42F)。找到之后要将该区块在区块对应表中对应项目的字段改写:字段Free_flag设为1;字段Sector#为-1;w_conut的写入次数也要累进加1。该区块的标头部份要设定为记号S以标明其为储存区块映像表的区块。最后可将区块映射表写入此一区块。当然,写入之后还要进行如同步骤42H的写入测试,若测试失败也要设定该区块对应的字段Bad_flag,且还要重新寻找未损坏、可重写且写入次数最少的区块。总括来说,此步骤就如同步骤42F、42G乃至42H(及可能进行的步骤42I)。
步骤46:结束。完成上述流程后本发明的回写流程就会结束,而计算机会继续关机程序,将计算机的电源关闭使计算机停止运作。
请继续参考图6A。图6A为图5的回写流程结束步骤42后,即对分段映像表中所有项目执行步骤42下的各子步骤后、但未执行步骤44时,区块映像表及相关存储配置的示意图。图5的回写流程会从分段映像表24的第一个项目开始检查。此项目对应至分段S1,其字段Update_flag为1、Free_flag为0、Block#则记录为区块B1的编号。此项目在步骤42中会进行步骤42B、42C、42D至步骤42E,分别表示:分段S1在计算机运作过程中有更新,其原先的数据是由闪存中的区块B1加载的(既然区块B1中的数据已改变,因此区块B1中的数据可以重写,并将区块B1在区块映像表20中对应项目的字段Free_flag设为1,字段Sector#改为-1),分段S1中尚有数据要回存至闪存中的一区块。因此步骤42F会扫瞄区块映射表以找寻未损坏、可重写、写入次数也最少的区块。此处假设其找到了区块191。在步骤42G中,分段S1的数据就会被实际地写入区块B191中;区块191在区块映像表20对应的项目,其字段Free_flag就会改为0、Sector#则会改为分段S1的编号#S1以记录新的分段-区块间的对应关系,字段w_count也累进加1。以下假设步骤42H的写入测试也顺利通过,步骤42就会继续检查分段映射表24的第二个项目。
对应于分段S2的项目会在步骤42中经过步骤42B、42C而直接到42E(表示分段S2中的数据是在计算机运作期间存入的,并未在初始流程中由对应区块加载)。同样地,分段S2中的数据也要回写至闪存的区块中,所以要进行步骤42F至42H。假设步骤42F找到的区块是区块B0,就可将分段S2中的数据重写至区块B0。另外,区块B0在区块映像表20对应项目的字段也变成:字段Free_flag又改为0(原本区块B0用来储存区块映像表,但在步骤40中已藉由改变区块B0在区块映像表对应项目的字段Free_flag,将区块B0设为可重写的状态)、Sector#设为#S2(重新建立区块与分段间的对应关系),字段w_count则累进为2。同样也假设步骤42H的回写测试通过。请注意区块B0中原先在标头的记号S,用来标示区块B0存有区块映像表,在数据重写的过程中也一并被擦除。
步骤42会针对分段映射表下的每一个项目进行各子步骤。以分段S190对应的项目为例进行步骤42B、42C、42D、到42E结束,表示分段190中原先在初始流程中由区块190加载的数据在计算机运作过程中被删除,所以步骤42D会将区块190在区块映像表20中对应项目的字段Free_flag设为1且字段Sector#设为-1(表示区块190的数据可重写,但不必真的将其擦除,因为下一次再度开机时,区块映射表中字段Free_flag为1的对应区块在图3初始流程的步骤36B中并不会将其数据加载至对应的分段)。最后,进行至对应分段191的项目,既然其字段Update_flag为0,就不必执行处理。
请继续参考图6B。图6B为图5中回写流程进行完步骤44而全部结束后,区块映像表与相关存储配置的示意图。在步骤44中,要依据区块映像表的信息来找寻一未损坏、可重写且写入次数最少的区块来更新闪存中的区块映射表。假设找到的区块为区块B1,其相应字段w_count的值(即写入次数)也累进加1;这样区块映射表就可写入区块B1中,重写区块B1中的旧数据。请注意区块B1的标头还要加上特殊的记号S,表示这是用来储存区块映像表的区块。一旦计算机再度开机,图3的初始流程的步骤32就可找到用来储存区块映像表的区块了。
总括来说,本发明是利用储存基本输出入系统的闪存的多余存储空间,来储存一般数据,较佳地为如使用者个人化的数据。为了避免计算机运作期间对闪存频繁存取所导致的效率降低与对闪存寿命的伤害,本发明在计算机开机之初,会在随机存取存储器中建置一存储空间来代替闪存的多余存储空间;在计算机运作期间对闪存多余存储空间的存取操作,都不会直接在闪存上进行,而是在随机存取存储器中建置的存储空间存取,这样便可避免直接对闪存频繁存取的低效率与伤害。一直到计算机关机时,本发明的技术才会将随机存取存储器建置的存储空间的数据回写至闪存的多余存储空间,达到利用闪存多余存储空间进行非易失性储存的目的。再者,由之前对本发明的详细描述可知,本发明的技术还披露了如何使闪存多余存储空间中各区块的写入次数较为平均(藉图5的步骤42F,将分段中数据重新回存至写入次数较少的不同区块),以增长闪存的使用寿命。在一较佳实施例中,本发明所揭示的文件管理系统较佳地适用于一网络开机的环境,例如通过宽频连网的低成本的信息家电或者公司的局域网络等等,其有利于终端设备的成本进一步降低,延长使用寿命,提升整体运作的效率以及兼顾使用的便利性。
以上所述仅为本发明的较佳实施例,凡依本发明的权利要求所做的均等变化与修饰皆应属本发明专利的涵盖范围。

Claims (16)

1.一种用于一计算机的数据存取方法,该计算机包含有一非易失性存储器与一易失性存储器,其中该非易失性存储器设有一第一部份与一第二部份,该第一部份用来存放该计算机的基本输出入系统;该方法包含有:
当开启该计算机时,将该非易失性存储器内的第二部份的数据储存于该易失性存储器中;
若一使用者欲更新该非易失性存储器内的第二部份的数据,则在该易失性存储器中进行更新;以及
当关闭该计算机时,将该更新后的数据回存至该非易失性存储器中。
2.如权利要求1所述的方法,其中当使用者欲更新该非易失性存储器内的第二部份的数据,是在该易失性存储器中进行更新,而不更新该数据在该非易失性存储器第二部份中对应的数据。
3.如权利要求1所述的方法,其中该非易失性存储器的第二部份包含多个区块,而该非易失性存储器是以区块为单位进行数据储存。
4.如权利要求3所述的方法,其中该易失性存储器中包含有多个分段,所述分段分别对应于该第二部份中的所述区块;当该计算机开启时,将该第二部份中各区块的数据复制至对应的分段。
5.如权利要求4所述的方法,其还包含有:
当该计算机开启时,建立一映射表,用来将该第二部份中的区块对应于所述分段。
6.如权利要求5所述的方法,其中当使用者欲存取该第二部份中一区块的数据时,该计算机根据该映像表而相应存取一对应分段。
7.如权利要求5所述的方法,其中当该关机程序进行时,该计算机根据该映像表更新该第二部份对应的内容。
8.如权利要求5所述的方法,其中该关闭计算机步骤还包含:
根据一特定规则,改写该映像表,以改变所述分段与所述区块间的对应关系;以及
根据该改写后的映像表将所述分段中的数据储存回该第二部份中;
其中该特定规则是将该易失性存储器中数据内容已更新的分段回存至该非易失性存储器中擦除次数较少且操作正常的区块。
9.如权利要求5所述的方法,其中当该计算机关闭时,该计算机根据该映像表将数据内容已更新的区块中的数据更新回该第二部份中。
10.一种计算机,其包含有:
一非易失性存储器,其设有一第一部份与一第二部份,该第一部份用来存放该计算机的基本输出入系统;
一易失性存储器,用来在该计算机运作期间暂存数据;以及
一中央处理器,用来控制该计算机;
其中当使用者开启该计算机时,该中央处理器将该非易失性存储器内的第二部份的数据复制至该易失性存储器中;若使用者欲更新该非易失性存储器内的第二部份的数据,则在该易失性存储器中进行更新;当关闭该计算机时,该中央处理器将该更新后的数据回存至该非易失性存储器中。
11.如权利要求10所述的计算机,其中当使用者欲更新该非易失性存储器内的第二部份的数据,是在该易失性存储器中进行更新,而不更新该数据于该非易失性存储器第二部份中对应的数据。
12.如权利要求10所述的计算机,其中该非易失性存储器的第二部份包含多个区块,而该非易失性存储器是以区块为单位进行数据储存。
13.如权利要求12所述的计算机,其中该易失性存储器中包含有多个分段,所述分段分别对应于该第二部份中的所述区块;当该计算机开启时,将该第二部份中各区块的数据复制至对应的分段。
14.如权利要求13所述的计算机,其中当该计算机开启时,该中央处理器建立一映射表,用来将该第二部份中的区块对应于该分段。
15.如权利要求14所述的计算机,其中当使用者欲存取该第二部份中一区块的数据时,该计算机根据该映像表而相应存取一对应分段。
16.如权利要求14所述的计算机,其中当该关机程序进行时,该计算机根据该映像表更新该第二部份对应的内容。
CN 200410049237 2004-06-08 2004-06-08 计算机的数据存取方法及其计算机本身 Expired - Lifetime CN1279453C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410049237 CN1279453C (zh) 2004-06-08 2004-06-08 计算机的数据存取方法及其计算机本身

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410049237 CN1279453C (zh) 2004-06-08 2004-06-08 计算机的数据存取方法及其计算机本身

Publications (2)

Publication Number Publication Date
CN1584856A true CN1584856A (zh) 2005-02-23
CN1279453C CN1279453C (zh) 2006-10-11

Family

ID=34602137

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410049237 Expired - Lifetime CN1279453C (zh) 2004-06-08 2004-06-08 计算机的数据存取方法及其计算机本身

Country Status (1)

Country Link
CN (1) CN1279453C (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100435118C (zh) * 2005-12-05 2008-11-19 英业达股份有限公司 高速缓存数据回存方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100435118C (zh) * 2005-12-05 2008-11-19 英业达股份有限公司 高速缓存数据回存方法

Also Published As

Publication number Publication date
CN1279453C (zh) 2006-10-11

Similar Documents

Publication Publication Date Title
US11520697B2 (en) Method for managing a memory apparatus
US7769945B2 (en) Method and system for facilitating fast wake-up of a flash memory system
KR100849221B1 (ko) 비휘발성 메모리의 관리 방법 및 비휘발성 메모리 기반의장치
US8402202B2 (en) Input/output control method and apparatus optimized for flash memory
JP4005142B2 (ja) フラッシュメモリ大容量記憶システム
KR100843543B1 (ko) 플래시 메모리 장치를 포함하는 시스템 및 그것의 데이터복구 방법
CA2574756C (en) Systems, methods, computer readable medium and apparatus for memory management using nvram
JP5571691B2 (ja) 記憶装置におけるマッピングアドレステーブルの維持
US20110153976A1 (en) Methods and apparatuses to allocate file storage via tree representations of a bitmap
CN1822217A (zh) 将数据存储在非易失性高速缓冲存储器中的设备和方法
CN1719422A (zh) 一种存储器文件数据虚拟存取方法
US11119912B2 (en) Ordering data updates for improving garbage collection being performed while performing the set of data updates
US10802726B2 (en) Optimized placement of data contained in a garbage collected storage system
WO2016138785A1 (zh) 一种运行进程的方法及装置
US20070005929A1 (en) Method, system, and article of manufacture for sector mapping in a flash device
US8068363B2 (en) Flash memory apparatus and read operation control method therefor
CN1279453C (zh) 计算机的数据存取方法及其计算机本身
WO2008087634A1 (en) A method and system for facilitating fast wake-up of a flash memory system
US20060224817A1 (en) NOR flash file allocation
CN110413235B (zh) 一种面向ssd去重的数据分配方法及系统
KR100982440B1 (ko) 단일 플래시 메모리의 데이터 관리시스템
CN1690983A (zh) 可循序写入数据至闪存中的系统及其方法
US10613973B1 (en) Garbage collection in solid state drives
JP2017146722A (ja) ストレージ装置
Lange et al. SSD Wear Leveling with Optimal Guarantees

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CX01 Expiry of patent term

Granted publication date: 20061011