Abstract:
A non-volatile memory, such as a flash memory, may have improved speed when writing by providing direct memory access to a write buffer maintained in system memory. Because the write buffer in system memory may be relatively large, a sufficient buffer is available to the non-volatile memory to improve write performance. At the same time, the cost of the non-volatile memory is not prohibitively increased by providing an on-chip write buffer of substantial size.

Description:
Background  
         [0001]    This invention relates generally to data storage technology in a computer system and, more particularly, to non-volatile memory devices.  
           [0002]    With some types of non-volatile memory, such as flash memory, data can be relatively quickly read from the device. Flash memories can also be made in relatively high densities. Thus, flash memories are well suited for use in mobile electronic devices for long term storage data.  
           [0003]    However, with some non-volatile memories, such as flash memories, it takes a relatively longer time to write data to the flash memories than is the case with other types of memory.  
           [0004]    Thus, there is a need for better ways to improve the speed of writes to non-volatile memories such as flash memories. 
       
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0005]    [0005]FIG. 1 is a schematic depiction of one embodiment of the present invention;  
         [0006]    [0006]FIG. 2 is a schematic depiction of another embodiment of the present invention;  
         [0007]    [0007]FIG. 3 is a flow chart for one embodiment of the present invention;  
         [0008]    [0008]FIG. 4 is a flow chart of another embodiment of the present invention; and  
         [0009]    [0009]FIG. 5 is a system depiction for one embodiment of the present invention. 
     
    
     DETAILED DESCRIPTION  
       [0010]    The problem of reduced write access times to non-volatile memory, such as flash memory, may be solved by allowing the flash or non-volatile memory to have access to, and control over, at least a portion of the system memory. The flash or non-volatile memory device may utilize this access and control to maintain a relatively large write buffer in the system memory. The flash or non-volatile memory device may use direct memory access to the system memory to read the data buffer.  
         [0011]    By allowing the non-volatile memory to independently manage a relatively large write buffer, the overall system may benefit from utilizing the non-volatile memory co-processor and may significantly reduce the processing requirements for the software associated with flash media management, in some embodiments. The media management may then be relatively simplified and in essence, in some embodiments, the media management software may simply become a reclaim manager.  
         [0012]    Writing data to a non-volatile memory may be much less processor intensive in some embodiments. More processing time is then available for the active applications, due to a lower processor utilization for media management software. Fewer bus cycles may be necessary to write data to the non-volatile memory device. Reducing the processing requirements of the media management software may greatly improve system throughput performance.  
         [0013]    Referring to FIG. 1, in accordance with one embodiment of the present invention, a write command, for example from a processor, may include a “from address,” a “to address,” and a command length, as indicated at  12   a . In this embodiment, the write command is forwarded to the non-volatile memory  10   a  that, in one embodiment of the present invention, is a flash memory. The non-volatile memory  10   a  programs from the data located in system memory  14 . In other words, data  16  is provided from a write buffer maintained system memory  14  over the line  18  to the non-volatile memory  10   a . The non-volatile memory  10   a  can pull the data to program from the system memory  14 , as indicated, along line  18 .  
         [0014]    The write command, for example from the processor, tells the system memory  14  the location of the data to write, the location in the flash to write the data, and the length of the data to program to flash. Thus, in the embodiment shown in FIG. 1, applications post data to locations in the system memory  14  partitioned to hold the data.  
         [0015]    Alternatively, as shown in FIG. 2, the write command may post the data to a large write buffer maintained in system memory  14  by the non-volatile memory  10   b . In this case, the application posts the data to the non-volatile memory  10   b , which copies the data to the system memory  14  buffer. In one embodiment the data may be copied immediately or substantially immediately. Thus, the write command posts the data to the system memory  14  buffer, as indicated at  12   b , and the non-volatile memory  10   b  copies the posted data to the non-volatile memory  14  as indicated at  19 . Sometime later the posted data is actually written to the non-volatile memory  10   b  as indicated at  20 . Again, in one embodiment, the memory  10  may be a flash memory.  
         [0016]    Referring to FIG. 3, the embodiment of FIG. 1 may be implemented in software or hardware. In the case of a software implementation, the software may be stored in the non-volatile memory, the system memory, or any storage location. In the case of a hardware implementation, the hardware to implement the system may be resident in the non-volatile memory  10   a  in one embodiment of the present invention.  
         [0017]    Thus, the flow  30 , illustrated in FIG. 3, begins by receiving a write command including a from address, a to address, and a length that is indicated in block  32 . The non-volatile memory  10   a  retrieves data to a write buffer in system memory  14  as indicated in block  34 . Then the non-volatile memory  10   a  programs from data in the system memory  14 , along the lines  18  in FIG. 1, as indicated in block  36  in FIG. 3.  
         [0018]    Similarly, in connection with the embodiment shown in FIG. 2, the flow  40  may be implemented in software or hardware. Initially, a write command is received in the non-volatile memory  10   b  as indicated in block  42 . Then the posted data is copied by the non-volatile memory  10   b  to the system memory  14  as indicated in block  44 . Finally, the data may be written to the non-volatile memory from the system memory, as indicated in the posted data line  20  in FIG. 2 and as indicated in block  46  in FIG. 4.  
         [0019]    Referring to FIG. 5, a processor-based system  22  may include the non-volatile memory  10 , which may be memory in the form indicated at  10   a  in FIG. 1, or  10   b  in FIG. 2. The non-volatile memory  10  may be coupled by a bus  28  to an interface  26 . The interface  26  may in turn be coupled to a processor  24  and the system memory  14 . As described previously, the system memory  14  may include a portion which acts as a write buffer for the non-volatile memory  10 .  
         [0020]    The processor  24  may be a general purpose processor or a digital signal processor, as two examples. The system  22  may be any processor-based system, including a mobile or battery-powered system such as a cellular telephone, a personal digital assistant, or a wireless access device, to mention a few examples. However, the system  22  may be any processor-based system that uses a non-volatile memory  10 . However, in some embodiments, the system  22  may also use a rotatable memory such as a hard disk drive.  
         [0021]    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.