CN104995595A - 控制由可与主机连接的通信设备包括的用于大容量存储的闪速存储器的方法,和用于执行所述方法的计算机程序产品 - Google Patents
控制由可与主机连接的通信设备包括的用于大容量存储的闪速存储器的方法,和用于执行所述方法的计算机程序产品 Download PDFInfo
- Publication number
- CN104995595A CN104995595A CN201380061011.4A CN201380061011A CN104995595A CN 104995595 A CN104995595 A CN 104995595A CN 201380061011 A CN201380061011 A CN 201380061011A CN 104995595 A CN104995595 A CN 104995595A
- Authority
- CN
- China
- Prior art keywords
- write
- flash memory
- sector
- data
- storage unit
- 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
Classifications
-
- 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/0616—Improving the reliability of storage systems in relation to life time, e.g. increasing Mean Time Between Failures [MTBF]
-
- 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/061—Improving I/O performance
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- 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
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0659—Command handling arrangements, e.g. command buffers, queues, command scheduling
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及一种用于控制闪速存储器(9)的方法,所述闪速存储器包括在可与主机(1)连接的通信设备(2)之中和用于大容量存储要存储的数据(SS1,SSN,SS1N,SA,BE,S1N,S1ML)。在所述方法中闪速存储器(9)分成块(10),所述块分别包括存储单元(S1-SN),和只有在写入存储单元(SS1)之前擦除要写入的存储单元(SS1)的块(10)的全部的存储单元(S1,S2,SS1,SN)的情况下,才能重写已写过的存储单元(SS1)。这样控制闪速存储器(9),使得至少一部分的要写入的存储单元(S1-SN),其数据(SG,SS1N,SAI,BEI,S1MLG)在写入之后与写入之前相比没有变化,则既不能写入也不能擦除,并且在擦除状态的至少一部分的要写入的存储单元(SSG,STG,SMG),其数据(SG)在写入之后与写入之前相比发生变化,则无再次擦除即可写入要存储的数据(SS1N,BEI,S1NI)。
Description
技术领域
本发明涉及一种用于控制闪速存储器的方法,所述闪速存储器由可与主机连接的通信设备包括并且写入要存储的数据用于大容量存储。本发明此外还涉及一种用于执行所述方法的计算机程序产品。
背景技术
大容量存储器可以是USB记忆棒(USB:通用串行总线),例如用于数码相机,移动电话或多媒体播放器的或SSD形式的存储卡(SSD:固态硬盘)。大容量存储器包括具有存储控制器功能的单元和一个或多个非易失性存储器模块。能够使用所谓的闪速EEPROM-半导体存储器(EEPROM:电可擦除可编程只读存储器)作为存储器模块,所述存储器模块不需要电压源来保护已存储的信息。具有不同的闪存类型,其根据结构和所使用的存储方法来区别。结构在以下理解为在存储模块中存储部件的布置。使用的存储方法在以下理解为在存储部件内部用于存储的电压水平的数量。例如闪存类型有NOR-闪存,NAND-SLC(Single-Level Cell:单层单元)和NAND-MLC(Multi-Level Cell多层单元)。
为了能够将数据写入闪速存储器模块,也称作闪速存储器,必须先擦除存储器模块中要写入数据的存储单元。每个存储单元分别包括至少一个存储部件用于存储位,所述的位可以具有逻辑值“0”或“1”,因此通常只有在与写入相比更大的区域中,所谓的块,也称作擦除块中才能擦除各个存储单元。块在以下定义为闪速存储器中只能被共同擦除的最小数量的字节。一个块包括2z个字节(z>13)。典型的用于存储文件的块容量按kB计分别为8、16、32、64、128或256kB。在写入或写上闪速存储器的存储部件(也称作写入单元或页)时与块相比较小的单元定义为闪速存储器中最小的字节数量,所述字节只能共同擦除。块(也称作擦除单元)和写入单元的容量与闪速EEPROM类型及其容量有关。NOR-闪存具有8kB至256kB之间的块容量,典型为64kB,其中写入单元为1个字节。在写入单元为512字节的页面的情况下可以得到更小的块容量为16kB的NAND闪速存储器。具有128、512或2048kB块容量的更大的NAND闪速存储器使用(页面)容量为2、4或8kB的页。每个单元中擦除和写入操作的最大可能的数量在技术条件上受到限制并且与闪速存储器的类型有关。通过擦除,各个位在存储单元中设置为值“1”,其中通过写入,位设置为值“0”。为了实现各个存储位置的均匀的“磨损”和使用寿命,在擦除之前将全部的位编程设置为值“0”,以便然后在擦除时设置为值“1”。由此更小的NAND闪速存储器能够写入包括512字节的写入单元,但是只能以至多为16.384字节(16kB)的块的形式擦除。主机或主机系统在写入时所使用的最小的数据量取决于扇区的容量,所述扇区定义为在主机或主机系统的文件系统中,也称作File-system中共同处理的最小单位。工作存储器和/或闪速存储器至少原则上能够处理扇区的所述最小单元的部分区域。扇区包括2z字节的存储容量,其中z>3,通常包括512字节。如果想通过闪速存储器实现USB大容量存储装置,像USB记忆棒,则会遇到上述的用于写入/擦除的存储容量不对称的问题,这是因为常用的文件系统,例如FAT(File allocation Table文件分配表),FAT32等使用512字节容量的扇区,所述容量与更小的NAND闪速存储器的写入单元的容量相对应。
为了在全部的块上均匀分布擦除和写入操作,昂贵的存储控制器不仅拥有用于控制必要的擦除/写入操作的控制能力,而且该存储控制器还拥有控制能力用于读取,擦除和将数据写入适合于所述数据的单元之中并加上错误校验,用于在存储单元中在全部的块上均匀分布写入/擦除操作(所谓的wear-leveling:平均抹写),用于管理有缺陷的块和必要时具有一种用于“重新激活”已存储的数据的方法。在这种情况下存储控制器为了实施上述过程需要表,利用该表管理和连接在存储控制器与主机的接口处寻址的逻辑单元和在闪速存储器中使用的物理单元。在更加复杂的存储控制器中,还要按照OSI七层模型(Open System Interconnection Reference Model:开放式系统互联参考模型)使用来自较高的层的额外的信息,例如来自在主机中所使用的文件系统,用于控制存储控制器:例如主机通过特殊的指令(TRIM指令,参见WO2012/062233)通知存储控制器关于可能擦除的逻辑数据块的信息。
如果要存储的数据量及其更新频率低于在主要应用大容量存储器这种情况下,例如将闪速存储器作为可与主机连接的通信设备的次要设备用于大容量存数据,则能够简化地执行大容量存储器的功能。在这种情况下可以放弃包括上述昂贵的控制方法和表的大容量存储器的单独的存储控制器,通过该表寻址的逻辑单元在存储控制器与主机之间的接口处与在闪速存储器中使用的物理单元相连接。
在图1中表示了通信设备2,所述通信设备与主机1连接并且在其中作为大容量存储器的闪速存储器9没有应用为主要设备用来存储数据,而是应用为次要设备。通信设备具有键盘3形式的操作终端,其中在显示器4上向使用者显示通信设备2的要显示的运行状态。通过键盘和/或其它操作元件输入指令以及在显示器4中显示通信设备2的运行状态表示了通信设备2的主要功能。例如在通信没备2中使用了闪速存储器9,以便存储配置数据和/或保持应该在显示器4上显示的相关语言的文本。例如用不同的语言显示的文本,例如,德语,英语,法语等,能够根据相应的输出文本保存在闪速存储器9中,其中使用者在配置通信设备2的过程中能够选择某种确定的语言,例如德语。然后尽管在配置之后不会使用所述文本,仍将非德语的显示文本保存在作为大容量存储器的闪速存储器9之中。
在图2中表示了简化地执行大容量存储器的功能。闪速存储器9“NOR-闪存”没有自己的存储控制器,而是通过主处理器6,也称作CPU(中央处理器)一同管理。主处理器6从主机1接收为闪速存储器9规定的指令并执行读取,写入,擦除操作。为了产生主处理器6的工作能力,该主处理器与程序存储器8和工作存储器7,例如RAM(随机存取存储器)相连接。显示器4像键盘一样与主处理器6连接。主机1通过主机接口5与主处理器6连接,所述主机接口在图2表示的通信设备2中布设在通信设备2的内部。由主机1寻址的闪速存储器9的存储单元或存储区域/存储扇区在没有从逻辑单元转换成物理单元的情况下直接在闪速存储器9上面响应。
因为将省却借助单独的存储控制器的从主机1的逻辑单元到闪速存储器9的物理单元的寻址,因此主机1的文件系统的,即主机1的应写入闪速存储器9的扇区将在主机1规定用于写入这些扇区的位置写入闪速存储器9。
在图3中表示了简单的、用于将主机1的数据存储在闪速存储器9之中的方法,即在不同的时间点通过带标记“t”的箭头方向标出。在闪速存储器9的块10中,存储单元规定为存储扇区S1到SN形式,扇区1到N分别在时间点t1存入这些存储单元之中。为了向块10写入主机1的新的扇区SS1,在存储单元S1到SN中存储的扇区1到N由块10复制到工作存储器7,11。因此在时间点t2,在时间点t1时存储在块10中的扇区1到N存储在工作存储器7中。将要存储的新的扇区SS1处于块10中,在写入所述扇区SS1之前必须将所述块擦除。在此未写入涉及的存储单元的数据在要写入的块10中不会发生变化并且必须保持不变。因此,扇区1-10形式的数据从完整的块10下载到工作存储器7中,11。然后在时间点t4通过写入新的扇区SS1改变工作存储器7,13。在将扇区1-10复制到工作存储器7之后在时间点t3擦除块10,12。在第12步中擦除块10之后,只有具有擦除的存储部件SG的擦除的存储单元位于块之中。在时间点t5通过存储在工作存储器7中的数据包括新的扇区SS1对已经完全擦除的块10进行编程,14。由此在时间点t5利用扇区1-N的内容的数据对块10进行编程,其中扇区被新的扇区SS1取代。因此为了将扇区写入闪速存储器9之中,必须完全地擦除块10和将N个扇区编程到闪速存储器9之中,其中N不仅表示块10中的最后扇区,而且额外地表示每个块10中要编程到存储单元S1到SN中的扇区的数量。“将扇区1-N复制到工作存储器7,11”和“在工作存储器7中编程新的扇区SS1,13”的操作相对于“擦除块10,12”和“将扇区1-N编程到块10之中,14”的操作只需要很短的时间。因此在均衡用于将主机1的数据存储到闪速存储器9之中的费用的时候可以忽略操作11和13。
当在图3中只有一个扇区SS1写入闪速存储器9之中,而在图4a和图4b中则表示下述情况,即在其中多个扇区SS2,SS3从主机1写入闪速存储器9的块10之中。在图4a中假定,块10在时间点t5处于按照图3的状态。为了将扇区SS2写入块10,再次将扇区1到N从块10复制到工作存储器7之中,11,因此在工作存储器7中存储状态在时间点t6时与图3所示的在时间点t4时的存储状态相对应。然后在时间点t7再一次地擦除块10,借此全部的存储单元作为擦除的存储单元SG存在于块10之中。除了新的扇区SS1之外将新的扇区SS2编程到工作存储器7之中,13,其中在时间点t8新的扇区SS1,SS2已存储在工作存储器7之中,所述扇区事先替代扇区1到N的存储的扇区。随后将扇区1到N包括新的扇区SS1和SS2编程到擦除的块10中,14,15,以至于在时间点t9块10除了扇区1到N还包括新的扇区SS1,SS2,见图4b。然后块10的全部内容再次复制到工作存储器7之中,11,并且随后在时间点t11将块10完全擦除。工作存储器7的存储内容在时间点t10包括新的扇区SS1和SS2通过存储新的扇区SS3在时间点t12得以扩展。除了扇区1到N之外在时间点t12所述扇区中有3个被新的扇区SS1到SS3取代。通过将已更新的扇区1到N编程到擦除的块10之中,对工作存储器7的存储内容执行编程,14,15,借此在块10中对扇区1到10进行编程,包括用于取代扇区1到N中三个扇区的新的扇区SS1到SS3。当主机1需要将多个扇区1到N写入闪速存储器9之中的时候,必须针对每个要写入的扇区SS1,SS2,SS3至SSN重复在图3中表明的步骤。重复这些步骤或操作11,12,13和14是必需的,这是因为闪速存储器9像主处理器6一样对各个扇区的逻辑应用没有任何了解并且由此必须在存储单元S1到SN中相同地处理全部的扇区1到N。
当主机1想要将一定数量的扇区M写入闪速存储器9之中,则需要在闪速存储器9中M次擦除块10和M次将N个扇区编程到闪速存储器9之中。当存储单元S1到SN中每个存储单元的容量分别与扇区1到N的容量相对应,则在512字节的扇区容量和16kB的块容量的情况下得出下述用于存储操作的次数:
-4kB文件相当于8个扇区相当于8次块擦除,12,和8×32=256扇区编程,14
-10kB文件相当于20个扇区相当于20次块擦除,12和20×32=640扇区编程,14
-16kB文件相当于32个扇区相当于32次块擦除,12和32×32=1024扇区编程,14。
例如当主机1将主机1的文件系统的文件分配表(FAT)写入闪速存储器9,并且该表包括例如30个扇区的时候,必须30次擦除块和对30×32=960个扇区进行编程。相对应地,当主机1像在上述实施例中一样通过30个扇区扩展文件系统的文件分配表FAT并新写入的时候,必须再次30次擦除块和对30×32=960个扇区进行编程。在图3,图4a和4b中描绘的方法,在其中将数据从完整的块下载到工作存储器中,改变要写入的存储单元,擦除完整的块并利用在工作存储器中中间存储的数据重新写入,例如在执行大容量存储器的时候已经进行说明,所述方法与Microchip公司的微控制器(PIC,PIC24,PIC32等)一同供应。
为了降低在块的擦除和扇区的编程方面通过在图3,图4a和图4b中描绘的方法产生的高昂的费用,人们能够使用中间存储器(Cache:高速缓冲存储器),先将要写入的数据保存在所述中间存储器中,以便然后在时间上延迟地写入闪速存储器。当在存储与写入闪速存储器之间的间隔时间内有其它用于相同块的要写入的数据抵达进入存储器的时候,所述数据能够与中间存储的数据相组合并且必须只对所涉及的块擦除一次并写入。
如在图4a和图4b中所表明的,用于避免大量的块擦除和扇区编程的另一个备选的方案在于使用复杂的文件系统,例如TFFS(True Flash FileSystem,真闪速文件系统)。在TFFS中数据是这样在闪速存储器中分派:不是立刻就要求擦除和写入,而是在相关的块不含数据,即未使用的情况下才要求。但是在这种情况下要求,将原始的文件系统,例如FAT,FAT32“翻译”成在闪速存储器中使用的文件系统。即,如果要在闪速存储器之中写入已更改的数据,则这些数据通过闪速文件系统写入空白的,已经擦除的块中并且旧的数据在旧的位置标记为“老化”。在此借助翻译表进行数据与在闪速存储器中实际物理的存储位置之间的逻辑分派。只有当在块中全部的数据都标记为“老化”的时候,才能擦除所述块。当包括并执行翻译表的存储控制器不再从事读取,写入和擦除操作的时候才进行擦涂。
因此在将要写入工作存储器的数据中间存储在中间存储器中的情况下,需要延迟直接将数据写入闪速存储器,以便能够在全部已收集的数据在闪速存储器中共同编程之前收集其它数据。闪速文件系统TFFS虽然立刻将数据写入闪速存储器,但是延迟擦除。除了用于实现中间存储器和单独的存储控制器的高额的技术费用,其中所述存储控制器需要翻译表用于使在与主机之间的接口处寻址的逻辑单元与在闪速存储器中使用的物理单元相连接,在相对该解决方案简化的解决方案中虽然可以放弃中间存储器和单独的存储控制器,但是必须以在块擦除和扇区编程上巨大的费用为代价。
发明内容
因此本发明的任务在于,提供一种用于控制闪速存储器的方法,利用所述方法能够简单和高效地将主机的数据存储在闪速存储器之中。尤其在不要求使用中间存储器和/或单独的、具有翻译表的存储控制器的情况下应减少对于存储所要求的擦除和写入操作的数量。通过规定用于控制闪速存储器的方法(在所述方法中能够以简单的方式减少存储所要求的擦除和写入操作的数量),和通过规定用于执行所述方法的计算机产品能够在将数据存储在闪速存储器上的过程中缩短反应时间和延长闪速存储器的使用寿命。
按照根据本发明的用于控制闪速存储器的方法,所述闪速存储器由可连接主机的通信设备包括和用于大容量存储将存储的数据,闪速存储器分成块,所述块分别包括存储单元。只有在写入存储单元之前擦除要写入的存储单元的块的全部的存储单元,才能重写已写过的存储单元。闪速存储器这样进行控制,使得其数据在写入之后与写入之前相比没有变化的至少一部分的要写入的存储单元,既不写入也不擦除,并且其数据在写入之后与写入之前相比发生变化的至少一部分的要写入的存储单元无需再次擦除即可写入要存储的数据。在将闪速存储器作为通信设备的次要设备使用的情况下闪速存储器的这种方式的控制是可行的,其中不需要单独的存储控制器。同样不需要中间存储器和/或单独的、具有翻译表的存储控制器用于执行按照本发明的方法。此外闪速存储器的控制不需要关于位级以上的主机的要写入的数据的逻辑内容的信息,在所述位级中各个数据位能够具有数值为“0”或“1”的内容。一个字节由8个位组成。每个位可以取值“0”或“1”。擦除的字节的8个位可以全部具有数值“1”,使得字节具有二进制值“11111111”。该值在二进制中相当于值“0b11111111”或在十六进制中相当于值“0xFF”。对于闪速存储器的控制也可以只有一个信息,要写入的数据是否分别具有其中位值不等于“0xFF”的字节。该信息可以通过在各个位的级,即在位级上数值的分析产生。备选地或补充地该信息也能够通过在各个字节的层级,即在字节级上产生。如果字节具有十六进制位值“0xFF”,则该字节的所有的位都分别具有数值“0”。因此在字节级或较低的级,即在位级检查数据的内容,对于将闪速存储器的数据的值与要写入的数据的值相比较是足够的。因为闪速存储器的擦除的和在擦除之后没有再次写入的区域通常具有值“0xFF”,所以字节级的数值的信息足以确定,擦除的区域或其中的一部分是否会将要写入的数据的各个字节的其它值覆盖。因此闪速存储器控制仅在下述方面有差别,即要写入的数据的每个字节的值是否与要写入的擦除的存储单元的每个字节的值不同。当要写入的数据与擦除的存储单元的各个字节的值有差别时,则能够放弃重新擦除存储单元并且将数据写入要写入的存储单元之中。但是如果要写入的数据与要写入的存储单元的数据没有差别,那么在写入的存储单元中的存储能够保留,原因在于要写入的存储单元的各个字节的值与即将写入存储单元中的数据的各个字节的值相对应。通过这种方式,通过在字节级简单地比较要写入的数据的内容与要写入的存储单元的内容之间的相似性,避免不必要的擦除和只有在基于要写入的数据的内容与写入的存储单元的内容之间的差别要求写入的时候,才能向写入的存储单元写入数据。可以在没有其它中间步骤的情况下直接地在将数据存储到至少一部分的要写入的存储单元内之前进行要写入的数据的内容与要写入的存储单元的内容比较。
闪速存储器是例如闪速EEPROM半导体存储器。闪速存储器的类型,像NOR-闪存,NANDSLC或NAND-MLC都适合作为闪速存储器。通信设备可以是计算机,移动电话,平板电脑,PDA(个人数字助理),智能电话或其它包括闪速存储器的通信设备。闪速存储器可以用作通信设备的次要设备,其中避免中间存储器或存储控制器,例如按照在图1和图2中表明的通信设备,或用作通信设备的主要设备,其中具有中间存储器或存储控制器作为自己的组件。
通信设备不必是终端设备,而是通信终端设备本身可以实施作为服务器,例如以台式机或笔记本电脑的形式。因为既不能擦除在写入之后与写入之前相比没有变化的数据也不能向要写入的存储单元写入数据,和在要写入的擦除的存储单元或其中的一部分中无需执行再次擦除和只需写入那些与擦除的存储单元或其中的一部分不同的数据,因此可以避免不必要的擦除和/或写入操作。通过这种方式降低用于将数据存储在闪速存储器中需要的擦除和写入/编程操作,这体现于在存储时降低反应时间和提高闪速存储器的使用寿命。此外因为擦除和/或写入操作的延迟限定于在字节级比较要写入的数据的内容与要写入的存储单元的内容并且可取消中间存储器和/或与通信设备的主处理器有差别的存储控制器,因此在存储数据时会降低反应时间并且通过这种方式使闪速存储器的总性能最大化。
在实施方式中通信设备通过接口与主机连接并且由通信设备从接口读取有关由主机向闪速存储器传输的数据量的信息并且为了控制闪速存储器进行评估。即使没有中间存储器或存储控制器,在与主机的接口处也存在有关由主机向闪速存储器传输的数据量的信息。从接口读取所述数据并且对其进行评估用于控制闪速存储器,其中在写入过程中没有写入新的数据的存储单元在擦除闪速存储器中的块之后不会重新写入已经在存储单元中存储的数据,而是保留在擦除状态,直到新的数据在后来的写入过程中写入存储单元。因此,通过保存在接口处的有关要存储的数据量的信息能够在写入过程中为进入的新的信息准备擦除的存储单元,以便所述存储单元不被已经保存在存储单元中的数据覆盖。
有利地,有关由主机向闪速存储器传输的数据的信息存在于大容量存储器协议中,尤其是USB大容量存储器协议中。例如大容量存储器协议包括关于应有多少个主机的扇区写入闪速存储器中的信息。该信息传输给闪速存储器的写入功能。现在该写入功能阻止,向刚刚擦除的存储单元写入数据,所述的存储单元在后来的写入过程中被覆盖。因此所述存储单元保留在擦除状态,使得只有新的数据编程到闪速存储器中,其中不必在写入新的数据之前再次擦除要编程的存储单元。有关由主机向闪速存储器传输的数据的信息尤其存在于USB大容量存储器协议中。在此该信息独立于中间存储器或存储控制器存在于与主机之间的接口之中。
在另一个实施方式中,由接口提供有关依次写入的存储单元的数量的信息,要传输的数据写入所述存储单元。通过有关依次写入的存储单元的数量的信息能够为依次的写入操作提供或储备闪速存储器的块的用于写入数据的相关联的区域。因为主机的扇区的数据内容的大小在用于传输数据的接口中必须是已知的,所以仅从应该写入闪速存储器中的扇区的数量就可以推断出依次写入的存储单元的数量。
在另一个实施方式中,除了第一要写入的存储单元的内容之外接口提供有关在第一存储单元之后的存储单元的数量的附加信息。因此当主机需要将一定数量的扇区写入闪速存储器,所述扇区的大小分别与存储单元的一定数量的存储部件相对应,则主机通过接口向闪速存储器发送任务,将第一扇区连同附加信息写入闪速存储器之中,使得在M个要写入的扇区中还跟随M-1个扇区。闪速存储器的块,在其中第一扇区应写入存储单元的存储部件的一部分,必须在写入扇区之前进行擦除,原因在于只能擦除完整的块。在该块中在写入过程中没有写入涉及的存储单元的数据在写入过程期间不允许改变并且必须保持不变。对此将来自完整的块的数据中间存储在例如通信设备的工作存储器中,通过替换已中间存储的部分数据将即将写入的数据添加给中间存诸的数据,擦除闪速存储器中完整的块和通过包括要写入的数据的中间存储的数据对其重新编程。在此只对闪速存储器中那些必须保持不变的数据进行编程,即第一扇区S前面的那些扇区,以及从S+M扇区起的那些扇区,其中同样对已经包含新数据的第一扇区S本身进行编程。当后面的扇区S+1至S+M-1是由主机传输,则将所述扇区分别编程到闪速存储器中所提供的已经擦除的区域中。通过这种方法,闪速存储器中那些要写入的、其数据在写入之后与写入之前相比不变的区域,既不会擦除也不写,而是为那些向所述区域写入新的数据的写入过程保留。因此,即使没有关于在闪速存储器中即将写入的数据的内容的信息,只通过关于要写入的数据量的信息也能够,在不会丢失已存储的数据的情况下节省擦除和写入操作。
在优选的实施方式中,由主机传输的在闪速存储器的块的至少一个存储单元中要写入的数据在写入至少一个存储单元之前发生反转。通过这种方式可以在对未用过的存储单元使用十六进制值“0x00“的文件系统中通过反转生成数值“0xFF“,该值与闪速存储器中擦除的,没有写的存储单元的值相符合。反转是通过下述方式进行,将每个数值为“0“的位转换成数值为“1“,反之亦然。通过这种方式,文件系统的未用过的、具有数值“0x00“的区域转换成数值为“0xFF“的区域。因为在闪速存储器中字节的数值“0xFF“与擦除的,没有写的状态相对应,在反转之后不再对文件系统的未用过的区域进行编程。只有当文件系统的内容在该区域中发生变化并且包括其他数值作为“0x00“的时候,在反转之后也必须将该区域编程到闪存之中。但是在编程之前不要求擦除,这是因为擦除的区域还一直包括具有数值为“0xFF”的未擦除的字节和如果不先擦除不能覆盖。数值“0“对应于十六进制值“0x00“,其中例如位置文件分配表FAT的两次复制在未使用的位置具有数值“0“。文件系统的未使用的部分经常写入,其中没有发生变化。对于闪速存储器,在每一个过程中写入意味着擦除并重新编程存储单元。通过文件系统的未使用的区域的反转这些区域的数值反转成闪速存储器的擦除的,没有写入的区域的值。通过使文件系统的未使用的区域的值与擦除的存储单元的值的所述均衡,不再要求对这些区域进行编程。因此利用该实施例实现进一步节省擦除和/或写入操作。
在另一个实施方式中,在多个要写入的、要传输的数据会写入其中的存储单元中,用于全部存储单元的数据发生反转。虽然该实施方式具有下述缺点,即必须为文件系统的已使用的、不含数值“0x00”区域进行反转,以便能够在从闪速存储器读取的过程中使用这些数据。但是该实施例也有优点,闪速存储器不需要有关要存储的数据的逻辑内容的信息。“数据反转”操作类似于“复制扇区1到N”,11,见图3,图4a和图4b和“将新的扇区编程到工作存储器中,13,,见图3,图4a和图4b”等操作,可以忽略掉,这是因为它们只需要部分时间用于擦除块,12,和对块进行编程,14。
在另一个实施方式中与此相对应地规定,应写入闪速存储器中的主机的数据的未使用的字节,在保存在接口中的情况下具有十六进制值0x00的字节,在反转之后在闪速存储器中具有擦除的字节的十六进制值0xFF,和替代将十六进制值0xFF写入擦除的存储单元在没有重新擦除的情况下保持在擦除状态。
除了用于控制闪速存储器的方法本发明此外还涉及用于执行这种方法的计算机程序产品。例如计算机程序产品能够以软件的形式存在。计算机程序产品可以作为二进制数据存储在软盘,DVD,CD-ROM或存储卡上面。此外计算机程序产品还能够以打印源代码的形式存在。
本发明此外还包括一种通信设备,计算机程序产品安装在所述通信设备上面。通信设备具有与按照本发明的用于控制闪速存储器的方法相符合的作用和优势和能够作为台式机,笔记本电脑,服务器,固定电话,移动电话,智能电话或平板电脑存在。通信设备可连接的主机可以作为服务器或其它主机存在。主机能够除了作为能联网的电脑的复合结构和/或网络之外还能够以主机系统的形式存在。由此主机也可以构成互联网或以太网。
附图说明
下面借助图5至图8来说明本发明的另外实施例以及优势。为了取得更清楚的显示效果在图中没有完全按比例尺或比例的进行显示。如果未加另行说明,在图中相同的符号代表具有相同意义的相同的单元,其中参考已经讨论的图1至图4b的标记。其中:
图1示出传统的通信设备,所述通信设备包括闪速存储器9,
图2示出在图1中表明的传统的通信设备,其中闪速存储器的控制通过主处理器进行,所述主处理器通过接口与主机连接,
图3示出用于将扇区存储在闪速存储器中的传统方法,
图4a和4b示出用于将多个扇区存储在闪速存储器中的传统方法,
图5a和5b示出按照本发明的用于将多个连续的扇区存储在闪速存储器中的方法的第一实施方式,
图6a和6b示出按照本发明的用于将主机的特定的扇区存储在闪速存储器中的方法的另一实施方式,
图7a和7b示出按照本发明的通过反转来将主机的特定的扇区重写在闪速存储器中的方法的另一实施方式,以及
图8a和8b分别示出表,鉴于擦除操作的次数(图8a)和编程操作的次数(图8b)用于比较在图4至图7中示出的方法。
具体实施方式
在图5a和5b中表明按照本发明方法的第一实施方式,在其中有多个连续的扇区SSN,SS1N,SSMN应该存储在闪速存储器9的块10中。在时间点t1,将扇区1到N存储在块10的存储单元S1到SN中。在这之后将扇区1到N复制到工作存储器7中,11,以便在时间点t2扇区1到N已经存储在工作存储器7中。在时间点t3完全擦除块10,以致于存储单元S1到SN的每个处于擦除状态SG。在时间点t1到时间点t3的方法步骤与在图3中表现的不同。M个扇区应该从主机1编程到闪速存储器9中。所述M个扇区分成扇区S新,SSN,扇区S+1新,扇区SS1N,其它扇区和扇区S+M-1新,SSMN,其中M是整数。替代只将第一要写入的扇区SSN写入工作存储器,如在图3中在时间点t4表明的那样,通过接口5将第一要写入的扇区SSN和向通信设备2传输的信息IN1,即后面还有M-1个扇区要写入闪速存储器9中,写入工作存储器。在时间点t20只有第一扇区SSN保存在工作存储器7中,21,其中并不是工作存储器7的全部内容在时间点t20编程到擦除的块10中。而是对扇区1到S-1,S作为新的扇区和扇区S+M至N进行编程,22。因此在时间点t21擦除布置在扇区SSN和扇区S+M之间的存储单元。块10的这个擦除的区域SSG可供下述的写入操作或写入过程使用,用于将主机的新的数据写入块10中。因此通信设备2或闪速存储器9的控制这样地将信息IN1(还有M-1个扇区用于写入闪速存储器9)应用于块10,使得还没有写入闪速存储器9的块10中的扇区SS1N至SSMN作为擦除的区域SSG保留在块10中。在时间点t22利用下一个要写入的扇区S+1新,SS1N写工作存储器7,其中从接口5除了下一个要写入的扇区SS1N之外还向通信设备2传输信息IN2,即后面还跟随M-2个扇区用于写入块10。信息IN2传输给闪速存储器的控制,所述控制在图2中表明的通信设备2中,通过主处理器承担。然后在块10中只对新的扇区S+1新,SS1N编程,24,块10由此在时间点t23除了第一新的扇区SSN还存储第二扇区SS1N。按照时间顺序,在图3,4a,4b,5a,5b,6a,6b,7a和7b中用字母t和向下的箭头表示,将各个扇区从接口5存储到工作存储器7并且从那里存储到块10中的方法会延续下去,这在图5a中通过表述“等等”和箭头25表明。一旦可以将最后要存储的扇区SSMN写入块中,该扇区被存储在工作存储器7中,并且最后新的要存储在闪速存储器9之中的扇区S+M-1新,SSMN存储在擦除的单元的区域SSG的最后仍保留的处于擦除状态SG的存储单元中。在即将依次存储的M个扇区的最后的扇区中,不会再由接口向闪速存储器9的控制传输任何其它信息,这是因为不需要这样的信息。因为擦除的、保留的区域SSG基于第一信息IN1(M-1个扇区要存储到闪速存储器9的块10中)是这样保留,使得该擦除的区域足以应对全部即要写入块10的M个扇区。如果在另一个实施方式中只要求传输信息IN1,即还有M-1个扇区要写入存储器中,其中可以取消信息IN2,其后面还有M-2个扇区要写入闪速存储器9中。
当主机1需要将一定数量的连续的扇区M写入闪速存储器9之中,并且将所述要写入的扇区全部写入块10的存储单元的时候,那么擦除一次在闪速存储器9中的块10并且在闪速存储器9中对N个存储单元编程。如果连续的扇区分成多个块,是如下的情况,即S和M的和大于块中存储单元的数量N,则必须将全部用于存储的块B分别擦除一次和在闪速存储器9中对BxN个扇区编程。在这种情况下假定,存储单元的数据量与扇区的数据量相对应。
在512字节的扇区容量和16kB的块容量的情况下在写入闪速存储器9时要求下述操作:
-4kB的文件相当于8个扇区(在一个块中)相当于1次块擦除和32扇区编程,
-4kB的文件相当于8个扇区(在两个块中)相当于2次块擦除2×32=64扇区编程,
-10kB的文件相当于20个扇区(在两个块中)相当于2次块擦除和2×32=64扇区编程,
-16kB的文件相当于32个扇区(在两个块中)相当于2次块擦除和2×32=64扇区编程。
例如当主机1写入文件系统的文件分配表FAT并且该表由30个扇区构成,则必须在将30个扇区分布在两个块上的情况下最多擦除块2次并且对2×32=64个扇区进行编程。如果主机以如上述示例中的30个扇区扩展文件系统的FAT并且重新写入,则再次将块擦除2次并且将2×32=64个扇区编程到闪速存储器9中。在图6a和6b中表明按照本发明的方法的另一实施方式,在其中主机1的特定的扇区存储在闪速存储器9中。如在图3和图5a中所描绘,在时间点t1在存储单元S1到SN中包括扇区1到N的块10完整地复制到工作存储器7中11,并且然后在时间点t3将块10完全擦除,由此全部的存储单元S1到SN在块10中处于擦除状态SG。主机考虑将FAT或包括M个扇区的索引写入闪速存储器9。因此主机通过接口5向闪速存储器9的控制下达任务,将M个扇区中的包括第一分区SA和第二分区U的第一扇区写入块10并伴有信息IN1,即后面还有M-1个扇区用于存储。信息IN1作为要写入第一扇区的分区SA和U的补充从主机1的信息中构建接口5,有多少个扇区要写入。与在图5a和5b中所示的按照本发明的方法的第一实施方式相反,在第一要存储的扇区的要存储的分区SA和U中的数据发生反转,31。在此第一要写入的扇区的第一分区SA反转成第一分区SAI,其中第一要写入的扇区的未使用的第二分区U含有十六进制值0x00,反转成第一要写入的扇区的第二分区G,并且在反转之后含有十六进制值0xFF。因此通过这种方式反转的第一要写入的扇区作为反转的第一分区SAI和反转的第二分区G在时间点t30编程到工作存储器7之中。之后按照在图5a中示出的编程步骤22将扇区1到S-1,由两个分区SAI和G构成的要写入的反转的扇区S和扇区S+M到N编程到块10中,32。就是说只有必须保持不变的数据才能编程到闪速存储器9之中,即全部的在扇区S前面的扇区,以及继扇区S+M之后的扇区,第一要写入的、包括新的和反转的数据的扇区本身。在时间点t31,在包括未发生变化的扇区1到S-1和S+M到N的块10中存在擦除的区域SMG,所述区域可用于主机1的其它要存储的扇区。至于第一要存储的扇区,只有在块10的存储单元中与用于擦除的数据的值0xFF有别的数据才能存储在块10中。因此只有第一要存储的扇区的第一分区SAI存储在块10中和第一要存储的扇区的第二反转的分区G则不会编程到块10中,原因在于所述分区的值与擦除的存储单元的内容0xFF相对应对应。紧跟在第一要写入的扇区后面的第二扇区S1L是所谓的“空白”扇区,这是因为在该扇区中数据包括数值为0的未使用的字节,所述扇区与十六进制值0x00相对应对应。扇区S1L像在将第一要写入的扇区存储到工作存储器7一样发生反转,31并且作为反转的扇区S1LI存储在工作存储器7中。此外接口5向闪速存储器9的控制传递信息IN2,即还有M-2个扇区需要存储在闪速存储器9中。因为第二要写入的扇区S1LI在反转之后最终具有十六进制值0xFF,所述值在擦除的区域SMG的擦除的状态SG与存储单元的内容相对应,因此该区域将不编程到块10中,34。取而代之,所述块在时间点t33与在时间点t31一样处于相同的状态。因为擦除的存储单元的内容与第二要写入的扇区S1LI的内容相对应,因此通过未执行的对反转的第二要写入的扇区S1LI进行编程不会丢失数据内容。
当后面的扇区是由主机1传输给接口5,则只有在这些扇区所包括的数据与数字为0的未使用的数据不同,在所述值与十六进制值0x00相对应的情况下,才能在闪速存储器9的擦除的区域SMG中对它们进行编程。只要这些扇区是“空白”,即只包括0x00的字节,这些区域则通过反转成为在其中全部的字节包括0xFF数值的区域,所述区域与闪速存储器9中擦除的区域SMG的擦除的存储单元的内容相对应。因此这些“空白”扇区不会编程到闪速存储器中。按照图6a表明的最后的要存储的扇区S1ML也是只包括0值的未使用的字节。在反转之后该扇区作为具有0xFF数值的反转的扇区S1MLI在时间点t34存在于工作存储器7之中。因为反转的最后的要写入的扇区S1MLI与块10中擦除的区域SMG一样具有相同的数据内容,因此不会执行编程步骤用来将扇区S1MLI写入块10中,36。而是擦除的区域SMG的擦除的存储区域S1MLI与最后的要写入的反转的扇区S1MLI的数据内容相对应对应。通过反转要写入的扇区的数据,其中所述扇区包括未使用的数据,按照本发明可以放弃编程步骤,这是因为擦除的存储区域的数据和包括未使用的数据的扇区的反转的数据彼此相对应。虽然为了使用反转存储的数据必须采取反向反转,所述反向反转对应于再一次反转,但是用于反转的时间成本和计算成本与用于编程的时间成本和计算成本几乎是无足轻重,能够忽略不计。
在图7a和7b中表明了按照本发明方法的另一实施方式,在其中主机1的特定的扇区重写在闪速存储器9中。在图7a中假定在时间点t33的状态作为块10的初始状态,如在图6a和6b中分别所示。在与在图6b中所示的时间点t34相对应的时间点t34将全部的扇区1到N复制到工作存储器7中之后,应将M个扇区重写到闪速存储器9之中。第一要写入的扇区包括第一分区SA和第二分区BE以及第二要写入的扇区S1N。其它要写入的扇区是所谓的“空白”扇区,只包括未使用的数据。最后一个写入的“空白”扇区是扇区S+M+1,S1ML。在向接口5传输要写入的扇区之后,37,由接口5将包括分区SA和BE以及信息IN1(后面还有M-2扇区要写入)的第一要写入的扇区向闪速存储器的控制传输。之后,包括分区SA和BE的第一要写入的扇区反转并且在时间点t35作为反转的分区SAI和BEI存储到工作存储器7中。随后,因为第一分区SAI已经在块10中编程,只将第二分区BEI作为第一要写入的扇区S的剩余部分编程到块10之中,其中不要求擦除块10的存储单元,39。因此在时间点t36在块10中原先擦除的区域STG通过第一要写入的扇区的反转的第二分区BEI取代。紧接着第二要写入的扇区S1N由接口5从主机1的文件系统中读出,40并且连同信息IN2(还有M-2扇区要写入)向闪速存储器的控制传输。在将扇区S1N的数据反转之后,31,在时间点t37将该扇区作为反转的扇区S1NI存储到工作存储器7。然后将第二要存储的扇区以反转的形式S1LI编程到块10的保留的擦除的区域SMG。因此在时间点t38在块10中编程第一要存储的扇区的反转的分区SAI,BEI和反转的第二要存储的扇区S1LI。读取各个要编程的扇区的方法,包括信息,即后面还有多少个扇区要存储,在工作存储器中的反转、存储和将通过未使用的数据,即有效数据占用的反转的扇区编程到闪存块10中将继续进行,直到将最后一个要存储的扇区编程。在图7b中所述最后一个扇区S1ML是所谓的“空白”扇区,该扇区在反转之后,31,在时间点t38作为反转的扇区S1MLI在工作存储器中编程。因为反转的扇区S1MLI只包括数值为0xFF的数据,该数值与块10中擦除的存储单元S1MLG的内容相对应,因此不执行将反转的扇区S1MLI编程到块10中,36。因此在时间点t39,与在时间点t33相比块10额外地包括第一要写入的扇区的反转的第二分区BEI和反转的第二要写入的扇区S1LI。在图7a和7b中所示的实施例包括以下这种情况,主机需要将文件分配表FAT或索引这样地升级,使得包括已有数据的部分保持不变和将额外的数据存储在到目前为止擦除的区域中。块10的保持不变的区域是利用扇区1到S-1和S+M到N占用。擦除的区域,即通过额外的数据占用的区域为区域SMG。因为已经处于闪速存储器9之中的数据不会部分地变化,而是只有至今未擦除的区域写上数据,所以在写入之前不必完整地擦除闪速存储器9的块10。在数据与闪速存储器的擦除的区域有区别的情况下,将数据从完整的块10下载到工作存储器7,将用于要写入的扇区、由主机传输的数据在反转之后存储在工作存储器7中和然后编程到闪速存储器9中。在图7a和7b中的实施例中这涉及第一要写入的扇区的第二部分BE和将扇区S1N作为第二要写入的扇区。在后面的、由主机1传输的扇区包括的数据与未使用的数据不同的情况下,只能将它们编程到闪速存储器9的相应地已经擦除的区域SMG中。只要这些扇区是“空白”,即只有数值为0x00的字节,这些区域通过反转会变成在其中全部的字节具有数值0xFF的区域,所述值闪速存储器中擦除的区域SMG的内容相对应。由此这些“空白”扇区不编程到闪速存储器。在图6和7所述的方法中不在文件分配表FAT,索引或数据区域之间进行区别,而是平等地为全部的要写入的扇区执行反转。虽然这种方法具有缺点,“不必要地”使包括已使用的值的扇区反转,其中所述已使用的值与未使用的值不同,但是也具有如下优势,即闪速存储器的控制不需要关于要写入的扇区的逻辑内容方面的信息。如果存储控制器具有关于不同的扇区的逻辑内容方面的信息,可以放弃平等地反转全部要写入的扇区和只有那些其数据具有未使用的值0的扇区反转,其中0值对应十六进制值0x00。
从图6和7的实施例中产生下述示例:
在512字节的扇区容量和16kB的块容量的情况下在写入闪速存储器9时要求下述操作,其中假定每个块有32个存储单元,所述存储单元能够分别存储:
-4kB的文件相当于8个扇区(在一个块中)相当于1次块擦除和32扇区编程,
-4kB的文件相当于8个扇区(在两个块中)相当于2次块擦除和2×32=64扇区编程,
-10kB的文件相当于20个扇区(两个块)相当于2次块擦除和2×32=64扇区编程,
-16kB的文件相当于32个扇区(两个块)相当于2次块擦除和2×32=64扇区编程。
例如当主机1写入文件系统的文件分配表FAT并且该表由30个扇区构成,其中20扇区不含数据(即“空白”),则必须在将30个扇区分布在两个块上的情况下最多擦除块2次和对2×32-20=44个扇区进行编程。如果主机1将文件分配表FAT扩展并且通过30个扇区重写,其中只有16个扇区含有未使用的数据,即“空白”,则不必擦除任何块和对20-16=4个扇区进行编程。
在图8a中所示为在按照图4到7中的流程51执行所述方法的情况下擦除操作50的次数的汇总表。假定,块10具有32个存储单元,其中每个存储单元能够分别存储扇区。因此假定,在块中能够存储32个扇区。在4kB的文件中,所述文件相当于8个扇区并且存储在2个块中,52,按照在图4中所示的流程传统的方法导致8次擦除操作,12,在其中每次完整地擦除块。其原因在于,即使只对块中唯一的扇区进行编程,也必须事先分别擦除整个块。与在图4中所示的流程相反,在按照本发明的方法中按照在图5至7的流程,其中写入了数据的块分别只擦除一次。因为需要将8个扇区写入2个块中,因此与8次擦除操作,53,相反只要求2次擦除完整的块,54,56。由此,在将8个扇区写入2个块中的情况下擦除操作的次数,52,在按照本发明的方法中仅为传统的方法所要求的完整的块的擦除操作次数的25%。例如,在由分布在2个块中的30个扇区构成的文件分配表FAT的说明中,其中在要写入的30个扇区中有20扇区未使用的数据占用,即“空白”,58,在按照图4所示的传统的方法中要求30次擦除完整的块。与此相反,在按照图5至7所示的按照本发明的方法中只要求2次擦除完整的块,这是因为30个扇区写入2个不同的块中。如果按照将8个扇区写入2个块的实施例以闪速存储器的状态出发点,其中20扇区含有未使用的数据,即“空白”,58,通过30个扇区扩展文件分配表FAT,其中有16个扇区含有未使用的数据,即“空白”,59,则对于按照图4所示的传统的方法重新产生30次擦除完整的块。与此相反,按照在图5中所述的按照本发明的方法,在没有反转要写入的数据的情况下要求2次擦除完整的块,61,与在按照图4所示的传统的方法中擦除的次数相比这只占其中的6.66%,62。因为在按照图6和7所述的按照本发明的方法中,在其中要写入的数据在编程到闪速存储器之前发生反转,只需将4个含有有效数据的扇区存储在闪速存储器中,因此在使要写入的数据反转的情况下取消每次擦除已有的块,0。
在图8b中所示为按照图4到7的方法流程,将工作存储器7中的数据编程到闪速存储器9的块10的编程操作数量,65。编程操作对应图4a和4b中的步骤14和图5a和5b中的步骤22,24,26。此外编程操作还分别对应图6a中的步骤32和图7a中的步骤38,41。在图8a所讨论的示例4kB的文件中,其中所述文件相当于8个扇区,和应写入2个块中,52,在假定如在图8a所示,能够将32个扇区写入块中的情况下,对于图4所示的传统方法产生256个编程操作的数量,66。因为在传统的方法中必须为每个扇区擦除全部32个存储单元,要求8x32=256次编程操作。与此相反,在按照图5-7的按照本发明的方法中只需要64次编程操作,67,69,所述编程操作是通过下述产生,对两个要写的块的每一个块完整地编程一次,即编程32次。由此导致,在图5-7中所示的按照本发明的方法中无论是在擦除操作次数方面还是对于编程操作的次数其系数都相当于在图4所示的传统方法的1/4,70(25%)。在将包括30个扇区的文件分配表FAT写入2个块的情况下,其中30个扇区中有20个扇区包括未使用的数据,71,对于图4所示的传统方法产生960次编程操作(分别对32个扇区进行30次编程)。与传统方法相反,在按照图5的按照本发明的方法中在没有将写入的数据反转的情况下只要求64次编程操作(对两个已写入块的每一个块完整地,即分别32次编程)。因为在按照图6和图7的按照本发明的方法中,在其中要写入的数据在存储在块10中之前反转,不对包括相同的值的数据像存储单元进行编程,在这种情况下替代64次编程操作,按照图5所示的方法只需要40次编程操作(64-20=44)。如果在已经将包括30个扇区的文件分配表FAT写入2个块之中情况下以闪速存储器的状态为出发点,其中30个扇区中有20个扇区含有未使用的数据,用30个扇区扩展所述文件分配表FAT,其中的16个扇区含有未使用的数据,72,对于图4所示的传统方法再次产生960次编程操作的数量,73。在数据没有反转的情况下,在按照图5的按照本发明的方法中要求64次编程操作的数量(74)。64次编程操作相对按照图4的传统方法的960次编程操作仅为6.66%,75。相对在图4中所示的传统方法。通过在图6和图7中所示的按照本发明的方法能够实现更加大幅度地减少编程操作次数。因为在30个要写入的扇区中有16个扇区含有未使用的数据和20个扇区在块10中作为擦除的存储单元存在,在扩展文件分配表之后在这20个扇区中剩下16个作为擦除的存储单元,因此在擦除的存储单元中只对4存储单元利用与未使用的数据不同的数据进行编程,76。相对于传统的方法这只相当于所要求的编程操作次数的0.42%。
借助示出的实施方式所说明的本发明的特征,像在图6a,6b,7a和7b中的使要写入的数据反转31,和在图7a中的只对存储单元中扇区的一部分编程38,在本发明的其它的实施方式中也可存在,例如在图5a和/或图5b中,除非进行另行说明或由于技术原因本身是不允许的。
总而言之,通过按照本发明的方法和用于执行按照本发明的方法的计算机程序产品可以充分使用,使得即使在没有闪速存储器的控制的存储控制器的情况下也存在关于要写入闪速存储器之中的数据量的信息。根据要写入的数据量的信息能够将必要的用于写入数据的存储单元作为擦除的单元保留,直到写入数据,以便能够避免完整的块的擦除操作。此外通过按照本发明的方法可以充分使用,常用的文件系统FAT/FAT32包括具有相同的数值的各个要写入的区域的未使用的区域,该值在未使用的区域的值反转之后对应块的擦除的、没有写的存储部件的值。因此在写入包括未使用的区域的扇区的时候,可以在未使用的区域反转之后放弃将这些未使用的区域编程到闪速存储器中。通过这种方法可以降低所要求的擦除操作和编程操作的数量,借此将提高用于将数据写入闪速存储器上的速度和闪速存储器的使用寿命。
Claims (10)
1.用于控制闪速存储器(9)的方法,所述闪速存储器由可与主机(1)连接的通信设备(2)包括并且写入有要存储的数据(SS1,SSN,SS1N,SA,BE,S1N,S1ML)用于大容量存储,在其中
-将所述闪速存储器(9)分成块(10),所述块分别包括存储单元(S1-SN),
-只有当写入所述存储单元(SS1)之前擦除所要写入的存储单元(SS1)的块(10)的全部的存储单元(S1,S2,SS1,SN)时,能重新写入已写入的存储单元(SS1),
-如此控制所述闪速存储器(9),使得其数据(SG,SS1N,SAI,BEI,S1MLG)在写入之后与写入之前相比没有变化的至少一部分的要写入的存储单元(S1-SN)既不写入也不擦除,以及
-在擦除状态中其数据(SG)在写入之后与写入之前相比发生变化的至少一部分的要写入的存储单元(SSG,STG,SMG)写入要存储的数据(SS1N,BEI,S1NI)而无需重新擦除。
2.根据权利要求1所述的方法,在其中所述通信设备(2)通过接口(5)与主机(1)连接并且由所述通信设备(2)从所述接口(5)取得有关由所述主机(1)向所述闪速存储器(9)传输的数据的数量的信息(IN1,IN2)并且对所述信息进行评估用于控制闪速存储器(9)。
3.根据权利要求1或2所述的方法,在其中有关由所述主机(1)向所述闪速存储器(9)传输的数据(SSN,SS1N,SA,BE,S1N,S1ML)的信息(IN1,IN2)存在于大容量存储器协议中,尤其是USB大容量存储器协议中。
4.根据权利要求2或3所述的方法,在其中由所述接口(5)提供有关要依次写入的存储单元(SSG,SMG)的数量的信息(IN1,IN2),所述要传输的数据(SSN,SS1N,SA,BE,S1N,S1ML)应写入所述存储单元中。
5.根据权利要求4所述的方法,在其中除了所述第一要写入的存储单元的内容(SSN,SS1N)之外所述接口(5)还可以提供有关在所述第一存储单元(SSN,SS1N)之后的存储单元的数量的附加信息(IN1,IN2)。
6.根据权利要求2-5中任一项所述的方法,在其中由所述主机(1)传输的在所述闪速存储器(9)的块(10)的至少一个存储单元(S1-SN)中要写入的数据(SA,BE,S1ML)在写入所述至少一个存储单元(S1-SN)之前反转。
7.根据权利要求6所述的方法,在其中,在其中应写入要传输的数据(SA,BE,S1ML)的多个要写入的存储单元(SMG)的情况下用于全部存储单元(SMG)的所述数据(SA,BE,S1ML)反转。
8.根据权利要求6或7所述的方法,在其中所述主机(1)的数据(U,S1ML)的应写入所述闪速存储器(9)的未使用的字节在保存在接口(5)中的情况下具有十六进制值0x00,在反转之后在闪速存储器(9)中具有擦除的字节的十六进制值0xFF,并且替代将十六进制值0xFF写入擦除的存储单元(STG,S1MLG)在没有重新擦除的情况下将所述擦除的存储单元(STG,S1MLG)保持在擦除(SG)状态。
9.用于执行根据权利要求1-8中任一项所述的方法的计算机程序产品。
10.通信设备(2),根据权利要求9所述的计算机程序产品安装在所述通信设备上面。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102012022728.0 | 2012-11-21 | ||
DE102012022728.0A DE102012022728A1 (de) | 2012-11-21 | 2012-11-21 | Verfahren zur Steuerung eines Flash-Speichers zur Massenspeicherung, der von einem an einen Host anschließbaren Kommunikationsgerät umfasst ist, und Computerprogrammprodukt zur Ausführung des Verfahrens |
PCT/EP2013/003447 WO2014079550A1 (de) | 2012-11-21 | 2013-11-15 | VERFAHREN ZUR STEUERUNG EINES FLASH-SPEICHERS ZUR MASSENSPEICHERUNG, DER VON EINEM AN EINEN HOST ANSCHLIEßBAREN KOMMUNIKATIONSGERÄT UMFASST IST, UND COMPUTERPROGRAMMPRODUKT ZUR AUSFÜHRUNG DES VERFAHRENS |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104995595A true CN104995595A (zh) | 2015-10-21 |
CN104995595B CN104995595B (zh) | 2019-03-08 |
Family
ID=49680967
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201380061011.4A Expired - Fee Related CN104995595B (zh) | 2012-11-21 | 2013-11-15 | 控制闪速存储器的方法、存储介质和通信设备 |
Country Status (6)
Country | Link |
---|---|
US (2) | US20150277786A1 (zh) |
EP (1) | EP2923261B1 (zh) |
KR (1) | KR101700720B1 (zh) |
CN (1) | CN104995595B (zh) |
DE (1) | DE102012022728A1 (zh) |
WO (1) | WO2014079550A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641315A (zh) * | 2016-09-09 | 2021-11-12 | 佳能株式会社 | 信息处理装置以及控制信息处理装置的方法 |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI562158B (en) | 2014-10-13 | 2016-12-11 | Silicon Motion Inc | Non-volatile memory device and controller |
JP5804584B1 (ja) * | 2014-10-30 | 2015-11-04 | ウィンボンド エレクトロニクス コーポレーション | Nand型フラッシュメモリのプログラム方法 |
US10055351B1 (en) | 2016-06-29 | 2018-08-21 | EMC IP Holding Company LLC | Low-overhead index for a flash cache |
US10146438B1 (en) | 2016-06-29 | 2018-12-04 | EMC IP Holding Company LLC | Additive library for data structures in a flash memory |
US10331561B1 (en) | 2016-06-29 | 2019-06-25 | Emc Corporation | Systems and methods for rebuilding a cache index |
US10037164B1 (en) * | 2016-06-29 | 2018-07-31 | EMC IP Holding Company LLC | Flash interface for processing datasets |
US10261704B1 (en) | 2016-06-29 | 2019-04-16 | EMC IP Holding Company LLC | Linked lists in flash memory |
US10089025B1 (en) | 2016-06-29 | 2018-10-02 | EMC IP Holding Company LLC | Bloom filters in a flash memory |
CN106161657A (zh) * | 2016-09-18 | 2016-11-23 | 深圳震有科技股份有限公司 | 一种基于智能手机的短信批量智能收发实现方法及系统 |
TWI621021B (zh) * | 2017-08-25 | 2018-04-11 | 慧榮科技股份有限公司 | 用以優化資料儲存裝置之資料儲存方法及其資料儲存裝置 |
US11514027B2 (en) | 2019-06-07 | 2022-11-29 | Sap Se | Paged hybrid LOBs |
CN110647507B (zh) * | 2019-09-12 | 2022-05-24 | 苏州浪潮智能科技有限公司 | 一种文件系统写状态确定方法、装置、电子设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544356A (en) * | 1990-12-31 | 1996-08-06 | Intel Corporation | Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block |
US20070061504A1 (en) * | 2005-08-22 | 2007-03-15 | Woon-Kyun Lee | Apparatus and method for managing data of flash memory |
US20080065813A1 (en) * | 2006-09-08 | 2008-03-13 | Yan Li | Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB2251323B (en) * | 1990-12-31 | 1994-10-12 | Intel Corp | Disk emulation for a non-volatile semiconductor memory |
FR2711831B1 (fr) * | 1993-10-26 | 1997-09-26 | Intel Corp | Procédé et circuit de mémorisation et de hiérarchisation d'ordres d'effacement dans un dispositif de mémoire. |
US5559988A (en) * | 1993-12-30 | 1996-09-24 | Intel Corporation | Method and circuitry for queuing snooping, prioritizing and suspending commands |
US6763424B2 (en) * | 2001-01-19 | 2004-07-13 | Sandisk Corporation | Partial block data programming and reading operations in a non-volatile memory |
US7644211B2 (en) * | 2004-12-07 | 2010-01-05 | Cisco Technology, Inc. | Method and system for controlling transmission of USB messages over a data network between a USB device and a plurality of host computers |
KR100857252B1 (ko) * | 2007-12-27 | 2008-09-05 | (주)인디링스 | 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법 |
DE112010005870B4 (de) | 2010-11-08 | 2019-10-10 | Hyperstone Gmbh | Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien |
US8391086B2 (en) * | 2011-03-04 | 2013-03-05 | Elpida Memory, Inc. | Mask-write apparatus for a SRAM cell |
-
2012
- 2012-11-21 DE DE102012022728.0A patent/DE102012022728A1/de not_active Ceased
-
2013
- 2013-11-15 WO PCT/EP2013/003447 patent/WO2014079550A1/de active Application Filing
- 2013-11-15 KR KR1020157016424A patent/KR101700720B1/ko active IP Right Grant
- 2013-11-15 US US14/432,373 patent/US20150277786A1/en not_active Abandoned
- 2013-11-15 CN CN201380061011.4A patent/CN104995595B/zh not_active Expired - Fee Related
- 2013-11-15 EP EP13798568.5A patent/EP2923261B1/de active Active
-
2017
- 2017-08-09 US US15/672,373 patent/US10509570B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5544356A (en) * | 1990-12-31 | 1996-08-06 | Intel Corporation | Block-erasable non-volatile semiconductor memory which tracks and stores the total number of write/erase cycles for each block |
US20070061504A1 (en) * | 2005-08-22 | 2007-03-15 | Woon-Kyun Lee | Apparatus and method for managing data of flash memory |
US20080065813A1 (en) * | 2006-09-08 | 2008-03-13 | Yan Li | Methods in a pseudo random and command driven bit compensation for the cycling effects in flash memory |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113641315A (zh) * | 2016-09-09 | 2021-11-12 | 佳能株式会社 | 信息处理装置以及控制信息处理装置的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2014079550A1 (de) | 2014-05-30 |
CN104995595B (zh) | 2019-03-08 |
US10509570B2 (en) | 2019-12-17 |
US20170336992A1 (en) | 2017-11-23 |
US20150277786A1 (en) | 2015-10-01 |
KR101700720B1 (ko) | 2017-01-31 |
EP2923261B1 (de) | 2023-03-08 |
EP2923261A1 (de) | 2015-09-30 |
KR20150089042A (ko) | 2015-08-04 |
DE102012022728A1 (de) | 2014-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104995595A (zh) | 控制由可与主机连接的通信设备包括的用于大容量存储的闪速存储器的方法,和用于执行所述方法的计算机程序产品 | |
CN110781096B (zh) | 用于通过预测需求时间来执行垃圾收集的设备和方法 | |
CN101779195B (zh) | 用于存储器装置的存储地址重新映射的方法和系统 | |
US10802733B2 (en) | Methods and apparatus for configuring storage tiers within SSDs | |
US8566504B2 (en) | Dynamic metablocks | |
CN101382918B (zh) | 一种基于数据交换区的NAND Flash闪存优化管理方法 | |
CN102135942B (zh) | 一种存储设备中实现损耗均衡的方法及存储设备 | |
CN101937319A (zh) | 存储器系统及其映射方法 | |
CN100501868C (zh) | 基于NAND Flash存储器文件系统的实现方法 | |
KR20170042135A (ko) | 메모리 스케줄링 방법 및 메모리 시스템의 동작방법 | |
CN102332290A (zh) | 用来管理和存取闪存模块的控制器 | |
JPWO2005106673A1 (ja) | 不揮発性記憶装置及びデータ書込み方法 | |
US8898414B2 (en) | Storage devices and methods of driving storage devices | |
US20080126683A1 (en) | Memory system | |
US8914587B2 (en) | Multi-threaded memory operation using block write interruption after a number or threshold of pages have been written in order to service another request | |
CN103377129A (zh) | 数据写入方法、存储器控制器与存储器储存装置 | |
EP3752905A1 (en) | Append only streams for storing data on a solid state device | |
US10712970B2 (en) | Flash memory controller and associated accessing method and electronic device | |
CN101408864B (zh) | 用于断电时的数据保护方法及使用此方法的控制器 | |
CN107943710A (zh) | 存储器管理方法及使用所述方法的存储控制器 | |
CN102193871B (zh) | 非挥发性存储器存取方法、系统及非挥发性存储器控制器 | |
CN101894077A (zh) | 一种数据存储方法及系统 | |
CN102063381B (zh) | 用于闪存的数据写入方法及其控制器与储存系统 | |
US8200611B2 (en) | File system and data management method | |
US20240231624A1 (en) | Method and apparatus for performing data access management of memory device in predetermined communications architecture with aid of unbalanced table regions |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190308 Termination date: 20211115 |