专利名称:减少随机存取存储器大小同时保持快速数据存取的方法和装置的制作方法
发明
背景技术:
领域本发明涉及电子线路。尤其是,本发明涉及一种新颖和改进的方法和装置,用于在设备中减少RAM的需要而保持从较慢的非易失性存储器中快速查找和检索数据。
背景技术:
某些类型的电子存储器用于几乎所有的现代电子设备中。电子存储器能采取软盘、磁带、硬盘和集成电路(IC)的形式。存储器的每种形式具有其优点和缺点。软盘使得大量数据在便携式的介质上更新,但具有有限的容量和相当长的读写存取时间。磁带和硬盘均有大量存储容量的能力,但却不便于随身可带,需要大量的支持硬件,且有慢的存取时间。保存在软盘、硬盘和磁带上的数据在存入该介质前常常先以软件格式化为文件格式。当数据从存储介质中恢复时,必须运行软件文件程序以定位并提取所需的数据。这更减慢了数据存取过程。因为它在已经很慢的硬件存取的顶上又增加了软件层。
IC存储器通常使用在存储器需要集成在便携设备中的地方。改变IC的类型和数量就能调节存储量。IC要求很小的支持硬件,并特别小,且能提供快速的读写访问时间。某些IC存储器能方便支持直接访问而不需要软件层。
可买到许多不同类型的IC存储器,对各种设计要求提供解决方法。每种存储器能满足若干设计要求,但没有一种存储器类型能提供完全的设计解决方法。对任何特定应用选定的存储器类型取决于计划的用途及性能设计之间的折衷方案。
最普通类型的IC存储器是只读存储器(ROM)。如名称的含意所示,该存储器只能读访问。ROM设备一旦经编程后就不能重写。嵌入的软件应用使用ROM存储嵌入的程序码及数据记录。在嵌入软件应用中的处理器从ROM检索每条指令并执行之。依据在ROM中被编程信息的易失性可以得到不同类型的ROM。如果存在ROM中的信息不希望改变,且期望的设备容量是高的,则使用掩膜编程ROM。在管芯封装之前此类ROM已掩膜编程。要编程的信息必需是高度稳定并不会修改的,因为编程信息的改变需要掩膜改变。使用掩膜编程ROM的好处对于高容量成熟产品来说在于其成本和时间的节省。对产品可采用其他类型的ROM,但它们不能保证产品容量或代码的稳定性,这足以证明使用掩膜编程ROM是正确的。
可编程只读存储器(PROM)使得设备制造者能编程嵌入的代码。它允许对代码修改,但仍不允许ROM在编程以后的修改和擦除。用过时的代码修改编程的设备仍使用过时的代码修改,或丢弃之。
可擦除可编程只读存储器(EPROM)提供完全擦除程序部分的能力。EPROM的擦除是通过将管芯暴露在紫外(UV)光一段预定时间来实现。管芯能通过在EPROM封装上的透明窗口暴露在紫外光下。一旦擦除,该EPROM能重新编程。EPROM通常只用于工程开发,在其中期望的代码修改次数较高。与PROM相比,配置透明窗口的封装类型的局限性是EPROM高得多的价格因素。虽然EPROM能擦除及重新编程,但对代码的修改是完全在芯片基础上做出。即使改变代码中的一个位也需要完全擦除并重新编程。此局限性及擦除对紫外线的要求将更新EPROM的任务局限在原始设备制造商(OEM)身上。
能擦除选择的内容并重新编程的设备是电子可擦除可编程只读只读存储器(EEPROM)。传统的EEPROM使数据能适当更新。即能擦除特定数据单元并且用新的数据改写同一单元。从EEPROM能迅速读出数据。但传统EEPROM的写周期比读时间长几个数量级。使用传统EEPROM的另一缺点产生于传统EEPROM单元的内在结构。传统EEPROM单元的结构与标准的PROM相比需要更多的晶体管。结构的增加导致存储器容量减少且价格升高。这些缺点使得传统的EEPROM不能在大多数消费电子应用中使用。
随机存取存储器(RAM)代表另一种替代存储装置。RAM允许有选择的数据读和写。读和写能基于字节完成。在将新的数据写入到以前写过的字节以前不需要擦除周期。此外,不象EEPROM,RAM的读和写周期的时间几乎相等。RAM的密度及容量可与ROM相比。使用RAM的主要缺点在于存储数据的易失性。每当RAM掉电时,储存在RAM中的信息就会丢失。这与ROM相反,后者是非易失性存储器,即使该IC在供电周期之后存储器的内容依然得以保存。为了维持RAM的内容,在芯片上必须一直维持电源。这需要对正常供电有电池后备。在电源供应断开时,如果电源后备掉电,该RAM的内容将丢失。为此,RAM不用于嵌入的代码而只用于动态存储器。用于嵌入代码的RAM易受电池掉电和供电故障的影响。此外,如果RAM用于嵌入的代码,如蜂窝电话那样的电池驱动设备,由于RAM的恒定电源要求而具有减少的电池寿命。在RAM用于动态存储器时,该系统并不关心在供电周期之后内容是否丢失。这就减轻了对电池后备的需求。但是RAM的成本高于ROM的成本。
另一种存储选择是通常称之为闪存的块EEPROM。块EEPROM是允许基于字节读写的非易失存储设备。不象RAM,在块EEPROM中,在改写以前写过的字节以前必须完成擦除操作。但是数据擦除不能按字节完成。擦除只能按块完成,其中块的大小由所选的特定存储设备确定。可擦除块的大小总是大于一个字节并能是约为64千字节。但是,擦除的次数不是无限的,而受最大周期寿命所限。对块EEPROM通常推荐的擦除周期寿命是100,000周期。因而,对于在预期设备寿命周期中有大于100,000次的擦除周期需求的应用,就不应该使用块EEPROM。在需要少于100,000次擦除和改写周期的应用中,与其他类型可改写存储器比较,块EEPROM具有优点。对于嵌入的代码应用来说,块EEPROM优于任何类型的ROM,因为块EEPROM是非易失的。由于块EEPROM能改写电路中部分存储器,因而,块EEPROM更优于EPROM。块EEPROM也不需要紫外光作芯片擦除。由于块EEPROM设备的低价格和高密度,因此,块EEPROM优于具有可比较的重写限制的传统的EEPROM。在便携式电子设备中,块EEPROM用于用户可配置数据的非易失性存储。
存在块EEPROM的数据通常进行格式化以符合文件系统。文件格式规范部分地由块尺寸的擦除周期决定。数据不是对特定单元的存储映象,因为块EEPROM中的数据不能在适当位置重写。附加软件开销导致存储器访问时间大大增加。在多任务系统中,访问时间将进一步增加。在多任务系统中,非易失性存储器访问可以由高优先级任务优先占有。抢占要求低优先级任务在处理以前等待较高优先级任务的完成。当软件开销包括在访问时间的计算之中时,从块EEPROM访问数据的时间可能比对存在RAM设备中的数据的访问时间要慢1000到10,000倍。
长访问时间引起了用户接口问题。在如无线电话那样的便携式电子设备中,非易失性用户可配置的数据常常存入块EEPROM中。如果访问电话簿数据是即时发生的,用户接口需加强,从块EEPROM检索数据导致在用户输入电话号码与电话簿中的记录比较时很慢的用户响应。这是由于在处理文件系统时的软件开销,为了从块EEPROM检索任何数据这是必须启动的。长访问时间延迟使得在数据检索必须在某个预定的时间窗内发生的实时系统中引起严重的问题。
对于块EEPROM或任何其他非易失性存储器的慢访问时间的一个解决办法是将所有数据从非易失数据记录传输到RAM。数据记录能在设备开启时从非易失RAM传输。然后,所有数据能迅速从RAM检索。这就大大加强了用户接口。然而,此解决方法引起相当大的成本及空间的缺点。仅仅为了加强用户接口就需要额外的RAM以冗余存储非易失失性存储器的内容。人们需要一种方法和装置,用于减少在访问存储在非易失存储器中的数据时,为保持快速用户接口所需的RAM的数量。
发明内容
本发明是一种新颖的改进的方法和装置,用于减少支持从较慢的非易失存储器中快速数据检索所需的RAM的数量。使用RAM代替非易失存储器大大减少了数据搜索时间。由于每次访问非易失存储器时必须执行的软件开销,RAM访问比非易失存储器访问要快几个数量级。
数据记录集合能保存在非易失性存储器。因为与非易失性存储器访问相关的软件开销,使得非易失性数据记录的访问缓慢。使用本发明能大大地增强对存储在非易失性存储器中的数据记录的搜索。当必须搜索存储在非易失性存储器的数据记录时,通常需要对非易失性存储器的许多次访问。本发明通过在RAM的预定位置上保存一系列计算的标签值来减少对非易失性数据记录的访问次数。然后对保存在非易失性存储器的数据记录的搜索是通过首先搜遍预定的RAM单元寻找对应的标签值,若找到匹配的标签值再查找非易失性数据记录。搜索在RAM中匹配的标签值将通常搜索匹配数据记录所需的非易失性存储访问次数减少到1。这与在传统的非易失性数据记录的搜索中需要多次非易失性记录的检索和比较形成对照。
在RAM中分配预定数目的存储器单元,对应于保存在非易失存储器中的数据记录数。在RAM中分配的每个存储器单元不需要大得能保存在非易失存储器中存储的数据记录。在较佳实施例中对于在非易失存储器中的每个数据记录分配二个RAM字节。非易失性数据记录可以任意长。定义标签函数H(x),使得每个非易失性记录映射对应的标签值。标签函数H(x)不需要提供数据记录到标签值的1∶1映射。数据记录到标签值的1∶1映射将非易失性存储器访问数最小化到每次数据记录搜索仅一次非易失性记录访问。
预定的RAM单元保存从对应的非易失性数据记录的内容所确定的标签值。当需要搜索特定数据记录时,对被搜索的记录计算标签值。如果搜索到的记录分配为y,则计算标签值H(y)。然后,该标签值H(y)与所有储存在预定RAM单元中的标签值比较。由于RAM快速的访问能力,此步骤很快执行。如果在RAM中找到匹配的标签值,对应的非易失性存储器单元识别为对应于特定RAM单元的单元。检索非易失性数据记录的内容并与搜索到的记录比较。如果两者匹配,则搜索完成。如果检索到的非易失性存储器记录和搜索的记录不相同匹配,搜索RAM中余下的标签值,寻找与搜索到的记录而计算的标签值的匹配。搜索继续进行,直到找到一个相等匹配,或者到达RAM标签值的终点。
因为主要的搜索是使用RAM标签表执行,因而,本发明在搜索数据记录所占用的时间量方面大大减少。非易失性存储器记录只在找到标签值匹配时才访问。对多数搜索只需要一次非易失性存储器访问。时间的节省提供了增强的用户接口,同时RAM的减少提供了硬件成本的降低。
根据下面给出的详细描述结合附图,本发明的特征、目标和优点变得更加明白。图中相似的参考字符在所有图中互相对应。其中图1是分层存储器实现的方框图;图2A-2B是方框图,示出根据查找NV存储器表的RAM的实现;和图3A-3B是本发明的RAM实现的流程图。
具体实施例方式
在任何电子设备中的存储器和存储设备按照希望的需求分配。在如无线电话那样的电子设备中的存储器通常为非易失性存储器和RAM形式。非易失性存储器可以是PROM和非易失性块EEPROM的组合。在工业中所共知的一种非易失性块EEPROM类型是闪存。
使用闪存的优点之一是其电可擦除和可改写的能力。如上所述,闪存的缺点之一是它不能在适当位置更新数据。整个块必须同时擦除。为了最有效地使用闪存空间,在闪存中保存的数据不存储映象到特定单元,相反,它使用基于文件的存储系统保存。相对比,存在RAM中的数据可以在适当位置更新且因此能分配一个存储映象。
图1示出如无线电话10那样的一个电子设备的存储器20的结构的方框图。所有存入存储器20的数据在数据库110中进行管理。本质上易失或瞬时的数据存入RAM 120。可以分配存储映象给RAM 120数据,因为RAM 120数据能在适当地方更新。然而,具有变化的长度或位置的其他数据片就使用文件系统130管理。文件系统130是软件程序,该程序确定基于文件数据的格式、位置和大小。对其数据使用基于文件的结构的设备之一是非易失性存储器140。存在非易失存储器140中的所有数据必须首先在文件系统130中格式化。在文件系统130下层的分层非易失性存储器140在访问存储在非易失性存储器140中的任何数据时产生进一步的延迟。在访问存储在非易失性存储器140中的数据时的延迟能产生不希望的延迟,其中数据必须从非易失性存储器检索作为用户界面的一部分。在无线电话中经常应用的使用数据的一个例子是搜索用户产生的电话簿。
无线电话通常具有保存用户产生的电话簿记录的能力。在保存在非易失性存储器中的电子电话簿中用户通常能具有超过100个电话号码及对应的名字。记录的实际数目只受设计者希望分配给电话簿的存储器空间大小的限制。每个电话号及名字组成保存在非易失性存储器中的数据记录。每个电话号最多有32个字符长。此长度可容纳区号、内部分机、接入号和个人识别号以便对指定的号码自动拨号。对名字可分配任意数目字符,但为方便起见,假设为32字符长。如果我们假设允许有512个电话号码及名字组合,则必须分配16K非易失性存储器。当用户输入一个电话号码或名字并希望搜索电话簿寻找对应的保存信息时,必须搜索存在非易失性存储器中的数据记录。
存在非易失性存储器内的数据记录只能通过文件系统130读出。文件系统130是在数据库110之下的层。在非易失性存储器访问顶部的多层对于任何对存在非易失性存储器的数据记录的访问产生较大延迟。在传统的搜索程序期间,从非易失性存储器检索数据记录并与输入数据比较。如果两者匹配,就找到对应于此匹配的数据记录。如果两者不匹配,丢弃第一个检索的数据记录并从非易失性存储器检索下一个数据记录。从非易失性存储器检索数据记录并与输入数据比较的步骤一直持续到找到匹配或搜索过非易失性存储器中所有记录为止。从非易失性存储器检索数据记录之前必须经过的多个层提供延迟。当输入数据必须与存在非易失存储器中的大量内容相比较时,对用户界面来说此延迟过长。输入名字或电话号码并希望检索与此记录有关的存储信息的用户不希望等待很长时间。用户界面需要看来对用户是无间隙且瞬时的。
增加与搜索非易失性数据记录有关的速度的一个方法是在RAM中执行搜索。对存在RAM中数据记录的访问时间比从非易失存储器检索相等的数据记录的访问时间要快几个数量级。访问时间的差异归因于文件系统。RAM不需要数据记录格式化以及在文件系统下访问。为了实现在RAM而不是非易失失性存储器中搜索,可以将所有非易失性存储器的数据记录传送到RAM。随后,当需要搜索时,所有数据记录在RAM中都可以得到。此方法具有缺点,就是使用了大量RAM仅仅为了冗余地存储在非易失性存储器中可以得到数据记录。额外的RAM的成本增加和物理尺寸的增加,使得该解决方法在如无线电话那样的便携式电子设备中实现并非理想。
在图2A中示出一种替代实现方法,它改善了存储在非易失性存储器的数据记录的搜索时间,而不必将整个非失性存储器的内容保存在RAM中。在图2A中不使用RAM保存在非易失存储器中存储的数据记录。而是在RAM中定义RAM散列箱(hash bin)220。每个原始的非易失性(NV)记录210输入到散列函数。指向输入NV记录210的指针存入对应于输出散列数的RAM散列箱220。散列函数不需要提供NV记录210到RAM散列箱220的1∶1映射。但是散列函数的选择是权衡RAM散列箱220的数目及访问时间的因素进行折衷选择。散列函数映射越单一,RAM散列箱220所需的空间越大。单独的散列函数映射的优点是当搜索NV记录210寻找匹配时,减少对非易失性存储器的访问次数。
在图2A中所示的实现方法如下执行。在初始化电子设备后,每个NV记录210输入到散列函数。初始化可以在电子设备的任何情况引起。在无线电话中的初始化在上电时引起。散列函数的一个例子如下所示。
yN=(Σi=1N5(yi-1)+xi)/(65521)]]>在等式中xi表示输入到散列函数的特定的NV数据记录中第i个字节。yi表示处理在特定NV数据记录中i个字节后散列函数的输出。数N表示包括每个NV数据记录输入的字节数。在上述例子中,每个NV数据记录是32字节长。对上述例子中数据记录长为N=32。对实际应用使用整数算术执行计算。可以看到,当使用整数算术时从输入到输出的映射不是1∶1。
散列函数的输出落入确定的RAM散列箱220中。指向用作到散列函数的输入的NV记录的指针222存入RAM散列箱220。与数据记录相比较,指针使用较少存储空间存储。通常为指针分配4个字节。对具有512个输入的非易失性数据记录,需要2K存储器容纳所有指针。这就提供RAM存储器空间可能的节省。
每个散列箱必须具有保存多于一个指针222的能力。因为散列函数不提供输入到输出1∶1的映射,因此,这是必须。在散列函数中缺少1∶1的映射产生了RAM存储器分配问题。为了保证每个散列箱只有一个指针,就需要确定大量的散列箱。如果确定较少数量的散列箱,每个散列箱就可能需要存储若干指针。
如果确定64K个散列箱,设计者能保证每个散列箱只有一个指针在其中。因为只需要2K个指针来识别所有数据记录,很明显大多数散列箱将含有空指针。分配64K散列箱明显比将所有非易失性数据记录加载到RAM中需要更大数量的RAM空间。因此,此解决方案是不可行的。为了减少RAM的需求,一个设计分配少于64K的散列箱。然而,减少散列箱的数目必然增加了任意一个散列箱将包含多于一个指针值的可能性。
为了寻找与某些输入数据的数据记录匹配,输入数据首先要通过散列函数。随后,散列函数的输出将搜索程序导向特定的散列箱。如果分散列箱中未存入指针,则在非易失性数据记录中找不到匹配。如果未找到匹配,这就大大减少了搜索时间。在传统的搜索中,在判定不存在匹配之前必须要检索在非易失存储器中所有数据记录,并与输入比较,使用散列箱方法对非易失性存储器的访问在判定不存在匹配之前并不需要发生。
如果有指针存在散列箱中,从散列箱中获得第一指针并检索该指针指向的NV记录。然后在输入和检索到的数据记录之间执行全面比较。如果两者等同,则找到匹配并能得到余下的有关数据记录。如果检索的数据记录不匹配,则如果存在的话,就检索在散列箱中下一个指针。重复执行比较和从散列箱检索指针,直到找到匹配或已经比较了由该散列箱指针指向的所有非易失性数据记录为止。
在以前的实现中有多次访问非易失性存储器的可能性。对非易失性存储器访问的次数取决于存在每个散列箱中的指针数。所需的散列箱的数目与散列函数有关。单独的散列箱的数目增加减少了非易失性存储器访问的次数。非易失性存储器访问次数的减少是以增加所需的RAM为代价的。
本发明使用一个实现方法,它减少数据记录搜索次数并降低RAM的需求。本发明的一个方框图示为图2B。在本发明中,如前所述,NV记录210包括数据记录的集合。然而,在RAM中为标签值230分配一个存储器块代替了在RAM中定义散列箱。如上例所述,存储在非易失性存储器中的每个数据记录是32字符长。在非易失性存储器内分配512个可用的记录。这对应于16K的存储器。本发明为在非易失存储器中的每条数据记录分配2字节RAM空间。为容纳512条数据记录,需要分配1K字节的RAM。因为分配给每个非易失性存储器记录的RAM的字节数是常数,可指定RAM的地址单元来对应非易失性数据记录。作为一个例子,第一非易失性数据记录将对应于分配在RAM中的头两个字节。
分配给每个非易失性数据记录的两个RAM字节不足以保存整个数据记录。而是,这两个字节保存对应于该数据记录的标签值。使用上述同样的散列函数产生标签值。计算对应于非易失性存储器中每个数据记录的标签值并存入RAM中预定的位置。因此,本发明使分配的RAM数量最小。为每条非易失性数据记录分配在RAM中分配两个字节,并且存在512个数据记录。因此只需分配1K RAM。
当输入值需要与非易失性存储器数据记录的内容进行比较时,该输入值首先通过散列函数。然后,输出散列值与存在RAM中的标签值比较。当确定一个匹配标签值,检索对应于该标签值位置的非易失性存储器的内容并与原始的输入值比较。如果两者等同,则找到匹配。否则,继续搜索下面的RAM标签值,直到另一标签值产生匹配的数据记录或达到标签值表的末端为止。以此方式,大部分的搜索在RAM中执行,访问非易失性存储器的唯一时间是在计算的输入标签值匹配以前存入的标签值中一个时。如果散列函数不产生大量的复制标签值,对非易失性存储器的访问数就最小。使用前述的散列函数,对非易失性存储器的访问数最小化到对于99%的数据搜索其访问次数都为1次。
图3A示出本发明的流程图。程序从状态301启动。每当设备打开电源时程序都初始化。在无线电话的情况,每当用户打开电话电源,程序启动301。程序接着进到状态304,在其中读出在非易失性(NV)存储器数据记录中所有项。接着在状态308,对NV存储器项计算标签值。使用如前述的散列函数那样的函数对每个NV存储器项计算标签值。每个标签值需两个字节。
程序随后进到状态310,其中计算的标签值存入预定RAM单元。每个RAM单元对应于在NV存储器数据记录集合中的一个项。作为例子,在RAM标签值表中的第六项是对应于NV存储器数据记录中第六项的绝对地址,而不考虑在NV存储器中实际驻留位置。
标签值存入RAM以后,任何数据记录的搜索主要在RAM中执行。状态320假设项‘y’需要与数据记录的内容比较。在如无线电话那样的电子设备中,项‘y’可以对应于用户输入的电话号码。数据记录内容对应于与特定电话号码相关的名字和信息。用户能输入电话号码并希望检索与此号码有关的所有以前存储的信息。
搜索的第一步在状态322完成,其中计算对应于输入‘y’的标签值。在状态324,初始化在搜索中使用的变址计数器。流程接着进到点330。点330不是流程图的功能单元,仅仅包括用于将在图3A的流程图的状态链接到图3B的流程图的状态。
图3B从连接图3A的流程图到图3B的流程图的点330开始。程序从点330进入到状态340。在状态340,程序从RAM中检索对应于变址计数器识别的单元上以前存入的标签值。程序接着进入344,在那里对应于项‘y’的标签值与检索到的RAM标签值比较。检索和比较操作非常快发生,因为标签值只有两字节长且所有值均驻留在RAM中。如果程序判定两个标签值不匹配,程序进入状态354以检查在RAM中是否还有另外的标签项要与输入的标签值比较。如果在状态354,程序识别出在RAM中还有标签值尚未比较,程序进入到状态358,变址计数器加1。变址计数器加1以后,程序返回状态340以检索由变址计数器识别的下一个标签值。
如果相反,在状态354程序判定在RAM中没有另外的标签值未与项标签值比较,程序进到状态362,在其中程序得出结论,在存储器中不存在与输入项匹配的数据记录。程序随之结束。在没有标签值匹配输入项的标签值的情况时,必然没有匹配该输入项的数据记录存储在非易失性存储器中。在本发明中,对此情况没有对非易失存储器的访问。因此,搜索可以在甚至不必访问非易失性存储器的情况下,判定没有非易失性数据记录匹配。
如果在状态344,程序恰恰判定检索的标签值匹配输入项标签值,程序进到状态348。在状态348,程序从非易失性存储器检索对应于以前从RAM检索到的匹配的标签值的数据记录。因此,只有在存储在非易失性存储器的数据记录的标签值匹配输入项的标签值时,才访问该数据记录。
一旦实际数据记录从非易失性存储器检索出,程序进到状态350以执行与整个记录的比较。整个记录的比较是必需的,这是因为散列函数不提供从数据记录到标签值1∶1的映射。虽然,输入项和非易失性数据记录能产生相同的标签值,但必须比较实际的数据记录以便实际确认匹配。
如果检索的非易失性存储器数据记录匹配输入项,即完成成功的搜索。没有进一步理由再继续搜索程序,所以,终止程序并等待搜索新的输入项。
如果在状态350,程序判定检索的非易失性存储器数据记录不匹配输入项,如上所述,程序进到状态354,判断是否已经搜索了所有RAM标签值。
图3A和3B中的流程图示出如何将最小的RAM数量用于快速搜索储存在慢非易失性存储器内的数据记录。不必将非易失性存储器数据记录的整个内容加载到RAM,只需加载一组标签值到RAM。当需要对一个输入项搜索数据记录时,首先使用输入项产生标签值,其方法是采用与以前用于产生存储在RAM中的标签值相同的散列函数。然后,该输入项标签值逐个与存储在RAM中的标签值比较。如果找到匹配的标签值,从非易失性存储器检索对应的数据记录。因此,仅当有较高概率检索出匹配的数据记录时,才访问非易失性存储器。然后,从非易失性存储器检索的数据记录与输出项比较。因为两个记录产生相同的标签值,所以,有较高的可能性会获得匹配。然而,如果检索出的数据记录与输入项不匹配,就搜索余下的RAM标签值寻找其他与输入项标签值匹配的标签值。因为散列函数提供输入到标签值的接近1∶1的映射,通常每次搜索只访问非易失存储器一次。因而在使实现本发明所需的RAM数量最小化的同时又使非易失存储器访问的次数最小化。
提供了较佳实施例的前面描述,使本专业的熟练人员能作出或使用本发明。这些实施例的各种修改对本专业的熟练人员是容易明白的,此处确定的一般原则可应用于其他实施例而不必使用创造性。因此本发明不是要局限在这里所示的实施例,而是依据这里揭示的原则和新颖特征相一致的最广范围。
权利要求
1.一种用于使快速存储器的需要量最小的快速数据存取方法,其特征在于,所述方法包括产生单独的数据记录集合;将所述数据记录集合存入存储器;对该集合中的每个数据记录产生标签值;将这些标签值存入快速存储器的预定单元;接收请求搜索该数据记录集合的输入项;产生对应此输入项的输入项标签值;该输入项标签值与储存在快速存储器中的标签值比较;从数据记录集合中检索对应于与所述输入项标签值匹配的标签值的数据记录;和将检索的数据记录与输入项进行比较。
2.如权利要求1所述的方法,其特征在于,产生标签值包括输入数据记录到散列函数并将散列函数据的输出指定为标签值。
3.如权利要求2所述的方法,其特征在于,产生输入项标签值包括将输入项输入到散列函数并将散列函数输出指定为输入项的标签值。
4.如权利要求1所述的方法,其特征在于,所述数据记录集合存储在非易失性存储器中。
5.如权利要求4所述的方法,其特征在于,所述非易失性存储器是闪存。
6.如利要求1所述的方法,其特征在于,所述快速存储器是RAM。
7.如权利要求1所述的方法,其特征在于,还包括对所有对应于与输入项标签值匹配的标签值的数据记录重复数据记录检索及比较的步骤。
8.一种用于使快速存储器的需要量最小的快速数据存取装置,其特征在于,所述装置包括用于储存确定为数据记录集合的多个数据记录的第一存储器;数字处理器;和用于储存由所述数字处理器计算出对应于存储在第一存储器中的每个数据记录的标签值的第二存储器;其中,数字处理器响应为输入项搜索所述数据记录的请求,计算对应于该输入项的输入项标签值,将输入项标签值与储存在第二存储器的每个标签值比较,检索对应于匹配该输入项标签值的标签值的数据记录,并将输入项与检索的数据记录比较。
9.如权利要求8所述的装置,其特征在于,所述第一存储器是非易失性存储器。
10.如权利要求8所述的装置,其特征在于,所述第二存储器是RAM。
11.如权利要求8所述的装置,其特征在于,所述的数据记录包括在电子电话簿中的项。
12.如权利要求8所述的装置,其特征在于,所述标签值是使用数据记录作为散列函数的输入而计算出的散列函数的输出。
13.如权利要求12所述的装置,其特征在于,所述输入项标签值是使用曾用于计算所述标签值的相同的散列函数来计算。
14.如权利要求8所述的装置,其特征在于,在所述第二存储器中为存在所述第一存储器的每条数据记录分配两个字节。
15.一种配置用于用较少的RAM需求来进行快速数据存取的电话,其特征在于,所述电话包括用于存储确定为数据集合的多个数据记录的第一存储器;数字处理器;和用于储存由数字处理器计算出对应于存储在第一存储器中的每个数据记录的标签值的第二存储器;其中,所述数字处理器响应为输入项搜索该批记录的请求,计算对应于所述输入项的输入项标签值,将输入项标签值与储存在第二存储器的每个标签值比较,检索对应于匹配该输入项标签值的标签值的数据记录,并将输入项与检索的数据记录进行比较。
16.如权利要求15所述的电话,其特征在于,所述数据记录集合是电子电话簿。
17.如权利要求15所述的电话,其特征在于,所述第一存储器是非易失性存储器。
18.如权利要求15所述的电话,其特征在于,所述第二存储器是RAM。
19.如权利要求15所述的电话,其特征在于,所述标签值是使用数据记录作为散列函数的输入而计算出的散列函数的输出。
20.如权利要求19所述的电话,其特征在于,所述输入项标签值是使用曾用于计算所述标签值的相同的散列函数来计算的。
全文摘要
一种用于减少所需的RAM数量同时保持快数据存取的方法与装置。数据记录常保存在非易失性存储器以便即使在电路断电时仍维持数据记录的内容。在本发明中,每个在数据记录的非易失性RAM集合中的每条记录输入到函数H(x),后者输出一标签值。经计算的标签值存入RAM中预定的存储器单元。每个经计算的标签长度上短于存储在非易失性RAM中的记录。因此与将整个数据记录集合存储在RAM中所需要的RAM相比,对每条数据记录保存一个标签值需要较少的RAM。当需要对应y的数据记录项时,计算H(y)的值。然后该H(y)值与标签值表中所有值比较。如果找到匹配,从其在非易失性RAM中的位置检索对应的记录,并与y比较。如果该值不匹配,搜索标签值表寻找其他位置匹配H(y)。其结果是仅需要最小量的RAM,就能与非易失性RAM的内容进行非常快速的比较。
文档编号G06F17/30GK1496523SQ01803840
公开日2004年5月12日 申请日期2001年1月19日 优先权日2000年1月19日
发明者梅幼松, E·J·列克文, 列克文 申请人:高通股份有限公司