用于快闪存储器的记入后直写式高速缓存的制作方法

文档序号:6475289阅读:127来源:国知局
专利名称:用于快闪存储器的记入后直写式高速缓存的制作方法
背景技术
1.发明领域本发明通常涉及计算机系统。具体地,涉及计算机系统中的快闪存储器操作。
2.相关技术介绍快闪存储器是特殊类型的存储器,允许一次写入和读出一个字节,但是只能整块擦除。在快闪器件中典型的块尺寸范围从8千字节(KB)到128KB。如果不首先擦除快闪存储器中存储的数据,则该位置的数据无法改变。由于只能整块擦除,所以新的数据必须写入到以前擦除的块未使用的位置,并因此必须改变识别该数据位置的任何指针。如果要保持大区段数据的完整性(例如值的索引表),即使只改变一个字节,整区段数据也要拷贝到另一决中。擦除功能非常耗费时间,并需要整整一秒钟来完成。
快闪存储器的读出操作具有较好的性能,但是由于上述原因写入和擦除操作的性能较差。已经开发出快闪存储器管理器,以隔离应用程序和快闪存储器管理。

图1示出了常规快闪存储器系统10。常规快闪管理器11包括前台管理器12、后台管理器14以及数据队列13的使用。数据队列13为来自应用程序15的对快闪存储器16的写入和擦除命令在实际执行之前提供临时缓冲存储。这能够允许应用程序从由快闪存储器的特性造成的不确定的等待时间周期中分离出来。数据队列还能够帮助解决并发问题。如果应用程序15在将向该位置写入的命令放入队列13之后但在快闪存储器16中该位置的数据实际改变之前又要读该位置,可以从数据队列中读出数据的最新版本。
前台管理器12与应用程序接口,启动读和写功能,并将写入命令放入数据队列13。读命令可由前台管理器12直接发给快闪存储器16。后台管理器14从通常以先入先出为基础的队列13中取出写入命令,并启动对快闪存储器16的实际存储器操作。前台管理器12还通过可用空间功能17检测在快闪存储器中是否有可用空间执行写入操作。如果没有,它可以通知应用程序该情况,并终止写入或采取其它补救措施。如果空间可用,写入命令可以放入队列中,并通知应用程序已经写入了。但是,后台管理器恰好决定在快闪存储器中如何写入数据以及相关的数据结构,并且当从数据队列中去掉写入操作并由后台管理器处理时,这些决定能影响有多少空间实际可用。因此,前台管理器12预测命令是否会成功(当命令到达快闪存储器时是否有可用空间),如果预测为成功,将命令放入队列13。如果后台管理器14在尝试执行命令时由于快闪存储器16没有足够的空间写入数据而遇到“快闪存储器满”的情况,则产生致命错误代码并停止正常处理。为了防止这种情况,前台管理器12必须做最坏情况预测,造成快闪存储器操作的效率低下。
在尝试对快闪存储器16写操作之前,当确定如果有足够的可用空间,后台管理器14基本上重新执行空间可用功能,从而产生由快闪存储器管理器11产生的结果的副本。如果快闪存储器管理器11如通常那样在软件或固件中执行,前台和后台空间可用功能以不同的时间执行,花在空间监视过程上的时间量加倍,并对快闪存储器管理的吞吐性能产生负面影响。
附图简要介绍图1示出了现有技术的系统。
图2示出了本发明的系统。
图3示出了高速缓冲存储器的一些内部结构。
图4示出了本发明的方法的流程图。
本发明的详细介绍本发明包括具有快闪存储器管理器的高速缓冲存储器,以提高有效管理快闪存储器的操作的能力。高速缓冲存储器可以通过在前台处理这些命令,并缓存写入/擦除命令的内容来消除常规的快闪管理器数据队列和关于处理命令的结果的副本。通过将许多典型的后台功能转移到前台管理器,从而明显的降低了后台决策和复杂性。本发明还可以通过取消后台“快闪存储器满”条件来消除对命令预测及其相关错误处理的需要。
图2示出了本发明的实施例的系统20。应用程序25可以对快闪管理器21进行读和写调用。前台管理器22可直接进行读,同时在通过空间可用功能27确定如果空间可用之后将写入命令发送到高速缓冲存储器23。虽然在前台管理器22和快闪存储器26之间用框图示出,但是空间可用功能可以用各种方式实现,例如跟踪快闪管理器21中的空间使用或向快闪存储器26发送查询命令。对于本发明的实施,确定在快闪存储器26中的可用空间的确切的方式是不重要的。后台管理器24可以从高速缓冲存储器23中找回写入和擦除命令入口并将它们记入到快闪存储器26。不同于常规系统,在将数据写入存储器之前,后台管理器24不需要重新确定是否有可用空间。
本发明可以采用记入后直写缓存方法(posted write-throughcache approach)。当来自快闪存储器写入命令的数据放入高速缓存23时,该数据没有同时写入到快闪存储器26中,但是,后台管理器24一得到它就随后写入到快闪存储器26中。后台管理器24以与从前台管理器22接收写入数据相同的顺序将写入数据写入到快闪存储器26中。一旦写入到快闪存储器中,相关的高速缓存入口就可以删除了。
在这些入口传送给快闪存储器26之后从高速缓存23中删除它们有几个优点。典型的高速缓冲存储器最终将被填满,没有新的空间容纳新的入口。这需要从高速缓存中清洗(即,删除)各种入口,为新的入口腾出空间。在确定清洗掉那些对系统性能影响最小的入口时需要一定数量的预测,即,哪些入口被重新访问的可能性最小。
通过在缓存入口记入到快闪存储器26之后马上将其删除,高速缓冲存储器23经常为空的,变满的可能性非常小。在它确实变满的情况下,通过简单地等待,直到后台管理器24将更多的数据记入到快闪存储器26并删除相关的入口,使它变空,并有可用空间。因为在数据被记入之后不再从高速缓存中访问数据,所以不需要预测方案。
前台和后台管理器之间的任务分配可以不同于常规系统。前台管理器22可以接收和确认来自应用程序25的命令,确定哪个命令需要放在高速缓冲存储器23中,并向快闪存储器26发送读出命令。在确定快闪存储器26中的可用空间之后,前台管理器22还可以确定在快闪存储器中哪个特定位置可以被写入命令寻址,包括多字节写入操作所需的全部位置。一旦前台管理器将这些位置分配给写入数据,他们对于后续的写入命令是不可用的,并且在当前的写入命令记入到快闪存储器26时,后台管理器24不需要重新确定如否有可用空间。如果后台管理器24后来擦除了其它块,将会使可用空间比前台管理器22预测的多,而不会导致更少的可用空间,所以不需要由后台管理器24作出没有可用空间的决定。这防止了常规的“快闪存储器满”的错误条件,其中后台管理器首先确定预测的空间不可用,并且必须采取紧急响应措施。
后台一次可以处理一个缓存入口,并在完成后使入口无效。当后台使入口无效之后,前台可将该缓存空间用作下一个入口。指针和计数器可用来跟踪有效和无效入口,类似于环形缓冲器,其中当指针到达缓存空间的末端时可以重新回到缓存空间的开始处。环形缓冲器以及相关的指针和计数器是众所周知的,这里不再进一步介绍。
本发明的快闪存储器系统的一个实施例还可以处理具有不同优先级的命令。缓存入口可以由后台按优先级顺序处理,在每个缓存入口执行之后可以重新评估其优先级。当在高优先级缓存中没有入口时,则可以处理低一级优先级的缓存。给快闪存储器的命令可以由快闪管理器、应用程序、其它实体或它们的任意组合分配给各种优先级。与优先级分配源无关,高速缓冲存储器23包括对于每个优先级的分离的标签阵列和数据阵列。
图3示出了具有高、中和低三个不同优先级的系统。如在常规高速缓冲存储器那样,缓存23具有标签阵列和数据阵列,两者都可以用RAM存储器实现。一个实施例提供了三组标签阵列和数据阵列,分别对应三种不同的优先级。所示的标签和数据阵列31、32为高优先级命令,所示的标签和数据阵列33、34为中优先级命令,所示的标签和数据阵列35、36为低优先级命令。首先处理所有的高优先级命令,接着处理所有的中优先级命令,最后处理所有的低优先级命令。在每个优先级内,命令可以以收到的顺序通过高速缓冲存储器处理。在一个实施例中,用作每个优先级的标签/数据阵列的存储器的数量可以被编程改变。
放在标签和数据阵列中的信息可以分别作为标签和数据区被识别。数据区包含要写入的数据或其它用命令处理的数据。数据可以包括头部,头部是快闪存储器中的识别标记,标明在快闪存储器中的相关数据段。头部可以标明数据有效和无效(因为小片废弃的数据不能被个别擦除,所以它们只简单的标记为无效),并且可以识别在快闪存储器中的相关位置是已分配的或是没有分配的,以防止已经标记为使用的位置随后被其它命令使用。标签区可以包括写入或擦除命令在快闪存储器中的目标地址、要传送的数据的尺寸以及指示缓存入口的其它特性的状态位,从而后台能够适当地处理它。表1介绍了在一个实施例中的标签区中包括的各种类型的信息。
图4示出了本发明的方法的流程图40。从前台管理器开始,在步骤4 1确定在快闪存储器中有足够的可用空间执行命令。在步骤42,命令分为多个入口并写入高速缓冲存储器。步骤43,将这些入口放在命令所指定的相应优先级的标签和数据阵列中。随后,后台管理器接管,在步骤44中执行到快闪存储器的每个缓存入口。执行写入入口包括从缓存中读数据并将数据写入到由入口指定的快闪存储器中的位置。执行擦除入口包括擦除由入口指定的快闪存储器中的块。在步骤45,删除缓存入口,为以后的缓存入口释放空间。
表1
在下面更详细介绍的各种实施例中可以实现其它特征。
读处理在写入口放在缓存中的时间和将其实施至快闪存储器中的位置的时间之间,只有高速缓冲存储器具有相关数据的正确版本。在此期间,对快闪存储器的读操作可以从缓存中而不是快闪存储器中找到数据。因此,读操作可以在缓存中搜索数据,也可以从快闪存储器中读出。如果数据在缓存中,即,如果缓存“命中”发生,可以用缓存的数据,根据缓存直读结构,读快闪存储器可以忽略、终止或根本不执行。在这种情况下,高速缓冲存储器可以像常规高速缓冲存储器那样操作,但是,一旦缓存的写已经记入到快闪存储器,就可以从缓存中删除缓存入口,而不是像常规高速缓冲存储器那样为将来的读出而保留。这是因为,如果相同的数据在缓存和快闪存储器中,缓存入口并不能显著提高读出性能,而且甚至有可能降低读出性能。在命令记入到快闪存储器26中之后在缓存23中保留该命令将不必要的占用缓存中的空间,该空间对于后续命令将是不可用。另外,嵌入系统快闪存储器的读出特性可以与一般用于高速缓冲存储器的静态随机存取存储器(SRAM)的读出特性相比较,当发生缓存命中时只能使速度略微提高。因此,从缓存中删除记入后的命令将能更有效的全面利用高速缓冲存储器,而不会对读出响应时间产生任何显著影响。
如果读出操作产生缓存“未命中”,即,如果数据不在缓存中,缓存不同像常规缓存那样对数据更新。因为,本发明的缓存的目的是改善写入操作而不是读出操作,所以如果正确的数据已经在快闪存储器中,就没有适用的理由要将数据放在缓存中。
在一个实施例中,多字节读出操作可以在一部分数据产生缓存命中,而在另一部分数据产生缓存未命中。在这种情况下,在缓存中发现的数据与从快闪存储器中发现的剩余部分的数据组合产生最终的数据。
结合性一个实施例使用了完全结合的缓存技术。虽然在寻找缓存命中时这要求更多的搜索时间,完全结合方法可以保持小的缓存尺寸而提供最大的灵活性。
高速缓冲存储器也可以完全用软件实现,其中快闪管理器所用的存储器部分被指定为高速缓冲存储器,并且只用于此目的。在本发明中,在常规存储器层次中,快闪存储器可以被认为与主存储器等价,同时在常规存储器层次中可以认为用于缓存的存储器与高速缓冲存储器等价。
缓存线尺寸由于快闪文件管理的可变尺寸特性,可以采用可变线尺寸。在一个实施例中,写入线的尺寸可以从数据字节到整个数据片变化,一般为128-512字节。尺寸可以与目的地址一起保存在标签阵列中。
缓存替代策略在典型的缓存系统中,数据保持直到‘缓存满’或‘缓存清洗’状态出现。如果缓存满,通常进行选择性的缓存入口替代。如果清洗缓存,所有的入口无效。在本发明的一个实施例中,因为缓存入口以进入缓存的顺序被写后(post-written)然后删除,所以不会出现选择性的替代满缓存。因此,本发明基本采用先入先出(FIFO)策略。如果缓存满,新的缓存入口被延迟,直到通过依次写入快闪存储器中而排出缓存从而获得足够的可用空间。因为本发明通过其缓存替代策略自然清洗缓存,所以可以不要‘缓存清洗’能力。
代码重构大部分常规后台功能可以移到前台。在一个实施例中,所有的文件管理通常由后台进行,而回收任务可以由前台完成,但除了快闪存储器的实际写入或擦除以外。单个后台任务可以是处理缓存入口和写入或擦除快闪存储器的角色。由于效率的原因,后台任务还可以处理功率损耗恢复(power-loss recovery)(PLR)流和更高级回收状态的许多方面。
常规系统的队列可以取消,空间检查可以只由前台管理器执行一次。进入缓存入口可以包含快闪存储器中的确切的最终目标。因此,因为后台管理器不决定数据放在哪里,而是将数据放在由前台管理器预先分配的位置中,所以不会出现后台“快闪存储器满”条件。
回收对于快闪存储器,回收过程是指擦除存储器的块并使其对于后续的写入操作可用的过程,由此“回收”块以备使用。如果旧的块(要擦除的块)包含有任何必须要保存的数据,回收还可以包括在擦除之前从旧块中读出一些数据,并将该数据放到新的、为随后的使用而事先擦除的块中。在将旧的数据写入新块之前可以与来自其它源的其它数据组合也可以不组合。因此,一个回收过程可以包括一个或多个回收组件,例如1)从旧块中读出旧的数据,2)将旧的数据写入新块,3)将其它数据写入新块,以及4)擦除旧块。这些中的每一个都可以是单独的缓存入口。因为每一个可以分别处理,所以可以在相关回收组件之间处理其它的缓存入口。可以用回收进行中指示器指示正在进行无原子的回收操作。
回收组件可以分类为“必要的”或“不必要的”。如果快闪存储器满或至少没有足够的可用空间完成当前的写入操作,则必须回收快闪存储器的块,以提供所需的空间来完成写入操作。该回收操作的回收组件将是“必要的”,因为在正常的处理可以再继续之前它们必须被完成。但是,一些回收可以推测进行,即,在预计后续需要的情况下回收块,而该后续需要目前还不存在。这些可以分为“不必要的”类。必要的回收可以给定为最高优先级,而不必要的回收可以给定为较低的优先级。两种类型的回收组件可以由前台管理器启动,并放在缓存中由后台管理器随后处理。标签区可以保持用于指示回收组件是否为必要的状态位。
如果缓存的回收组件作为“不必要的”被记录,则可以首先处理在缓存中的后来的写入操作。在一个实施例中,这是仅有的次序颠倒处理缓存入口的情况。如果回收组件作为“必要的”被记录,则当后台执行该缓存入口时按顺序处理它。因为它进入最高优先级缓存,所以不会处理在较低优先级缓存中的入口,直到已经执行了必要的回收组件。如果发现缓存的“必要的”回收组件并且有优先的“不必要的”回收组件,则所有“不必要的”组件可以变为“必要的”状态,并马上处理。
缓存满处理“缓存满”条件表示在缓存中没有空间或没有足够的空间来支持当前的写入操作。这对于涉及大量数据的命令更有可能发生,例如对于巨大的表的“替换组表”命令。缓存可能无法接受该入口直到执行了缓存的回收。更坏的情况,可能需要完成回收并可能需要执行随后的缓存的写入以便为最终的缓存入口提供足够的缓存。
在一个实施例中,没有采用缓存满预测,因为这非常耗费时间,并且在每个命令的开始都要进行。除了计算命令是否适合缓存以外,在应用程序接口(API)中可以提供另外两种选择等待或非等待。如果出现缓存满条件并且指定为“非等待”,则“缓存满”状态通过API堆栈返回,由应用程序处理。如果出现缓存满条件并且指定为“等待”,则命令处理需要等待,直到缓存为命令腾出足够的空间。
在本发明的一个实施例中,快闪管理器可以用软件实现,并且高速缓冲存储器可以用执行快闪管理器的相同存储器的一部分来实现。在本发明的另一个实施例中,快闪管理器可以用固件来实现,并且高速缓冲存储器可以在由执行快闪管理器代码的同一个处理器寻址的易失存储器中来实现。在本发明的又一个实施例中,快闪管理器的一部分可以在包含一个或多个状态机器的电路中实现。
本发明可以作为方法实现。
本发明也可以用存储在机械可读介质上的指令来实现,这些指令可以由至少一个处理器读出并执行,以完成这里所介绍的功能。机械可读介质包括用来以由机器(例如,计算机)可读出的形式存储或传输信息的任何装置。例如,机械可读介质可以包括只读存储器(ROM);随机存取存储器(RAM);磁盘存储介质;光存储介质;快闪存储器件;传播信号的电学、光学、声学或其它形式(例如,载波、红外信号、数字信号等)以及其它。
上述介绍是为了说明而不是限制。对于本领域的技术人员来说可以有多种变型,这些变型将包括在仅由附带的权利要求书的精神和范围限制的本发明中。
权利要求
1.一种方法,包括将快闪存储器命令写入到高速缓冲存储器中;将快闪存储器命令从高速缓冲存储器写入到快闪存储器中;以及从高速缓冲存储器中删除快闪存储器命令。
2.根据权利要求1的方法,其中快闪存储器命令是写入命令和擦除命令中的一个。
3.根据权利要求1的方法,其中所述写入高速缓冲存储器和所述写入快闪存储器由可编程机器中的代码执行。
4.根据权利要求3的方法,其中所述写入高速缓冲存储器为前台操作。
5.根据权利要求3的方法,其中所述写入快闪存储器为后台操作。
6.根据权利要求1的方法,其中写入高速缓冲存储器包括指定与快闪存储器命令相关的优先级;以及将快闪存储器命令存储到与指定的优先级相关的标签阵列和数据阵列中。
7.根据权利要求1的方法,其中写入高速缓冲存储器包括确定在快闪存储器中是否有足够的可用空间用来执行在快闪存储器中的快闪存储器命令;以及写入快闪存储器不包括确定在快闪存储器中是否有足够的可用空间用来执行在快闪存储器中的快闪存储器命令。
8.一种具有其上存储指令的机器可读介质,当由处理器执行该指令时,使所述处理器执行将快闪存储器命令写入到高速缓冲存储器中;将快闪存储器命令从高速缓冲存储器写入到快闪存储器中;以及从高速缓冲存储器中删除快闪存储器命令。
9.根据权利要求8的介质,其中快闪存储器命令是写入命令和擦除命令中的一个。
10.根据权利要求8的介质,其中所述写入高速缓冲存储器为前台操作。
11.根据权利要求10的介质,其中所述写入快闪存储器为后台操作。
12.根据权利要求8的介质,其中写入高速缓冲存储器包括指定与快闪存储器命令相关的优先级;以及将所述命令存储到与指定的优先级相关的标签阵列和数据阵列中。
13.根据权利要求8的介质,其中写入高速缓冲存储器包括确定在快闪存储器中是否有足够的可用空间用来执行在快闪存储器中的快闪存储器命令;以及写入快闪存储器不包括确定在快闪存储器中是否有足够的可用空间用来执行在快闪存储器中的快闪存储器命令。
14.一种装置,包括快闪存储器;连接到快闪存储器的高速缓冲存储器,用来存储要向快闪存储器执行的命令;以及连接到快闪存储器和高速缓冲存储器的快闪管理器,用来将命令写入高速缓冲存储器,从高速缓冲存储器中读出命令,对快闪存储器执行命令以及从高速缓冲存储器中删除命令。
15.根据权利要求14的装置,其中所述快闪管理器在软件和固件中的一种中被执行。
16.根据权利要求14的装置,其中所述高速缓冲存储器包括第一标签阵列和第一数据阵列,存储具有第一优先级的命令;以及第二标签阵列和第二数据阵列,存储具有第二优先级的命令。
17.根据权利要求14的装置,其中所述快闪管理器包括前台管理器,用来确定快闪存储器是否有足够的可用空间来执行命令;以及为命令分配快闪存储器地址。
18.一种系统,包括处理器;快闪存储器;连接到快闪存储器和处理器的高速缓冲存储器,用来存储处理器要对快闪存储器执行的命令;以及连接到快闪存储器和高速缓冲存储器的快闪管理器,用来将命令写入高速缓冲存储器,从高速缓冲存储器中读出命令,对快闪存储器执行命令以及从高速缓冲存储器中删除命令。
19.根据权利要求18的系统,其中所述快闪管理器在软件和固件中的一种中被执行。
20.根据权利要求18的系统,其中所述高速缓冲存储器包括第一标签阵列和第一数据阵列,存储具有第一优先级的命令;以及第二标签阵列和第二数据阵列,存储具有第二优先级的命令。
21.根据权利要求18的系统,其中所述快闪管理器包括前台管理器,用来确定快闪存储器是否有足够的可用空间来执行命令;以及为命令分配快闪存储器地址。
全文摘要
用于操作快闪存储器的高速缓冲存储器。快闪存储器管理器将快闪存储器写入和快闪存储器擦除命令放入缓存中,由快闪存储器随后执行。缓存可以代替在常规快闪存储器系统中使用的队列。前台管理器可以对快闪存储器中的可用空间进行检查,将命令分解为适当的缓存入口并将入口写入到缓存中。后台管理器随后从缓存中读出入口并对快闪存储器执行它们,当各入口记入到快闪存储器以后删除它。缓存包括多组标签/数据阵列,每一组专用于具有特定优先级的命令。将常规快闪管理功能从后台转移到前台可以消除后台管理器响应“快闪存储器满”的可能性,由此消除对后台管理器确定当对快闪存储器执行时命令是否有可用空间的需要。
文档编号G06F12/08GK1476562SQ01819299
公开日2004年2月18日 申请日期2001年9月20日 优先权日2000年9月26日
发明者R·加纳, R 加纳 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1