CN1238846A - 对非易失性存储器中的文件进行连续重写的方法 - Google Patents
对非易失性存储器中的文件进行连续重写的方法 Download PDFInfo
- Publication number
- CN1238846A CN1238846A CN97180136A CN97180136A CN1238846A CN 1238846 A CN1238846 A CN 1238846A CN 97180136 A CN97180136 A CN 97180136A CN 97180136 A CN97180136 A CN 97180136A CN 1238846 A CN1238846 A CN 1238846A
- Authority
- CN
- China
- Prior art keywords
- sector
- piece
- frame
- file
- data
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7202—Allocation control and policies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/72—Details relating to flash memory management
- G06F2212/7205—Cleaning, compaction, garbage collection, erase control
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Read Only Memory (AREA)
Abstract
用一个具有一组可个别删除的块的非易失性存储器来存储文件的扇区。一种重写文件的方法包括:接收数据帧的步骤(320);确定该帧要写入的逻辑扇区(330),该逻辑扇区对应于位于非易失性存储器的第一个块中第一个位移地址的第一个扇区(330),第一个块也有一个关联的第一个逻辑块号(330);将该数据帧写到第二个扇区(240),第二个扇区位于备用块中的第二个位移地址(340)。第一个和第二个位移地址相同(340)。将备用块的逻辑块号更新为与第一个逻辑块号相同。
Description
本发明涉及计算机***的文件存储领域。更具体地说,本发明旨在介绍对采用基于扇区的文件管理***的固态存储器中存储的文件进行重写的方法。
计算机***通常有某种形式的非易失性海量存储器。计算机的操作***负责与海量存储器通讯,以便在海量存储器中创建、删除、修改或追加文件。数据是通过向海量存储器内文件的写入而在磁盘上存储的。
机电式硬驱是计算机***经常采用的非易失性海量存储器的一种类型。机电式硬驱有一个或多个圆形磁盘片或磁盘。这些圆形磁盘片包括用于存储数据的磁性存储介质。将这些磁盘片划分成许多同心圆圈,称为磁道。还将这些磁盘片辐射状地划分,将磁道进一步分割成许多扇区。这样,磁盘片有多个磁道,其中每个磁道有多个扇区。
每个扇区均有一个预定的编号供计算机***引用。一个在机电式硬驱中存储的文件可能占据着许多扇区。与该文件关联的扇区(即文件扇区)可以位于一个或多个磁盘片上,关联的扇区不必连续编号,扇区之间也不必相邻。一旦创建一个文件后,就可以通过向文件追加新数据而存储数据。这样做的结果通常是,由于要为文件分配额外的扇区而使文件的大小扩大。
某些应用仅需要修改预先存在的文件,而不是向预先存在的文件追加数据。例如,考虑一个只要求存储一个数据“窗”的应用。任何时候,只有固定数量的数据必须存储。不是连续地将新数据追加到文件并因而提高该文件的存储要求,而是用当前的数据窗重写文件的部分。这样,例如一旦在机电式硬驱上为该数据窗分配了足够的文件空间,文件或文件的部分就可以连续地由输入数据重写,使文件或文件的某些部分代表着当前的数据窗。将一扇区的新数据用于修改在同一扇区中存储的较旧数据。如果机电式硬驱几乎充满数据时,这种技术特别有用。
固态磁盘提供能替代机电式硬驱的海量存储。固态磁盘一般使用非易失性半导体存储器来提供海量存储。不过,为了保持与机电式硬驱的兼容,固态磁盘通常支持相同的基于扇区的文件存储方案,以便计算机***能够查阅编号的扇区来在固态磁盘中存储或检索数据。
与机电式硬驱不同的是,固态磁盘的非易失性存储器通常在重新编程之前必须删除内容。这样,为了改变在存储器的某部分存储的数据,首先必须删除该存储器部分的内容。然而对于某些非易失性存储器来说,删除操作会占用相当长的时间。
为了在固态磁盘上获得与机电式硬驱相当的操作性能,一种更新文件扇区的技术将新的扇区数据写到非易失性存储器内的另一个位置。将扇区写到非易失性存储器内不同位置的一个缺点是,需要一个扇区映射表,才能跟踪到当前扇区的位置。每当扇区被再定位,扇区映射表就需要更新。
为了释放存储空间,旧数据最终要在一个后台清理过程中删除。后台清理过程允许将删除操作推迟到删除不会对非易失性存储器的有效编程或写时间造成不利影响的某个时刻。
推迟的删除过程可能适合某些应用,例如向固态存储器断续进行的数据传输,然而,上述的推迟删除过程对于正被连续重写的文件来说可能并不适合。特别是,如果后台清理过程推迟时间过长,就只有执行一个前台清理过程才能释放非易失性存储器中的其它空间。
在前台清理过程执行期间,输入数据要么必须临时在别处存储,要么忽略。忽略数据的结果是数据丢失,这是应当避免的。配置相对较大的临时存储空间会增加固态驱动器的体积和费用。此外,如果临时存储器容量不足,则一旦数据量超出临时存储器容量,就会导致数据丢失。
因此,需要一种对非易失性存储器中存储的数据进行连续重写的方法。
鉴于已知***和方法的局限,本发明提供一种对非易失性存储器中存储的数据进行重写的方法。该方法包括接收一个数据帧的步骤。先确定该帧要写入的逻辑扇区。该逻辑扇区对应于位于第一个块中第一个位移地址的第一个扇区。第一个块有一个关联的逻辑块号。第一个扇区当前存储着文件的一部分。该帧被写到位于备用块中第二个位移地址的第二个扇区。第二个位移地址的选择要使第一个和第二个位移地址相同。将备用块的逻辑块号更新为第一个块的逻辑块号。
另一个重写文件的方法包括使用一个额外开销区来避免在块回收期间丢失输入数据。在接收一组数据帧之后,至少将一个帧存储到非易失性存储器的一个额外开销区中。确定该帧要写向的逻辑扇区。该逻辑扇区对应位于非易失性存储器的第一个块中第一个位移地址的第一个扇区。第一块有第一个逻辑块号。要重写的文件的一部分当前被存储在第一个扇区。然后,第一个帧被从额外开销区拷贝到第二个扇区。第二个扇区位于非易失性存储器的备用块中第二个位移地址上。第二个位移地址的选择要使第一个和第二个位移地址相同。对于在额外开销区中存储的每个后继帧,如果该后继帧要写到的逻辑扇区对应于物理上位于第一个块中的任何扇区,则重复上述过程。将备用块的逻辑块号更新为第一个块的逻辑块号。
从各附图和以下的详细说明中,本发明的其它特征和优点将是明显的。
本发明是通过举例说明的,但并不局限于各附图的图形,各附图中用同样的标号表示相同的元件,其中:
图1表示一种重写机电式硬驱中存储的文件的方法。
图2表示另一种重写机电式硬驱中存储的文件的方法。
图3表示重写非易失性存储器中存储的文件时所用的一种方法。
图4表示图3方法的应用。
图5表示回收作过清理标记的块的方法。
图6表示图5方法的应用。
图7表示一种对非易失性存储器中存储的文件进行连续重写的方法。
图8表示对额外开销区中存储的扇区进行重定位的方法。
支持机电式硬驱的操作***通常使用基于扇区的管理文件方案。用户或单个应用程序在机电式硬驱上读写数据时通常不直接牵涉到扇区号。通常,操作***支持用文件指针来定位或标识文件的特定扇区。所以操作***负责将扇区号传递给机电式硬驱,以存储或检索与文件关联的数据扇区。
操作***一般使用某种类型的分配映射表来定位与给定文件关联的所有扇区。有一类基于扇区的文件***使用文件分配表(FAT)来跟踪与特定文件关联的扇区。FAT是由分配单元组成的表,通常存储在机电式硬驱中的某个预定位置。该分配单元是可向文件分配的最小量。分配单元可以与扇区一样小。因为FAT存储在机电式硬驱中的预定位置,所以FAT只允许有一个固定的最大条目数。然而,为了适应有更多扇区的更大磁盘,要增加每个可分配单元的扇区数,使一个可分配单元有一簇扇区组成。FAT实际上起着索引的作用,指示哪些扇区与给定的文件关联。
FAT的使用,允许文件去使用物理上不成组的扇区。当创建文件时,操作***为存储该文件而在磁盘上搜寻可用的空间。如果有足够的邻接存储位置可用,操作***就这样在硬盘上存储文件,使得文件使用可连续访问的存储扇区。否则,哪里有空间,操作***就将文件一部分一部分地存储在哪里,直到文件完全存储到磁盘。FAT有助于映射磁盘上文件的位置。为了从磁盘检索文件,要用FAT来定位与文件关联的扇区。然后将这些扇区“链接”在一起,以从磁盘检索该文件或该文件的部分。
当文件被创建、修改或删除时,单个文件会变得“碎片化”,文件不再连续地存储在磁盘上。操作***必要时将把文件分成片断,这是为了将文件存储到散布在硬盘上的空间中。分配映射表和扇区号的使用使对机电式硬驱上存储的文件的检索、存储和修改成为可能。
一种可以替代机电式硬驱的海量存储介质是固态磁盘。固态磁盘包含某种形式的非易失性存储器。固态磁盘中使用的一种非易失性存储器是浮栅(floating gate)电子可擦写可编程序式只读存储器(快闪EEPROM或快闪存储器)。
快闪存储器单元的删除方法是将浮栅上的净电荷减少到预定的阀值以下。按照常规,称被删除的单元存储一个二进制“1”。当其净电荷超过预定阀值时,设置快闪存储器单元的程序。按照常规,称程序设置过的单元存储一个二进制“0”。快闪存储器单元如果不先删除就不能重新程序设置,有一个例外。任何时候都能通过向浮栅增加电荷而将快闪存储器单元程序设置为“0”。
快闪存储器通常被划分为可单独删除的块。每个块中包含许多快闪存储器单元单元。尽管每个块可以单独被删除,要删除给定的快闪单元则只有删除其整个块。因此,要重新程序设置一个快闪单元,必须首先删除整个单元块。
对于机电式硬驱来说,操作***可能会要求驱动器控制器提供由特定扇区号标识的扇区的数据。因为非易失性存储器不是机电式硬驱,所以需要有翻译机构将扇区号翻译成非易失性存储器的物理地址。在一个实施例中,这种翻译是用软件完成的,称为快闪翻译层(FTL)。FTL允许固态磁盘模拟机电式硬驱,使得支持机电式硬驱的操作***能够继续将基于扇区的文件***,用于包含非易失性存储器诸如快闪存储器的固态磁盘。
除了创建文件时为文件分配空间之外,操作***还必须处理对预先存在的文件的修改。如上所述,支持机电式硬驱的操作***通常使用基于扇区的方案来管理文件。特别地,操作***支持使用文件指针来定位或标识与要修改的数据关联的特定扇区。该扇区然后就能用更新数据重写。
因为快闪存储器需要的删除时间相对较长,所以,采用逻辑扇区寻址方案而不是物理扇区寻址方案。换言之,在扇区号和非易失性存储器的物理地址之间并没有固定的对应关系,如果旧的扇区数据已经存在,扇区的新数据将被写向一个新的物理位置。旧的扇区数据然后被标记为无效,这样它随后就能在回收过程中被恢复。所以扇区号是“逻辑的”而不是物理的,因为同一个扇区号,随着时间的推移,可能会访问不同的物理地址。需要一个扇区映射表才能跟踪与逻辑扇区号关联的当前物理位置。在一个实施例中,FTL处理对扇区映射表的管理。一个块中可以含有混合的扇区,有的扇区含有有效数据,有的扇区含有无效数据。
所以在主计算机***看来,固态磁盘就像是一种连续分扇区的介质。然而FTL对操作***透明地重定位扇区,使得扇区号不再永久地与特定的物理地址范围相关联。FTL采用扇区映射表来跟踪逻辑-物理关系。
在一个向固态磁盘写数据的方法中,新数据被写到固态磁盘内的现有自由空间。旧的数据被就地删除。一旦固态磁盘超出被删除数据的预定阀值,就必须在前台执行回收操作,以便释放与被删除数据关联的存储区。在回收过程中,要用一个备用块来存储已调度作清理的块中的有效数据扇区。所调度的块已经超出被删除数据的预定阀值.所安排的块内的有效扇区从所安排的块拷贝到备用块,以便能删除所安排的块,腾出更多的存储空间。
只有当通过回收被删除数据占用的空间,固态磁盘能增加可用空间时,才能使用上述技术。一旦固态磁盘充满数据,没有被删除的数据,就不能用上述技术来向磁盘写入新数据,即使是修改文件而不是向文件追加数据。
某些应用适合通过修改文件而不是追加文件数据来更新预先存在的文件。例如考察一个只需要保持一个数据“窗”的应用。只要文件大得足以容纳所需的数据窗,那么就能用新数据来替换旧数据,文件的长度并不需要扩展。文件或文件的部分按照需要重写。例如,考察一个接收并存储缓冲器中数据帧的应用。数据从缓冲器中提取,用于重写所存储文件的部分。
图1表示一种对机电式硬驱中存储的文件进行重写的方法的流图。在这个实施例中,重写操作可以从文件内任何选定扇区开始,一直继续到到达文件的结尾。
在步骤110,进行一次查找,将文件指针置于待重写的第一个扇区。然后在步骤115重写该扇区。步骤120判断是否还有数据要写入。如果没有,则过程在步骤150结束。否则过程继续执行步骤125。
在步骤125,定位下一个待重写的扇区。在这个实施例中,如果到达文件尾部时,重写过程就停止。因此,步骤130判断文件指针是否到达文件尾部(即没有“下一个扇区”)。如果到达文件尾部,则在步骤140生成一个文件尾部(EOF)错误,于是过程在步骤150结束。
如果文件指针不在文件尾部,则在步骤135进行一次查找,将文件指针置于下一个待重写的扇区。然后过程继续,在步骤115重写该扇区。
图2表示另一种对机电式硬驱中存储的文件进行重写的方法的流图。在这个实施例中,重写操作可以从文件内任何选定的扇区开始,一直继续到到达文件结尾。然而在到达文件结尾时,并不生成错误信息,而是以下文所述方式继续对文件的第一个扇区进行重写。
在步骤210,进行一次查找,将文件指针定位,选择待重写的第一个扇区。然后在步骤215重写该扇区。在步骤220进行测试,判断是否还有要写入文件的数据。如果没有,则过程在步骤250结束。否则过程继续执行步骤225。
在步骤225,定位下一个待重写的扇区。步骤230判断文件指针是否到达文件尾部。但是与图1的实施例不同的是,在到达文件尾部时,重写过程并不停止。如果在步骤230测得到达文件尾部,则通过进行一次查找,找到文件中的第一个扇区,将文件指针重定位。然后,重写过程转移到步骤215,从文件的开始继续进行。
如果步骤230的结果是文件指针不在文件尾部,则在步骤235进行一次查找,将文件指针置于下一个待重写的扇区。然后在步骤215重写该下一个扇区。
然而如上所述,某些固态磁盘使用只有先删除才能重新程序设置的非易失性存储器。这意味着不能如图1和2所示的那样简单地对扇区进行定位和重写。
为了对非易失性存储器中的基于扇区的文件进行连续的重写,对图1的定位和重写步骤作了修改。特别地,较新数据的存储,其方式有助于使在块回收期间的“再工作”量最小化。回收过程在尽可能地“就地”执行。这有助于消除强制前台清理的瓶颈。此外,这还有助于在为了释放更多空间而必须回收块时,使容纳输入数据的所需的额外开销量最小化。
图3表示重写非易失性存储器中存储的文件的核心步骤。这些步骤可以应用于其中重写过程在文件结尾处停止的应用,也可以应用于当到达文件结尾时重写过程返回到被重写文件的开始的应用,这两种应用分别如图1和2所示。
该过程在步骤310开始。在步骤320,接收一个数据帧。在步骤330,判定该帧数据要写入的扇区。该帧数据代表应当位于该物理扇区中的当前数据。这个方法并不使用总是与特定物理地址对应的物理扇区号,而是使用逻辑扇区号。数据帧要写入的逻辑扇区号对应位于第一个块中第一个位移地址处的第一个物理扇区。第一个块也有一个关联的第一个逻辑块号。这样在步骤330,就判定了帧数据要写入的逻辑扇区号。
如上所述,非易失性存储器在删除之前是不能程序设置的。因此,帧数据被写入与第一个块关联的备用块。这样在步骤340,帧数据被写入位于备用块中第二个位移地址处的第二个物理扇区。所选择的第二个位移地址等于第一个位移地址。这样将帧数据写入备用块后,被替换的数据和帧数据分别位于第一个块和备用块中完全相同的位置。
图3所示的例子假定只有一个扇区被更新。写入帧数据后,要在步骤350将备用块的逻辑块号更新为与第一个逻辑块号相同。将第一个块标记为无效,以避免因为有两个逻辑块号相同的块而发生的错误。其实现方法是,例如向备用块的块状态区程序设置一个值。因为逻辑扇区对应于位于备用块中与位于第一个块中旧物理扇区的位置相同的物理扇区,所以不需要更新扇区映射表。
图4表示图3中所示方法的应用。特别地,块410(即逻辑块号4)存有当前的逻辑扇区号63。备用块450是与块410关联的备用块。环形帧缓冲器中包括一系列需要在固态磁盘中存储的数据帧。
按照图3的步骤330,判定帧数据待写入的逻辑扇区号。通常,磁盘操作***提供数据待写入的扇区号。例如,帧472要写入逻辑扇区号63。与逻辑扇区号63对应的物理扇区,在删除之前是不能程序设置的。
当前与逻辑扇区号63关联的物理扇区是块410中的物理扇区412。物理扇区412位于块410中的位移地址430。按照图3中所述的方法,帧472被写入备用块450的物理扇区452。物理扇区452位于备用块450中,其位移地址与物理扇区412在块410中位于的位移地址相同。逻辑扇区63现在对应于物理扇区452。
逻辑块号的使用,以及逻辑扇区被重定位到备用块内相同的位移地址这个事实,消除了每一次推迟删除时更新扇区映射表的必要性。
尽管逻辑块号4的较新数据正被存入备用块450,含有较旧数据的扇区在删除块420之前却不能再被使用。在本例中,块410中的扇区8、5和63已经用数据更新过。然而,扇区332、135、5、684和561却代表了尚未被备用块中更新后的数据替换的有效扇区。用一个回收过程从块410中回收有效扇区,使得不再被扇区8、5和63需要的空间释放出来,用于存储其它输入数据。这个过程称为清理过程。扇区8、5和63被更新之后,对块410作清理调度。
在一个固态磁盘的实施例中,存储器的每个块都包括一个或多个扇区的数据。随着时间的推移,一个块最终会达到含有较旧数据的扇区的阀值水平。为了回收存有较旧数据的空间,整个块都必须删除。如果块存储着一个以上扇区的数据,那么,在删除操作之前必须将块中的有效扇区拷贝到另一个块。
这是通过从被调度作删除的块(源块)拷贝有效扇区并将被拷贝数据写到另一个块(目标块或备用块)而完成的。被拷贝数据即使存储到另一个块也使用相同的逻辑扇区号。源块或源块内的扇区被标记为无效,以防止可能中断删除过程的操作向较旧的扇区写入数据。源块然后被删除。
因为没有为给定扇区号永久地分配物理存储器部分,所以清除过程可以被推迟并优先化,使得它只有在针对从计算机***接收的挂起的读写命令、固态磁盘的性能不会受到不利影响时才被执行。在这种情况下,清理过程被作为后台过程执行。
通常,写操作比删除操作有更高的优先权,这是为了使删除操作推迟,从而为写操作获得更快的响应。这样,即使清理过程当前正在执行,待执行的写操作也会导致清理过程被中断,从而使待执行的写操作得到执行。写操作进行之后,清理过程就可以在后台继续进行。
然而,如果磁盘没有充足的可用空间,则只有先执行一个前台清理过程,然后才能向磁盘写入其它数据。这样就不能使写操作比删除操作更优先,因为没有可用空间用于写操作。
如果前台清理过程正在执行,则输入数据就必须临时存储到另一个位置。所需的临时数据空间量的大小与许多因素有关,包括执行前台清理过程所需的时间和输入数据的速度。临时数据被存储在存储器的额外开销区。
为了恢复被含有无效数据的扇区使用的空间,要将作了清理调度的块(源块)中的有效扇区拷贝到备用块。然后将源块删除,净恢复被源块中含有无效数据的扇区占用的空间。
图5表示用一个关联备用块清理作过清理一个块(例如“第一个块”)的过程,该过程始于步骤510。第一个块有一个第一逻辑块号。
在步骤520,确定第一个块中一个有效扇区的位置。在步骤525,将该有效扇区从第一个块拷贝到备用块。拷贝后的有效扇区在备用块中的位置,要与其原来在第一个块中的位置相同(即位于相同的位移地址)。
在步骤530,将第一个块中的有效扇区副本标记为无效。在一个实施例中,这是通过修改扇区的首部或脚注区中的状态位而完成的。在另一个实施例中,通过修改备用块或第一个块的块状态区来指示,备用块代表其中存储的最新逻辑扇区。
在步骤540,进行测试,判断第一个块中是否存在另一个有效扇区。步骤525、530和540一直执行到第一个块中再没有有效扇区。
如果在步骤540中,在第一个块内找到另一个有效扇区,则步骤545判断是否应当响应一个更高优先权的功能。步骤545实际起着中断窗口的作用,它能使后台回收过程中断,以便处理优先权更高的功能,例如存储新的输入数据帧。
如果必须响应具有更高优先权的功能,则过程进入步骤580,使后台处理延迟。否则,步骤545进入多骤525,继续该标志清块的回收过程。
如果步骤540确定第一个块中不再有有效扇区,则在步骤550,将第一个块的逻辑块号分配给备用块。在下一个步骤560,第一个块被删除。然后在步骤570完成回收过程。在步骤580,回收过程退出。现在,原来的第一个块就可以在回收其它块时用作备用块。
图6表示图5方法的应用,该图以块610作为第一个块,以块620作为备用块。逻辑扇区8、5和63已经通过重写过程被更新过,现在分别与物理扇区652、655和654关联。这样,第一个块610中的逻辑扇区8、5和63就不再被视为是有效的或现行的。然而,块610的剩余有效扇区必须被拷贝到备用块650。这样,例如逻辑扇区332、135、684和561就被拷贝到备用块650。
当逻辑扇区332、135、684和561被拷贝时,它们被拷贝到备用块中与它们原来位于第一个块中的位置相同的位移地址。例如,无效逻辑扇区63位于块610内的某个位移地址620。有效逻辑扇区63位于块650内的某个位移地址660。位移地址620和位移地址660相同,这样,逻辑扇区63所关联的物理扇区的相对位移地址就保持不变。对逻辑扇区332、135、684和561拷贝,要保证它们在备用块650内位于它们以前在块610中位于的位移地址相同的位移地址。
逻辑扇区332、135、684和561分别对应块610的物理扇区611、613、616和617。所以,逻辑扇区332、135、684和561分别被拷贝到备用块中的物理扇区651、653、656和657。这样就能保证在完成回收之后,不需要更新扇区映射表。
对于每个被回收的块,该回收过程至少使用到两个块。所用的第一个块是被清理或回收的块,第二个块是与被清理块关联的备用块。然而,输入数据帧可能不会全部都与位于同一块内的逻辑扇区关联。在这种情况下,必须进行一个“块跳转”操作,以便开始在另一个块中存储输入数据帧。
每次需要进行块跳转时,可能至少有两个更少的块立即可用于存储输入数据。如果不再有可用的备用块,则帧数据必须被写入额外开销区,以避免在完成对上一个块的回收过程中丢失输入数据。
图7表示启动并执行对在包括使用额外开销区的非易失性存储器中按基于扇区的文件结构存储的文件进行连续重写的集成过程。这个过程特别适合重写在充满或基本充满数据的非易失性存储器中存储的文件。
该过程始于步骤710,进行一个对与要被重写的文件关联的已标识扇区的查找操作。已标识扇区和已标识扇区所位于的块分别变成“当前扇区”和“当前块”。于是在步骤715,文件重写在当前块的当前扇区启动。
在步骤720,进行一次测试,判断是否必须立即追加所接收的数据。如果不是,则处理以后台过程765继续,以确定帧数据要写入的逻辑扇区。步骤730判断是否需要进行块跳转操作。
如果必须注意该帧数据,则继续步骤725的处理,以便确定该帧数据应定入的逻辑扇区。步骤730确定是否需要块跳变。
如果逻辑扇区在当前块中,则不需要进行块跳转操作。因此处理以步骤735继续。在步骤735,可能的话为当前块寻找一个备用块。如果此时没有与当前块关联的备用块,则在步骤760将帧数据写入额外开销区中的逻辑扇区。否则,就在步骤740将帧数据写入备用块中的扇区。当帧数据被写入备用块中的扇区时,它被写入备用块内与它正替换的数据在当前块中的位移地址相同的位移地址。
在一个实施例中,数据帧小于扇区大小。一旦在文件内的特定起始地址或起始位置启动重写操作,后继数据帧就替换文件内的后继位置。于是后继数据帧被相互链接,直到当前扇区被数据帧填满时才转移到文件的下一个扇区。实际上,每个后继数据帧都被写到正被替换的扇区内的一个帧位移地址,直到备用块中的该扇区被填满。
在一个实施例中,重写过程可以在扇区内的任意点启动。因此该重写过程不能在扇区边界启动。如果初始数据帧要写入的起始地址不是对应于扇区边界,则应当将该起始地址之前到正被重写的起始扇区的该扇区边界的数据拷贝到备用块。这样,对于正被重写的起始扇区来说,如果起始地址与正被重写的起始扇区的扇区边界不对齐,则在该帧的起始地址之前到正被重写的该扇区的该扇区边界的数据就被拷贝到备用块中相同的对应位置。
一旦帧数据被写入备用块(步骤740)或额外开销区(760),旧的扇区就被无效。在一个实施例中,这是通过修改扇区的首部或脚注区中的状态位而完成的。在另一个实施例中,通过修改备用块或第一个块的块状态区来指示,备用块代表其中存储的最新逻辑扇区。无论选择哪种方法,都需要保证最新的扇区能容易地与具有相同逻辑扇区号的旧扇区区分开来。旧扇区号实际上被无效掉。所以在步骤745,当前块的“当前”扇区被无效掉,因为它不再代表最新的扇区。过程从步骤745返回到步骤720去处理其它输入数据。
在步骤730,如果步骤720确定的逻辑扇区号不位于当前块中,则需要一个块跳转操作。在步骤750之前,当前块被作了清理标记。在步骤755,该逻辑扇区在其中存储的块(即“被跳转到的”块)被指定作为当前块。处理然后返回到步骤735去判定是否有备用块可用于新的“当前块”。
尽管为了保证不丢失数据,处理输入数据帧的优先权高,在某个时刻也必须照应到额外开销数据和块的回收。对额外开销区清理的优先化770、作过清理标记的块的回收780和重定位来自额外开销区的扇区790等过程全部都是后台过程,可以中断,以照应更高优先级的处理输入数据的功能(即步骤720)。
如果没有要立即照应的数据帧,则在步骤770,如果有必要,后台过程765以对额外开销区回收的优先化开始。
在一个实施例中,一旦额外开销区中可用剩余扇区数达到预定阀值,额外开销区驻留在的块就被调度作清理。所选择的预定阀值要足够高,使得特定实现作一定次数的删除的情况下,在额外开销区被清除之前,额外开销区不会用尽时,仍然有足够的额外开销可容纳输入数据。
额外开销区必须随时可用,以保证不丢失数据。这样,一旦额外开销区被使用的扇区达到一定的阀值,额外开销区驻留在的块就被调度作清理。在步骤770,无论任何其它块是否被调度作清理,对额外开销区驻留在的块的回收都被赋予更高的优先级。这导致如果需要就推迟对任何其它块的回收,以保证额外开销区随时可用。
在步骤780,执行对任何其它作过清理标记的块的回收过程。与额外开销区关联的块的回收像任何其它块一样,并不给予比其它快的回收以更高的优先级。为了避免要更新扇区映射表,额外开销区中的逻辑扇区需要被重定位到物理扇区和块中。所以步骤790如果必要,就执行对额外开销区中当前存储的扇区进行重定位。
将该额外开销区只用于暂时存贮扇区,否则,需要更新该扇区映射表来反映该扇区的新的存贮位置。为避免更新该扇区映射表的步骤,则需要将该额外开销区中的逻辑扇区重新定位到适当的物理扇区和块。因此,如果需要步骤790执行在该额外开销区中存贮的当前扇区的再定位。
图8进一步展示了对额外开销区中存储的扇区进行重定位的过程。过程从步骤810开始。在步骤820,在额外开销区内定位一个有效扇区。在步骤825,定位含有该与该扇区相同的无效扇区的块。(该无效扇区位于第一个快内的第一个位移地址)。
在步骤830,定位与第一个块关联的备用块。在步骤835,将该有效扇区从额外开销区拷贝到备用块中。有效扇区被拷贝到的在备用块内的位移地址,与其对应的无效扇区在第一个块内的位移地址相同。在步骤840,该有效扇区在额外开销区内被标记为无效。在步骤845,进行测试,判断额外开销区中是否有任何其它有效扇区。
如果在额外开销区中找到另一个有效扇区,则处理继续执行步骤850。步骤850起着一个中断窗口的作用,允许停止该后台过程,以响应更高优先级的功能,诸如处理输入数据帧。如果有更高优先级的功能需要被照应,则该后台过程从步骤850前进到步骤870中的返回。否则,如果更高优先级的功能不中断该后台过程,则该重定位过程继续,从步骤850转到执行步骤825。
如果步骤845没有找到额外开销区中的其它有效扇区,则对额外开销区内逻辑扇区的重定位完成,如步骤860所示。该后台过程前进到步骤870,停止执行。
尽管没有必要将同一文件的扇区存储在固态磁盘内的相邻位置,以上描述的方法却要求,要有预定数量的与正被重写的文件关联的扇区必须位于同一个块中。这些相关扇区在块内的相邻次序无关紧要。每当下一个要被重写的扇区不是位于当前块中时,就要求一次块跳转,正如上文结合图7所讨论的那样。
只要块跳转的频率小于一定的阀值,用以上说明的方法就能提供对文件的连续重写。块跳转的频率是由文件分段存储的程度决定的。而阀值则是部分地由输入数据速率和回收过程的速度决定的。
数据被连续地接收的速率为ri,单位是扇区数/秒。在最坏情况下的回收时间段里,必须有足够的额外开销来容纳输入数据。最坏情况下的回收时间段treclaim,假定整个源数据块都必须拷贝到备用块中,并且必须删除该源数据块,以便为将来的回收操作提供新的备用块。所以,拷贝整个源块的时间tcopy加上删除一个块所需的时间terase,等于最坏情况下的回收时间段,即treclaim=tcopy+terase。所以必须有足以容纳至少ri×treclaim个数据扇区的额外开销存储区。
作为另一侧,treclaim不是没有阻碍的最坏情况的前台回收时间,假定在后台进行回收处理,由所分配的时间量来影响treclaim,以处理该后台回收功能。因为该回收过程被中断去照料输入数据的新的帧,同时treclaim部分地依赖于输入数据速率。因此,当固态磁盘基本上充满数据,且以速率ri接收数据时,treclaim反映最坏情况的回收时间。
在一个实施例中,额外开销区大得足以充以容纳至少ri×treclaim个数据扇区。然而,如果额外开销区正好达到所需额外开销空间的下限,就要求连续进行回收,以便为其它输入数据释放额外开销区。额外开销区的连续回收会对固态磁盘的吞吐量性能有不利的影响。此外,连续回收也会耗费更多的电力。因此,为了提高固态磁盘的性能,减少电耗,在一个实施例中,选择能容纳最小扇区数的某个倍数m的额外开销区(即该额外开销区能容纳m×ri×treclaim个扇区,m>1)。在一个实施例中,至少将m选择为4,使得该额外开销区能容纳4×ri×treclaim个扇区。
为了进行连续的重写,应当将重写一个文件所需的跳转数控制在某个跳转速率之下。这个跳转速率与位于同一块中连续链接的文件扇区数成反向关系。要降低跳转速率,可以通过增加位于同一块中连续链接的文件扇区数来完成。文件分段存储程度作为一种对位于同一块中连续链接的文件扇区数的衡量尺度。所以,降低文件分段存储程度有助于降低块的跳转速率。为了保证总有一个用于回收的备用块或者一个对于给定输入数据速率来说可用的额外开销区,在同一个块中必须有一定阀值数的连续链接扇区。
因此,为了保证文件分段存储程度足够低,可能需要先整理文件碎片,然后,连续重写的过程才能功能正常。只有正被重写的文件的碎片才是切合整理的。在一个实施例中,用于存储被重写文件一部分的每个块,除了最后的块之外,都必须有最少数n个连续链接的扇区。在一个实施例中,重写操作在到达文件结尾时停止。因此,存储文件结尾的块不需要有最少数n个连续链接的扇区。
在另一个实施例中,一旦达到文件结尾,重写过程通过重写与文件关联的第一个扇区而继续进行。在这个实施例中,对于重写过程来说实际上没有“最后的块”。所以,用于存储被重写文件一部分的每个块,都必须有最少数n个连续链接的扇区。
在一个实施例中,阀值数n大于或等于在最坏情况下的清理时间段中所能接收的最大数据扇区数。换言之,n≥ri×treclaim。数据速率ri可以由公式ri=数据速率(字节/秒)÷(字节/扇区)确定。例如1Kb/秒的数据速率,等于使用512字节的扇区时的2扇区/秒的数据速率。
考察一个将进行连续重写的方法用于存储音频数据的例子。音频数据以84字节的帧被接收,存储到环形缓冲器。每40ms接收一个音频帧。所以该输入数据的数据速率是84秒÷0.04秒,约为2kB/s。假设固态磁盘配置的是512字节的扇区,则ri=(2000字节/秒)÷(512字节/扇区)=4扇区/秒。如果最坏情况下的回收时间treclaim=5.66秒,则在最坏情况下的回收时间段中能接收大约23个数据扇区(即ri×treclaim=4扇区/秒×5.66秒=23扇区)。
在这个例子中,对于n≥ri×treclaim。在文件的一部分存储在的每个块中都最少必须有23个连续链接的扇区。所以必要的话,该文件应当进行碎片整理,以保证在文件的一部分存储在的每个块中没有少于23个扇区的连续链接扇区。
以上的详细说明中,结合典型实施例描述了本发明。对本发明可以作出各种修改和改变,而不偏离如权利要求所陈述的精神和范围。因此,本说明书和各附图应被视为阐示性的而不是限制性的。
Claims (17)
1.一种对非易失性存储器中存储的文件进行重写的方法,其中非易失性存储器具有一组可个别删除的块,每个块被分配一组扇区,该方法包括以下步骤:
a.接收一个数据帧;
b.确定该帧要写入的逻辑扇区,其中该逻辑扇区对应于位于具有第一个逻辑块号的第一个块中第一个位移地址的第一个扇区,其中第一个扇区中存储着文件的一部分;
c.将该帧写到第二个扇区,其中第二个扇区位于备用块中第二个位移地址上,其中第一个和第二个位移地址相同。
2.根据权利要求1的方法,还包含步骤:
d.将备用块的一个逻辑块号更新为第一个逻辑块号。
3.根据权利要求1的方法,其中步骤a)还包括步骤:
ⅰ.将数据帧存储在一个环形缓冲器中。
4.根据权利要求1的方法,其中步骤c)还包括步骤:
ⅰ.如果第一个扇区是正被重写的起始扇区并且如果起始地址与第二个扇区边界不对齐,则将在该帧的起始地址之前的数据从第一块的第一扇区拷贝到备用块中相同的对应位置。
5.根据权利要求1的方法,还包括步骤:
d.将位于第一个块中的第一个扇区标记为无效;
e.回收第一个块。
6.根据权利要求5的方法,其中步骤e)还包括步骤:
ⅰ.将第一个块中存储的每一个有效扇区拷贝到备用块中相同的对应位位移地址;
ⅱ.删除第一个块。
7.根据权利要求1的方法,其中步骤c)还包括步骤:
ⅰ.确定该帧要写入的逻辑扇区内的帧位移地址;
ⅱ.将该帧写入第二个扇区内的该帧位移地址。
8.根据权利要求1的方法,其中的数据是音频数据。
9.根据权利要求1的方法,其中的非易失性存贮器包括快闪存贮器。
10.一种对非易失性存储器中存储的数据进行重写的方法,其中非易失性存储器包括一组可个别删除的块,每个块被分配一组数据扇区,该方法包括步骤:
a.接收一组数据帧,包括第一个帧;
b.至少将第一个帧存储到一个额外开销区中;
c.确定第一帧要被写到的逻辑扇区,其中该逻辑扇区对应于位于具有第一个逻辑块号的第一个块中的第一个位移地址的第一个扇区,其中,该文件的一部分被存储在第一个扇区。
d.将第一个帧从额外开销区拷贝到第二个扇区的一部分,其中,第二个扇区位于非易失性存储器的备用块中的第二个位移地址,其中,第一个和第二个位移地址相同;
e.对于在额外开销区中存储的每个后继帧,如果该后继帧要写到的逻辑扇区对应于位于第一个块中的任何扇区,则重复步骤b)到d)。
11.根据权利要求10的方法,还包括步骤:
f.将备用块的逻辑块号更新为第一个逻辑块号。
12.根据权利要求10的方法,还包括步骤:
f.如果该后继帧要写到的逻辑扇区不与位于第一个块中的任何扇区对应,则回收第一个块。
13.根据权利要求12的方法,其中步骤f)还包括步骤:
ⅰ.将第一个块中存储的每个有效扇区拷贝到备用块中相同的对应位移地址;
ⅱ.删除第一个块。
14.根据权利要求10的方法,还包括步骤:
f.如果该后继帧要写到的逻辑扇区不与位于第一个块中的任何扇区对应,则执行以下步骤:
ⅰ.确定该后继帧要写向的逻辑扇区的部分,其中该逻辑扇区对应于位于第三块中的第三位移地址上的无用扇区;
ⅱ.将至少一个数据帧从额外开销区拷贝到备用块内第三个位移地址上。
15.根据权利要求10的方法,其中步骤c)还包括步骤:
ⅰ.确定该帧要写向的逻辑扇区内的帧位移地址;
ⅱ.将该帧写入第二个扇区内的该帧位移地址。
16.根据权利要求10的方法,其中的数据是音频数据。
17.根据权利要求10的方法,其中,该非易失性存储器包括快闪存储器。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/722,979 | 1996-09-30 | ||
US08/722,979 US5860124A (en) | 1996-09-30 | 1996-09-30 | Method for performing a continuous over-write of a file in nonvolatile memory |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1238846A true CN1238846A (zh) | 1999-12-15 |
CN1129848C CN1129848C (zh) | 2003-12-03 |
Family
ID=24904286
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN97180136A Expired - Fee Related CN1129848C (zh) | 1996-09-30 | 1997-09-23 | 对非易失性存储器中的文件进行连续重写的方法 |
Country Status (8)
Country | Link |
---|---|
US (1) | US5860124A (zh) |
KR (1) | KR100324028B1 (zh) |
CN (1) | CN1129848C (zh) |
AU (1) | AU4803897A (zh) |
DE (2) | DE19782041B4 (zh) |
GB (1) | GB2333620B (zh) |
TW (1) | TW346569B (zh) |
WO (1) | WO1998014879A1 (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1322428C (zh) * | 2001-06-04 | 2007-06-20 | 三星电子株式会社 | 闪速存储器管理方法 |
CN1329842C (zh) * | 2002-10-28 | 2007-08-01 | 三因迪斯克公司 | 在非易失性存储器***中执行块高速缓冲存储的方法和装置 |
CN100405329C (zh) * | 2003-10-24 | 2008-07-23 | 海珀斯通股份公司 | 在按块可擦的存储器中写存储器扇区的方法 |
CN100412822C (zh) * | 2004-09-13 | 2008-08-20 | 株式会社东芝 | 存储器管理装置以及存储器装置 |
CN100440167C (zh) * | 2003-02-20 | 2008-12-03 | 索尼株式会社 | 记录媒体的记录控制方法及记录控制装置 |
CN100485641C (zh) * | 2001-01-19 | 2009-05-06 | 三因迪斯克公司 | 编程和读取更新数据的非易失性存储器***和方法 |
CN100524257C (zh) * | 2003-10-27 | 2009-08-05 | 松下电器产业株式会社 | 记录媒体、数据处理装置以及数据处理方法 |
CN105340020A (zh) * | 2013-07-16 | 2016-02-17 | 英特尔公司 | 存储器***中的擦除管理 |
CN106293517A (zh) * | 2007-04-19 | 2017-01-04 | 微软技术许可有限责任公司 | 用于固态驱动器优化的删除时移除技术 |
CN107797762A (zh) * | 2016-08-29 | 2018-03-13 | 京瓷办公信息***株式会社 | 信息处理装置及信息处理方法 |
Families Citing this family (85)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6978342B1 (en) * | 1995-07-31 | 2005-12-20 | Lexar Media, Inc. | Moving sectors within a block of information in a flash memory mass storage architecture |
US5845313A (en) * | 1995-07-31 | 1998-12-01 | Lexar | Direct logical block addressing flash memory mass storage architecture |
US6728851B1 (en) * | 1995-07-31 | 2004-04-27 | Lexar Media, Inc. | Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices |
US8171203B2 (en) * | 1995-07-31 | 2012-05-01 | Micron Technology, Inc. | Faster write operations to nonvolatile memory using FSInfo sector manipulation |
US6021413A (en) * | 1997-04-01 | 2000-02-01 | The University Of Illinois Board Of Trustees | Application-directed variable-granularity caching and consistency management |
ATE210878T1 (de) * | 1998-04-01 | 2001-12-15 | Hewlett Packard Co | Datenspeichergerät und verfahren |
US6226728B1 (en) * | 1998-04-21 | 2001-05-01 | Intel Corporation | Dynamic allocation for efficient management of variable sized data within a nonvolatile memory |
JP2000227871A (ja) * | 1999-02-05 | 2000-08-15 | Seiko Epson Corp | 不揮発性記憶装置、その制御方法、および、情報記録媒体 |
US6148354A (en) | 1999-04-05 | 2000-11-14 | M-Systems Flash Disk Pioneers Ltd. | Architecture for a universal serial bus-based PC flash disk |
GB2349242A (en) * | 1999-04-20 | 2000-10-25 | Inventec Corp | Flash memory architecture and rewrite method |
KR100544175B1 (ko) * | 1999-05-08 | 2006-01-23 | 삼성전자주식회사 | 링킹 타입 정보를 저장하는 기록 매체와 결함 영역 처리 방법 |
CN1088218C (zh) * | 1999-11-14 | 2002-07-24 | 邓国顺 | 用于数据处理***的快闪电子式外存储方法及其装置 |
US7167944B1 (en) | 2000-07-21 | 2007-01-23 | Lexar Media, Inc. | Block management for mass storage |
KR20020044907A (ko) * | 2000-12-07 | 2002-06-19 | 윤종용 | 다중 플래쉬 메모리 시스템에서의 프로그램 운용 방법 |
US6675317B2 (en) * | 2000-12-14 | 2004-01-06 | International Business Machines Corporation | Method and system for determining erase procedures run on a hard drive |
US6715033B2 (en) | 2001-03-06 | 2004-03-30 | Hewlett-Packard Development Company, L.C. | Method of and apparatus for tracking appended data on storage medium |
US6571326B2 (en) | 2001-03-08 | 2003-05-27 | Intel Corporation | Space allocation for data in a nonvolatile memory |
GB0123415D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Method of writing data to non-volatile memory |
GB0123421D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Power management system |
GB0123416D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Non-volatile memory control |
GB0123410D0 (en) | 2001-09-28 | 2001-11-21 | Memquest Ltd | Memory system for data storage and retrieval |
GB0123417D0 (en) * | 2001-09-28 | 2001-11-21 | Memquest Ltd | Improved data processing |
US7231643B1 (en) | 2002-02-22 | 2007-06-12 | Lexar Media, Inc. | Image rescue system including direct communication between an application program and a device driver |
US20040059604A1 (en) * | 2002-07-29 | 2004-03-25 | Zaleski John R. | Patient medical parameter acquisition and distribution system |
US8336044B2 (en) * | 2002-10-09 | 2012-12-18 | Rpx Corporation | Method and system for deploying a software image |
US7024581B1 (en) | 2002-10-09 | 2006-04-04 | Xpoint Technologies, Inc. | Data processing recovery system and method spanning multiple operating system |
US6901498B2 (en) * | 2002-12-09 | 2005-05-31 | Sandisk Corporation | Zone boundary adjustment for defects in non-volatile memories |
US6944063B2 (en) * | 2003-01-28 | 2005-09-13 | Sandisk Corporation | Non-volatile semiconductor memory with large erase blocks storing cycle counts |
US7117326B2 (en) * | 2003-06-26 | 2006-10-03 | Intel Corporation | Tracking modifications to a memory |
US7139864B2 (en) * | 2003-12-30 | 2006-11-21 | Sandisk Corporation | Non-volatile memory and method with block management system |
US7383375B2 (en) | 2003-12-30 | 2008-06-03 | Sandisk Corporation | Data run programming |
US7433993B2 (en) * | 2003-12-30 | 2008-10-07 | San Disk Corportion | Adaptive metablocks |
US20050144363A1 (en) * | 2003-12-30 | 2005-06-30 | Sinclair Alan W. | Data boundary management |
WO2005066792A2 (en) * | 2003-12-30 | 2005-07-21 | Sandisk Corporation | Non-volatile memory and method with memory planes alignment |
EP1733555A4 (en) * | 2004-02-23 | 2009-09-30 | Lexar Media Inc | SAFE COMPACT FLASH |
US7725628B1 (en) | 2004-04-20 | 2010-05-25 | Lexar Media, Inc. | Direct secondary device interface by a host |
US7370166B1 (en) | 2004-04-30 | 2008-05-06 | Lexar Media, Inc. | Secure portable storage device |
US7594063B1 (en) * | 2004-08-27 | 2009-09-22 | Lexar Media, Inc. | Storage capacity status |
US7464306B1 (en) * | 2004-08-27 | 2008-12-09 | Lexar Media, Inc. | Status of overall health of nonvolatile memory |
US20060059296A1 (en) * | 2004-09-16 | 2006-03-16 | M-Systems Flash Disk Pioneers, Ltd. | Emulating small block size of flash memory |
US20060107014A1 (en) * | 2004-11-17 | 2006-05-18 | Fandrich Mickey L | Managing reclamation for removable data devices |
JP4738038B2 (ja) * | 2005-03-25 | 2011-08-03 | 株式会社東芝 | メモリカード |
US7509471B2 (en) * | 2005-10-27 | 2009-03-24 | Sandisk Corporation | Methods for adaptively handling data writes in non-volatile memories |
US7631162B2 (en) | 2005-10-27 | 2009-12-08 | Sandisck Corporation | Non-volatile memory with adaptive handling of data writes |
TWI308722B (en) * | 2005-12-09 | 2009-04-11 | Wistron Corp | Method for making a bootable usb storage device |
US7831783B2 (en) | 2005-12-22 | 2010-11-09 | Honeywell International Inc. | Effective wear-leveling and concurrent reclamation method for embedded linear flash file systems |
KR100706808B1 (ko) * | 2006-02-03 | 2007-04-12 | 삼성전자주식회사 | 쓰기 버퍼로서 동작하는 불 휘발성 메모리를 구비한 데이터저장 장치 및 그것의 블록 회수 방법 |
DE102006013758A1 (de) * | 2006-03-24 | 2007-09-27 | Robert Bosch Gmbh | Verfahren zum Betreiben einer Speichereinrichtung |
KR100809319B1 (ko) | 2006-09-13 | 2008-03-05 | 삼성전자주식회사 | 플래시 메모리에서 연속한 섹터 쓰기 요청에 대해 원자성을제공하는 장치 및 방법 |
US8370562B2 (en) * | 2007-02-25 | 2013-02-05 | Sandisk Il Ltd. | Interruptible cache flushing in flash memory systems |
US8429352B2 (en) * | 2007-06-08 | 2013-04-23 | Sandisk Technologies Inc. | Method and system for memory block flushing |
FI120422B (fi) * | 2007-07-02 | 2009-10-15 | Tellabs Oy | Menetelmä ja laitteita muutoslokin kompressoimiseksi käyttäen flash-transaktioita |
US8805897B2 (en) * | 2007-12-13 | 2014-08-12 | Redknee Inc. | Method and system for storage |
US9053005B2 (en) * | 2008-01-02 | 2015-06-09 | Micron Technology, Inc. | Recycled version number values in flash memory |
KR100957445B1 (ko) | 2008-01-14 | 2010-05-11 | 한양대학교 산학협력단 | 효율적인 덮어쓰기를 위한 파일 시스템 및 기억 장치그리고 효율적인 덮어쓰기 방법 |
US20090271562A1 (en) * | 2008-04-25 | 2009-10-29 | Sinclair Alan W | Method and system for storage address re-mapping for a multi-bank memory device |
JP4461187B1 (ja) * | 2008-12-24 | 2010-05-12 | 株式会社東芝 | 不揮発性半導体メモリドライブ装置、情報処理装置および不揮発性半導体メモリドライブ装置における記憶領域の管理方法 |
US8244960B2 (en) * | 2009-01-05 | 2012-08-14 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partition management methods |
US8040744B2 (en) * | 2009-01-05 | 2011-10-18 | Sandisk Technologies Inc. | Spare block management of non-volatile memories |
US20100174845A1 (en) * | 2009-01-05 | 2010-07-08 | Sergey Anatolievich Gorobets | Wear Leveling for Non-Volatile Memories: Maintenance of Experience Count and Passive Techniques |
US8094500B2 (en) * | 2009-01-05 | 2012-01-10 | Sandisk Technologies Inc. | Non-volatile memory and method with write cache partitioning |
US8700840B2 (en) * | 2009-01-05 | 2014-04-15 | SanDisk Technologies, Inc. | Nonvolatile memory with write cache having flush/eviction methods |
US8473669B2 (en) * | 2009-12-07 | 2013-06-25 | Sandisk Technologies Inc. | Method and system for concurrent background and foreground operations in a non-volatile memory array |
US8452911B2 (en) | 2010-09-30 | 2013-05-28 | Sandisk Technologies Inc. | Synchronized maintenance operations in a multi-bank storage system |
WO2012067600A1 (en) * | 2010-11-15 | 2012-05-24 | Empire Technology Development Llc | Automatic annunciator allocation |
US9514838B2 (en) * | 2011-05-31 | 2016-12-06 | Micron Technology, Inc. | Apparatus including memory system controllers and related methods for memory management using block tables |
US8762627B2 (en) | 2011-12-21 | 2014-06-24 | Sandisk Technologies Inc. | Memory logical defragmentation during garbage collection |
US8873284B2 (en) | 2012-12-31 | 2014-10-28 | Sandisk Technologies Inc. | Method and system for program scheduling in a multi-layer memory |
US9348746B2 (en) | 2012-12-31 | 2016-05-24 | Sandisk Technologies | Method and system for managing block reclaim operations in a multi-layer memory |
US9734050B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for managing background operations in a multi-layer memory |
US9336133B2 (en) | 2012-12-31 | 2016-05-10 | Sandisk Technologies Inc. | Method and system for managing program cycles including maintenance programming operations in a multi-layer memory |
US9465731B2 (en) | 2012-12-31 | 2016-10-11 | Sandisk Technologies Llc | Multi-layer non-volatile memory system having multiple partitions in a layer |
US9223693B2 (en) | 2012-12-31 | 2015-12-29 | Sandisk Technologies Inc. | Memory system having an unequal number of memory die on different control channels |
US9734911B2 (en) | 2012-12-31 | 2017-08-15 | Sandisk Technologies Llc | Method and system for asynchronous die operations in a non-volatile memory |
US9400745B2 (en) * | 2013-11-06 | 2016-07-26 | International Business Machines Corporation | Physical address management in solid state memory |
US10114562B2 (en) | 2014-09-16 | 2018-10-30 | Sandisk Technologies Llc | Adaptive block allocation in nonvolatile memory |
US9778855B2 (en) | 2015-10-30 | 2017-10-03 | Sandisk Technologies Llc | System and method for precision interleaving of data writes in a non-volatile memory |
US20170123666A1 (en) * | 2015-10-30 | 2017-05-04 | Sandisk Technologies Inc. | System and method for managing maintenance scheduling in a non-volatile memory |
US10120613B2 (en) | 2015-10-30 | 2018-11-06 | Sandisk Technologies Llc | System and method for rescheduling host and maintenance operations in a non-volatile memory |
US10133490B2 (en) | 2015-10-30 | 2018-11-20 | Sandisk Technologies Llc | System and method for managing extended maintenance scheduling in a non-volatile memory |
US10042553B2 (en) | 2015-10-30 | 2018-08-07 | Sandisk Technologies Llc | Method and system for programming a multi-layer non-volatile memory having a single fold data path |
US9817593B1 (en) | 2016-07-11 | 2017-11-14 | Sandisk Technologies Llc | Block management in non-volatile memory system with non-blocking control sync system |
US20180054374A1 (en) * | 2016-08-19 | 2018-02-22 | Andes Technology Corporation | Trace information encoding apparatus, encoding method thereof, and readable computer medium |
US11422726B1 (en) * | 2018-05-01 | 2022-08-23 | Amazon Technologies, Inc. | Efficient storage device data move operation based on priority of garbage collection command |
KR20210120240A (ko) * | 2020-03-26 | 2021-10-07 | 에스케이하이닉스 주식회사 | 메모리 컨트롤러 및 그 동작 방법 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251324B (en) * | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
US5590300A (en) * | 1991-03-05 | 1996-12-31 | Zitel Corporation | Cache memory utilizing address translation table |
US5535369A (en) * | 1992-10-30 | 1996-07-09 | Intel Corporation | Method for allocating memory in a solid state memory disk |
US5581723A (en) * | 1993-02-19 | 1996-12-03 | Intel Corporation | Method and apparatus for retaining flash block structure data during erase operations in a flash EEPROM memory array |
US5473569A (en) * | 1994-08-01 | 1995-12-05 | Motorola, Inc. | Method for operating a flash memory |
EP0704803B1 (de) * | 1994-09-30 | 1997-03-05 | Alcatel SEL Aktiengesellschaft | Verfahren zur Speicherverwaltung eines Flash-Speichers |
JPH08137634A (ja) * | 1994-11-09 | 1996-05-31 | Mitsubishi Electric Corp | フラッシュディスクカード |
US5475693A (en) * | 1994-12-27 | 1995-12-12 | Intel Corporation | Error management processes for flash EEPROM memory arrays |
JPH08212019A (ja) * | 1995-01-31 | 1996-08-20 | Mitsubishi Electric Corp | 半導体ディスク装置 |
-
1996
- 1996-09-30 US US08/722,979 patent/US5860124A/en not_active Expired - Fee Related
-
1997
- 1997-09-23 WO PCT/US1997/017641 patent/WO1998014879A1/en active IP Right Grant
- 1997-09-23 KR KR1019997002752A patent/KR100324028B1/ko not_active IP Right Cessation
- 1997-09-23 CN CN97180136A patent/CN1129848C/zh not_active Expired - Fee Related
- 1997-09-23 AU AU48038/97A patent/AU4803897A/en not_active Abandoned
- 1997-09-23 GB GB9907377A patent/GB2333620B/en not_active Expired - Fee Related
- 1997-09-23 DE DE19782041A patent/DE19782041B4/de not_active Expired - Fee Related
- 1997-09-23 DE DE19782041T patent/DE19782041T1/de active Pending
- 1997-11-06 TW TW086114231A patent/TW346569B/zh not_active IP Right Cessation
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100485641C (zh) * | 2001-01-19 | 2009-05-06 | 三因迪斯克公司 | 编程和读取更新数据的非易失性存储器***和方法 |
CN1322428C (zh) * | 2001-06-04 | 2007-06-20 | 三星电子株式会社 | 闪速存储器管理方法 |
CN1329842C (zh) * | 2002-10-28 | 2007-08-01 | 三因迪斯克公司 | 在非易失性存储器***中执行块高速缓冲存储的方法和装置 |
CN100440167C (zh) * | 2003-02-20 | 2008-12-03 | 索尼株式会社 | 记录媒体的记录控制方法及记录控制装置 |
CN100405329C (zh) * | 2003-10-24 | 2008-07-23 | 海珀斯通股份公司 | 在按块可擦的存储器中写存储器扇区的方法 |
CN100524257C (zh) * | 2003-10-27 | 2009-08-05 | 松下电器产业株式会社 | 记录媒体、数据处理装置以及数据处理方法 |
CN100412822C (zh) * | 2004-09-13 | 2008-08-20 | 株式会社东芝 | 存储器管理装置以及存储器装置 |
CN106293517A (zh) * | 2007-04-19 | 2017-01-04 | 微软技术许可有限责任公司 | 用于固态驱动器优化的删除时移除技术 |
CN106293517B (zh) * | 2007-04-19 | 2019-09-20 | 微软技术许可有限责任公司 | 用于固态驱动器优化的删除时移除技术 |
US10976928B2 (en) | 2007-04-19 | 2021-04-13 | Microsoft Technology Licensing, Llc | Remove-on-delete technologies for solid state drive optimization |
CN105340020A (zh) * | 2013-07-16 | 2016-02-17 | 英特尔公司 | 存储器***中的擦除管理 |
CN105340020B (zh) * | 2013-07-16 | 2019-08-20 | 英特尔公司 | 存储器***中的擦除管理 |
CN107797762A (zh) * | 2016-08-29 | 2018-03-13 | 京瓷办公信息***株式会社 | 信息处理装置及信息处理方法 |
Also Published As
Publication number | Publication date |
---|---|
KR100324028B1 (ko) | 2002-02-19 |
DE19782041T1 (de) | 1999-09-23 |
US5860124A (en) | 1999-01-12 |
GB2333620B (en) | 2001-05-09 |
CN1129848C (zh) | 2003-12-03 |
WO1998014879A1 (en) | 1998-04-09 |
KR20000048766A (ko) | 2000-07-25 |
DE19782041B4 (de) | 2009-12-03 |
TW346569B (en) | 1998-12-01 |
GB9907377D0 (en) | 1999-05-26 |
AU4803897A (en) | 1998-04-24 |
GB2333620A (en) | 1999-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1129848C (zh) | 对非易失性存储器中的文件进行连续重写的方法 | |
US7716422B2 (en) | Storage apparatus and method for using a non-volatile cache memory organized into stationary and non-stationary circular regions | |
JP5530012B2 (ja) | 記憶装置のためのストレージアドレス再マッピングのための方法およびシステム | |
US8214583B2 (en) | Direct file data programming and deletion in flash memories | |
US6571326B2 (en) | Space allocation for data in a nonvolatile memory | |
TWI400608B (zh) | 在一主機系統與一可重新程式化的非揮發性大量儲存系統之間傳輸資料之方法、在一快閃記憶體系統中之控制器之操作方法以及大量儲存記憶體系統 | |
JP4537481B2 (ja) | 直接データファイル記憶を用いるフラッシュメモリにおけるデータ操作 | |
US7877540B2 (en) | Logically-addressed file storage methods | |
JP4931810B2 (ja) | 最適化されたシーケンシャルなクラスタの管理のためのfat分析 | |
US7254668B1 (en) | Method and apparatus for grouping pages within a block | |
EP1834241B1 (en) | Non-volatile memory and method with improved indexing for scratch pad and update blocks | |
EP1839115B1 (en) | Non-volatile memory and method with multi-stream updating | |
CN1295622C (zh) | 地址映射方法和映射信息管理方法及其闪速存储器 | |
US20100169540A1 (en) | Method and apparatus for relocating selected data between flash partitions in a memory device | |
US20060184722A1 (en) | Direct data file storage implementation techniques in flash memories | |
US20080120488A1 (en) | Apparatus and method of managing nonvolatile memory | |
JP4977703B2 (ja) | 予定再生操作を伴う不揮発性メモリ | |
CN1441440A (zh) | 在闪存设备中获得均匀的磨损调整的***和方法 | |
US20070136553A1 (en) | Logically-addressed file storage systems | |
US7664906B2 (en) | Flash memory access apparatus and method | |
CN1149487C (zh) | 一并擦除型非易失性存储器和快速存储器的控制方法 | |
EP1960863A2 (en) | Logically-addressed file storage | |
KR20020092261A (ko) | 멀티-플레인 구조의 플래시 메모리 관리 방법 | |
JPH10301721A (ja) | 情報記憶媒体の欠陥セクタ処理方法及び情報記憶再生装置 | |
JP2008198102A (ja) | データ処理システム、データ記憶装置、ハードディスク装置、およびデータ記憶装置におけるデータ管理方法 |
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 | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20031203 Termination date: 20100923 |