闪存的存取方法及闪存装置 【技术领域】
本发明有关于闪存(flash memory),特别是有关于闪存的存取。
背景技术
闪存为一种可由电编程及清除其数据的非易失性内存。闪存主要用来作存储卡及通用串行总线(Universal Serial Bus,USB)装置,以供计算机及其它数字产品的一般性数据储存。闪存的制造成本远低于电气可擦拭可编程只读存储器(Electrically‑Erasable Programmable Read‑Only Memory,EEPROM)的成本,因此成为市场上的主流产品。闪存的应用范围包括掌上型计算机(PDA)、笔记本计算机、数字音乐播放器、数字相机、以及移动电话。
闪存包括多个存储单元(block),每一区块具有一物理地址(physicaladdress),用以储存数据。闪存依据存储单元的物理地址存取存储单元的数据。然而,当一主机欲存取闪存的数据时,主机依据逻辑地址(logical address)存取存储单元的数据。由于逻辑地址与物理地址并不相同,因此必须先转换逻辑地址为物理地址,才能依据物理地址存取闪存的数据。通常系以一地址链接表(address linktable)记录逻辑地址与物理地址的对应关系,以作为逻辑地址与物理地址的转换的依据。
于现有的闪存装置中,通常在初始化闪存时便会建立一地址链接表,以记录闪存的所有物理地址与逻辑地址的对应关系。因此,闪存之每一物理地址都会有一相对应的逻辑地址。当一逻辑地址具有一相对应的物理地址时,该逻辑地址被视为「链接」至(linked to)该物理地址。
然而,现有的闪存装置却有许多缺点。首先,由于闪存的每一物理地址都会有一相对应的逻辑地址,因此存取每一逻辑地址均会导致实际对闪存的区块的数据存取。然而,并非每一逻辑地址均储存有用的数据,闪存大部分的数据储存空间是闲置的,仅储存预定数据(predetermined data)。当主机存取储存有预定数据的逻辑地址时,实际对闪存的区块的数据存取动作会导致系统资源的无益消耗,并造成数据存取时间的延迟。
另外,由于闪存的每一物理地址都会有一相对应的逻辑地址,因此闪存的所有存储单元都可被主机存取,闪存装置的控制器仅可使用预留的存储单元以储存数据。然而,并非每一逻辑地址均储存有用的数据,闪存大部分的数据储存空间是闲置的,仅储存预定数据(predetermined data)。因此,闪存装置的控制器无法使用闪存大部分的闲置的数据储存空间,造成系统资源的浪费。
【发明内容】
有鉴于此,本发明的目的在于提供一种闪存(flash memory)的存取方法,以解决现有技术存在的问题。于一实施例中,该闪存包括多个存储单元(memoryunit),每一该等存储单元具有一物理地址,且一地址链接表(address link table)记录该闪存的多个逻辑地址(logical address)与多个物理地址(physical address)的链接关系。首先,自一主机接收欲写入一第一逻辑地址的一第一数据。接着检查是否该第一数据为一预定数据(predetermined data)。接着检查是否于该地址链接表中该第一逻辑地址链接至一空物理地址(null physical address)。若该第一数据非该预定数据,且于该地址链接表中该第一逻辑地址未链接至该空物理地址,则将该第一数据写入该第一逻辑地址链接至的一第一物理地址所指向的一第一存储单元。若该第一数据非该预定数据,且于该地址链接表中该第一逻辑地址链接至该空物理地址,则更改该地址链接表以建立该第一逻辑地址与一第二物理地址的链接,并将该第一数据写入该第二物理地址所指向的一第二存储单元。
本发明更提供一种闪存装置。于一实施例中,该闪存装置包括一闪存(flashmemory)、一地址链接表(address link table)、以及一控制器。该闪存包括多个存储单元(memory unit),其中每一该等存储单元具有一物理地址。该地址链接表记录该闪存的多个逻辑地址(logical address)与多个物理地址(physical address)的链接关系。该控制器自一主机接收欲写入一第一逻辑地址的一第一数据,检查是否该第一数据为一预定数据(predetermined data),并检查是否于该地址链接表中该第一逻辑地址链接至一空物理地址(null physical address)。若该第一数据非该预定数据且于该地址链接表中该第一逻辑地址未链接至该空物理地址,则该控制器将该第一数据写入该第一逻辑地址链接至的一第一物理地址所指向的一第一存储单元。若该第一数据非该预定数据且于该地址链接表中该第一逻辑地址链接至该空物理地址,则该控制器更改该地址链接表以建立该第一逻辑地址与一第二物理地址的链接并将该第一数据写入该第二物理地址所指向的一第二存储单元。
为了让本发明的上述和其它目的、特征、和优点能更明显易懂,下文特举数较佳实施例,并配合附图,作详细说明如下:
【附图说明】
图1为依据本发明的闪存装置的区块图;
图2为依据本发明的地址链接表的一实施例的示意图;
图3为依据本发明的将数据写入闪存装置的方法的流程图;
图4为依据本发明的自闪存装置读取数据的方法的流程图;以及
图5为依据本发明的重新建立地址链接表的方法的流程图。
【具体实施方式】
图1为依据本发明的闪存装置104的区块图。闪存装置104为主机102储存数据。闪存装置104包括一控制器106以及一闪存108。闪存108包括多个存储单元122~128,用以储存数据。存储单元122~128可为区块(block)、页(page)、或区段(sector)。每一存储单元具有一对应的物理地址(physical address),而闪存108的存储单元依据对应的物理地址进行存取。控制器106自主机接收存取命令及逻辑地址(logical address),将逻辑地址转换为物理地址,并依据存取命令存取对应于物理地址的闪存108的存储单元。于一实施例中,快闪存储108为一NAND型闪存。
一地址链接表(address link table)记录闪存108的多个物理地址与多个逻辑地址的链接关系。因此。控制器106可依据地址链接表进行逻辑地址与物理地址的转换,或决定相链接的逻辑地址与物理地址。地址链接表由控制器106进行初始化及修改。于一实施例中,地址链接表储存于闪存108中。于另一实施例中,地址链接表储存于控制器106中。现有技术中的闪存的每一逻辑地址都会于地址链接表中存在有一相对应的物理地址。
然而,于依据本发明的地址链接表中部分逻辑地址可能不存在有相对应的闪存108的物理地址。此时,该等逻辑地址于地址链接表中被链接或对应至一空物理地址(null physical address)。于一实施例中,空物理地址为全由位0组成的物理地址,或全由位1组成的物理地址。此外,于初始化地址链接表时,控制器106会将地址链接表中的所有逻辑地址链接至空物理地址。图2为依据本发明的地址链接表200的一实施例的示意图。由图中可见,逻辑地址LBA1、LBA3分别被链接至物理地址PBA1、PBA3,因此逻辑地址LBA1、LBA3都具有相对应的物理地址。然而,逻辑地址LBA0、LBA2、LBAN皆被链接至空物理地址Null,因此逻辑地址LBA0、LBA2、LBAN不具有相对应的物理地址。
图3为依据本发明的将数据写入闪存装置104的方法300的流程图。首先,控制器106自主机102接收欲写入一逻辑地址的一新数据(步骤302)。接着,控制器106检查是否该新数据为一预定数据(步骤304)。其中预定数据为一预定的数据串,用以表示无意义的数据。于一实施例中,该预定数据为全由位0组成的数据串或全由位1组成的数据串,或是01010交错,可以自行定义。接着,控制器106检查是否于地址链接表中该逻辑地址链接至空物理地址(步骤312、306)。
若该新数据非该预定数据,则该新数据为有用的数据。此时,假使于地址链接表中欲写入的逻辑地址未链接至空物理地址,则控制器106可依据地址链接表找到逻辑地址链接至的一物理地址所对应的存储单元。因此则控制器直接将新数据写入该逻辑地址链接至的物理地址所指向的存储单元(步骤310)。反之,假使于地址链接表中欲写入的逻辑地址链接至空物理地址,则控制器106无法依据地址链接表找到逻辑地址链接至的物理地址。因此,控制器106更改地址链接表以建立该逻辑地址与一物理地址的链接(步骤308),再将新数据写入该逻辑地址链接至的物理地址所指向的存储单元(步骤310)。
若该新数据为该预定数据,则该新数据为无意义的数据。此时,假使于地址链接表中欲写入的逻辑地址链接至空物理地址,则主机102系要求将无意义的数据写入无用的地址,因此控制器106不进行任何动作。因此则控制器直接将新数据写入该逻辑地址链接至的物理地址所指向的存储单元(步骤310)。如此,便不需实际存取闪存108的区块,而可以减少系统资源的浪费。换句话说,如果可以事先得知主机102送来的数据大部份是全1,那么定义全1的数据为预定数据而不实际写入闪存108,可以省下很多操作时间。反之,假使于地址链接表中欲写入的逻辑地址未链接至空物理地址,则控制器106可依据地址链接表找到逻辑地址链接至的一物理地址所对应的存储单元。此时,主机102要求将无意义的数据写入物理地址,指示控制器102去除该逻辑地址与对应的物理地址间的链接关系。由于闪存108的每一存储单元有储存其物理地址所链接的逻辑地址,因此控制器106先清除该逻辑地址链接至的物理地址所指向的存储单元中记录的该逻辑地址(步骤314),再更改地址链接表以使该逻辑地址链接至空物理地址(步骤316),以解除该逻辑地址与对应的物理地址间的链接关系。
图4为依据本发明的自闪存装置104读取数据的方法400的流程图。首先,控制器106自主机接收欲读取的一逻辑地址(步骤402)。接着,控制器106检查是否于地址链接表中该逻辑地址链接至一空物理地址(步骤404)。假使于地址链接表中欲读取的逻辑地址链接至空物理地址,则控制器106无法依据地址链接表找到逻辑地址链接至的物理地址。因此,控制器106直接递送一预定数据至主机102(步骤406)。如此,便不需实际存取闪存108的区块,而可以减少系统资源的浪费。假使于地址链接表中欲读取的逻辑地址未链接至空物理地址,则控制器106可依据地址链接表找到逻辑地址链接至的物理地址所对应的存储单元。控制器106接着读取该逻辑地址链接的物理地址所指向的存储单元以得到一新数据(步骤408),并递送该新数据至主机102(步骤410)。
当闪存装置104突然断电时,有时其中所储存的地址链接表会因而损毁,便需要重新建立地址链接表。图5为依据本发明的重新建立地址链接表的方法500的流程图。首先,控制器106清除地址链接表中所有的逻辑地址所对应的物理地址,以使所有的逻辑地址链接至空物理地址(步骤502)。接着,控制器106自闪存108读取一目标物理地址所指向的存储单元(步骤504)。若读取该存储单元可得到该存储单元所记录的该目标物理地址所对应的一目标逻辑地址(步骤506),则控制器106于该地址链接表中记录该目标逻辑地址与该目标物理地址的链接(步骤508)。接着,若控制器106尚未对闪存108的所有物理地址读取完毕(步骤510),则控制器106自闪存108的所有物理地址中选取另一物理地址作为该目标物理地址(步骤512),并重复执行步骤504~510,直到闪存108的所有物理地址均已被读取(步骤510)。
本发明提供了一种闪存的存取方法。于依据本发明的地址链接表中部分逻辑地址可能不存在有相对应的闪存的物理地址。此时,该等逻辑地址于地址链接表中被链接或对应至一空物理地址。当被链接至空物理地址的逻辑地址愈多,闪存未链接至逻辑地址的物理地址便愈多,这些物理地址对应的区块便可供控制器储存数据之用。此外,主机可藉将预定数据写入一逻辑地址,以解除该逻辑地址与一物理地址的链接关系。最后,当主机写入或读取链接至空物理地址的逻辑地址,控制器不会实际存取闪存,从而节省了系统的资源。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明,任何熟习此项技术者,在不脱离本发明的精神和范围内,当可作些许的更动与润饰,因此本发明的保护范围当以权利要求所界定的为准。