Abstract:
A hardware comparator may be utilized to locate data in non-volatile memories such as flash memories. By using a hardware, instead of a software, approach, the access speed may be improved and the load on the unit that executes the software may be reduced.

Description:
BACKGROUND  
         [0001]    This invention relates generally to non-volatile memories that store data without needing to be dynamically refreshed.  
           [0002]    A flash memory is one type of non-volatile memory. In order to access data within a flash memory, a media manager is utilized. The media manager controls the accessing of the non-volatile array. In particular, it copies information out of blocks of stored data, erases blocks, writes information, and updates information to the same or another block. In accessing information, the media manager translates logical information to access data in the memory array into physical positions of blocks in the array. The media manager generally causes one or more mapping structures to be stored somewhere in the array.  
           [0003]    The data within the array may be stored in the form of objects. An object is a granularity of storage. A granularity is the minimum amount of space that can be allocated. A block stores one or more objects plus object headers and allows data to be stored logically contiguously, rather than physically contiguously.  
           [0004]    Generally, flash and other non-volatile file systems fragment data before storing the data in the memory. Fragmenting is a process that breaks data into smaller, more manageable items that are stored to the memory array. Due to breaking the data into relatively smaller units, flash file systems typically spend a significant amount of time searching for specific fragments in the memory.  
           [0005]    Currently media management software is executed to search for the desired fragment. This code is typically executed repeatedly to find any specific object. The same code is then executed many more times to string individual objects together. The repetitive nature of the fragment search is a non-productive process. Not only is it processor intensive, diverting the processor unnecessarily to the search process, but it also slows the accessing of data.  
           [0006]    Thus, there is a need for better ways to access data from non-volatile memories such as flash memories. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0007]    [0007]FIG. 1 is a schematic depiction of one embodiment of the present invention;  
         [0008]    [0008]FIG. 2 is a schematic depiction of an implementation, in accordance with one embodiment of the present invention, of the features shown in FIG. 1; and  
         [0009]    [0009]FIG. 3 is a system depiction of one embodiment of the present invention.  
     
    
     DETAILED DESCRIPTION  
       [0010]    Referring to FIG. 1, a non-volatile memory  10 , such as a flash memory, may include a memory array  12  coupled by an interface  16 , such as a bus, to a control unit  18 , a read-only memory  20 , an input device  14 , and output terminals  22 . A media manager includes software that is implemented through the control unit  18  and read-only memory  20 . The media manager may be stored in the read-only memory  20  so that it is always available and cannot be erased.  
         [0011]    However, instead of relying on the media manager to locate objects of data in the array  12 , a hardware implementation may be used. This hardware may be resident within the control unit  18  in one embodiment of the present invention.  
         [0012]    Referring to FIG. 2, the array.  12  is schematically depicted as a large concatenated list of objects  318 , including an object # 0   318   a  and an object # 9   318   b , although in practice many more objects would be resident within typical memory arrays  12 . A hardware system  30 , including a sliding comparator  34 , sequentially accesses the objects  318  in the array  12  to determine whether any of the objects are objects that have been requested, for example through the media manager  40 .  
         [0013]    Thus, the media manager  40  may receive a request through an input device  14  for particular data stored in the memory array  12 . Instead of executing software to find that object, the media manager  40  simply sends the pertinent identifying information to a compare register  32 . The identifying information for the object(s) sought is stored in the compare register  32 . A sliding comparator  34  sequentially checks the header information associated with each object  318  to determine whether that object&#39;s identifier corresponds to the identifier of the target object in the compare register  32 . The identifying information may include as examples, an object identifier, an object address, or object data.  
         [0014]    When a match between the identification of an object in the register  32  and an object  318  is found, the comparator  34  notifies the media manager  40  and provides the location information. The media manager  40  may enable access to the requested objects through the output terminals  22  in a conventional fashion.  
         [0015]    In some embodiments, the system  30  may simply start at a first block and search the objects  318  to the end of the block for a match. Each individual object  318  may be compared with the value in the compare register  32 . If the match is unsuccessful, the sliding comparator  34  slides to the next modulo address to test for a comparison. When a match is found, the location of the matching object is passed back to the media manager  40 .  
         [0016]    In some embodiments, the hardware system  30  may take less time to find objects than a software comparison algorithm. Thus, the access time may be improved in some embodiments and the control unit may be freed to execute other tasks in some cases. In some cases, some objects may be found in some blocks using the software technique and other objects may be found using the hardware technique described herein.  
         [0017]    Examples of applications for data storage include parameter or data storage and/or file management in cellular phones and storage files in personal digital assistants.  
         [0018]    Referring to FIG. 3, a system  50  may include a processor  52 , coupled through an interface  54 , to a system memory  56  and a non-volatile storage  10 . The non-volatile storage  10  may use the hardware system  30 . The processor  52  may be a conventional, general purpose processor or it may be a digital signal processor, to mention two examples.  
         [0019]    The system  50  may be any of a variety of devices, including wired and wireless devices and mobile and non-mobile devices. Examples of mobile devices that are well suited to using the concepts described herein include personal digital assistants and cellular telephones.  
         [0020]    While the present invention has been described with respect to a limited number of embodiments, those skilled in the art will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations as fall within the true spirit and scope of this present invention.