Search Images Maps Play YouTube News Gmail Drive More »
Advanced Patent Search | Web History | Sign in

Patents

A method of memory management for a primary memory created from a non-volatile, long-term storage medium, in particular flash memory, which enables direct manipulation of data segments stored therein. The data segments of a single file are typically not stored contiguously in relation to the order in which they are stored and subsequently recalled, yet the method enables recall in the logical order in which the data segments were created. This method is particularly useful for flash memory which has the characteristic of not being able to overwrite data in memory without first erasing previously recorded data. The method comprises the minimum steps of dividing the primary memory into equal size blocks, each block being the smallest amount of data which can be read from or written to memory in a single read or write operation. A cache memory the size of at least one of the read/write blocks is then coupled to the primary memory and provides temporary...

InventorNorbert Daberko
Original AssigneeNorris Communications Corporation
Primary Examiner: Jean M. Corrielus
Current U.S. Classification1/1; 707/999.102; 707/999.205; 711/2; 711/5; 711/200; 711/209; 711/E12.008; 711/E12.017; 714/E11.136; G9B/20.009
International Classification: G06F 1730

View patent at USPTO
Search USPTO Assignment Database

Citations

Cited PatentFiling dateIssue dateOriginal AssigneeTitle
US4685057Jun 6, 1983Aug 4, 1987Data General CorporationMemory mapping system
US5200959Oct 17, 1989Apr 6, 1993SunDisk CorporationDevice and method for defect handling in semi-conductor memory
US5263160Jan 31, 1991Nov 16, 1993Digital Equipment CorporationAugmented doubly-linked list search and management method for a system having data stored in a list of data elements in memory
US5337275Nov 1, 1993Aug 9, 1994Intel CorporationMethod for releasing space in flash EEPROM memory array to allow the storage of compressed data
US5341330Nov 1, 1993Aug 23, 1994Intel CorporationMethod for writing to a flash memory array during erase suspend intervals
US5357475Oct 30, 1992Oct 18, 1994Intel CorporationMethod for detaching sectors in a flash EEPROM memory array
US5404485Mar 8, 1993Apr 4, 1995M-Systems Flash Disk Pioneers Ltd.Flash file system
US5437020Oct 3, 1992Jul 25, 1995Intel CorporationMethod and circuitry for detecting lost sectors of data in a solid state memory disk
US5448577Oct 30, 1992Sep 5, 1995Intel CorporationMethod for reliably storing non-data fields in a flash EEPROM memory array
US5454103Feb 1, 1993Sep 26, 1995LSC, Inc.Method and apparatus for file storage allocation for secondary storage using large and small file blocks
US5551020Mar 28, 1994Aug 27, 1996Flextech Systems, Inc.System for the compacting and logical linking of data blocks in files to optimize available physical storage
US5581736Jul 18, 1994Dec 3, 1996Microsoft CorporationMethod and system for dynamically sharing RAM between virtual memory and disk cache
US5586291Dec 23, 1994Dec 17, 1996EMC CorporationDisk controller with volatile and non-volatile cache memories
US5602987Dec 29, 1993Feb 11, 1997SanDisk CorporationFlash EEprom system

Referenced by

Citing PatentFiling dateIssue dateOriginal AssigneeTitle
US5978810Feb 3, 1998Nov 2, 1999International Business Machines CorporationData management system and method for storing a long record in a set of shorter keyed records
US6044346Mar 9, 1998Mar 28, 2000Lucent Technologies Inc.System and method for operating a digital voice recognition processor with flash memory storage
US6212097Mar 23, 2000Apr 3, 2001Sony CorporationNonvolatile memory
US6247024Sep 25, 1998Jun 12, 2001International Business Machines CorporationMethod and system for performing deferred file removal in a file system
US6262915Mar 2, 2000Jul 17, 2001Sony CorporationNonvolatile memory and nonvolitile memory reproducing apparatus
US6272503May 30, 1997Aug 7, 2001Oracle CorporationTablespace-relative database pointers
US6272587May 12, 1999Aug 7, 2001Cummins Engine Company, Inc.Method and apparatus for transfer of data between cache and flash memory in an internal combustion engine control system
US6304883Jul 29, 1997Oct 16, 2001Samsung Electronics Co., Ltd.Technique for managing files in telephone switching system
US6404676Feb 13, 2001Jun 11, 2002Sony CorporationNonvolatile memory and nonvolatile memory reproducing apparatus
US6502204Apr 19, 2001Dec 31, 2002Hitachi, Ltd.Library system storing removable storage media
US6535949Apr 19, 1999Mar 18, 2003Research In Motion LimitedPortable electronic device having a log-structured file system in flash memory
US6549901Sep 29, 2000Apr 15, 2003Oracle CorporationUsing transportable tablespaces for hosting data of multiple users
US6587915Sep 28, 2000Jul 1, 2003Samsung Electronics Co., Ltd.Flash memory having data blocks, spare blocks, a map block and a header block and a method for controlling the same
US6594674Jun 27, 2000Jul 15, 2003Microsoft CorporationSystem and method for creating multiple files from a single source file
US6633724Feb 25, 1999Oct 14, 2003Hitachi, Ltd.Realtime data recording method
US6675180Jun 4, 2001Jan 6, 2004Matsushita Electric Industrial Co., Ltd.Data updating apparatus that performs quick restoration processing
US6760535Mar 27, 2000Jul 6, 2004ATI International SRLMethod and apparatus for cache management for a digital VCR archive
US6789095Mar 25, 2002Sep 7, 2004Sony CorporationFile management method, program therefore, recording medium containing the program, and file management apparatus for performing the method
US6804671Jan 28, 2003Oct 12, 2004Oracle International CorporationPluggable tablespaces for database systems
US6804685May 17, 2001Oct 12, 2004STMicroelectronics S.r.l.Voice message managing method, in particular for a voice data recording/playing/editing electronic device
US6823449Mar 9, 2001Nov 23, 2004Sun Microsystems, Inc.Directory structure-based reading of configuration ROM
US6910082Nov 18, 1999Jun 21, 2005International Business Machines CorporationMethod, system and program products for reducing data movement within a computing environment by bypassing copying data between file system and non-file system buffers in a server
US6934700Oct 18, 1999Aug 23, 2005Koninklijke Philips Electronics N.V.File systems supported data sharing
US6950918Apr 30, 2002Sep 27, 2005Lexar Media, Inc.File management of one-time-programmable nonvolatile memory devices
US6957295Jan 18, 2002Oct 18, 2005Lexar Media, Inc.File management of one-time-programmable nonvolatile memory devices
US6973519Jun 3, 2003Dec 6, 2005Lexar Media, Inc.Card identification compatibility
US6978342Jul 21, 2000Dec 20, 2005Lexar Media, Inc.Moving sectors within a block of information in a flash memory mass storage architecture
US6985584Mar 27, 2000Jan 10, 2006Sony CorporationNon-volatile record medium, recording method, and recording apparatus
US7000064Sep 27, 2002Feb 14, 2006Lexar Media, Inc.Data handling system
US7102671Feb 8, 2000Sep 5, 2006Lexar Media, Inc.Enhanced compact flash memory card
US7111140Apr 26, 2004Sep 19, 2006Lexar Media, Inc.Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7133599Aug 20, 2003Nov 7, 2006Hitachi, Ltd.Realtime data recording method
US7138295Dec 18, 2003Nov 21, 2006Elm Technology CorporationMethod of information processing using three dimensional integrated circuits
US7167944Jun 4, 2003Jan 23, 2007Lexar Media, Inc.Block management for mass storage
US7185208Sep 27, 2002Feb 27, 2007Lexar Media, Inc.Data processing
US7193239Jul 3, 2003Mar 20, 2007Elm Technology CorporationThree dimensional structure integrated circuit
US7193916Jun 16, 2004Mar 20, 2007Sony CorporationApparatus and method for determining erasability of data
US7215580Jun 14, 2004May 8, 2007Lexar Media, Inc.Non-volatile memory control
US7231643Feb 21, 2003Jun 12, 2007Lexar Media, Inc.Image rescue system including direct communication between an application program and a device driver
US7240065May 27, 2004Jul 3, 2007Oracle International CorporationProviding mappings between logical time values and real time values
US7242924Aug 29, 2003Jul 10, 2007Broadcom Corp.Methods of recording voice signals in a mobile set
US7251660Jun 10, 2004Jul 31, 2007Oracle International CorporationProviding mappings between logical time values and real time values in a multinode system
US7254724Sep 27, 2002Aug 7, 2007Lexar Media, Inc.Power management system
US7257666Mar 1, 2004Aug 14, 2007Fujitsu LimitedMethod of writing, erasing, and controlling memory for memory device
US7263591Feb 6, 2006Aug 28, 2007Lexar Media, Inc.Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7275686Dec 14, 2004Oct 2, 2007Lexar Media, Inc.Electronic equipment point-of-sale activation to avoid theft
US7340581Sep 27, 2002Mar 4, 2008Lexar Media, Inc.Method of writing data to non-volatile memory
US7370166Apr 29, 2005May 6, 2008Lexar Media, Inc.Secure portable storage device
US7385835Dec 18, 2003Jun 10, 2008Elm Technology CorporationMembrane 3D IC fabrication
US7403852Oct 20, 2003Jul 22, 2008Mitsubishi Denki Kabushiki KaishaData architecture of map data, data architecture of update instruction data, map information processing apparatus, and map information providing apparatus
US7424593Apr 13, 2006Sep 9, 2008Micron Technology, Inc.Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7441090Aug 10, 2005Oct 21, 2008Lexar Media, Inc.System and method for updating data sectors in a non-volatile memory using logical block addressing
US7464306Aug 27, 2004Dec 9, 2008Lexar Media, Inc.Status of overall health of nonvolatile memory
US7474004Dec 18, 2003Jan 6, 2009Elm Technology CorporationThree dimensional structure memory
US7479694Dec 19, 2003Jan 20, 2009Elm Technology CorporationMembrane 3D IC fabrication
US7485571Sep 19, 2003Feb 3, 2009Elm Technology CorporationMethod of making an integrated circuit
US7504732Aug 19, 2002Mar 17, 2009Elm Technology CorporationThree dimensional structure memory
US7523249Jun 24, 2005Apr 21, 2009Lexar Media, Inc.Direct logical block addressing flash memory mass storage architecture
US7549013Apr 13, 2006Jun 16, 2009Lexar Media, Inc.Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US7571173Oct 15, 2004Aug 4, 2009Oracle International CorporationCross-platform transportable database
US7571275Aug 31, 2005Aug 4, 2009Hamilton Sundstrand CorporationFlash real-time operating system for small embedded applications
US7594063Nov 19, 2004Sep 22, 2009Lexar Media, Inc.Storage capacity status
US7600085May 23, 2005Oct 6, 2009Sony CorporationApparatus and method for determining erasability of data
US7610314Oct 7, 2005Oct 27, 2009Oracle International CorporationOnline tablespace recovery for export
US7615837Jan 24, 2005Nov 10, 2009Taiwan Semiconductor Manufacturing CompanyLithography device for semiconductor circuit pattern generation
US7634494May 3, 2005Dec 15, 2009Intel CorporationFlash memory directory virtualization
US7670893Nov 3, 2003Mar 2, 2010Taiwan Semiconductor Manufacturing Co., Ltd.Membrane IC fabrication
US7681057Aug 7, 2007Mar 16, 2010Lexar Media, Inc.Power management of non-volatile memory systems
US7705466Sep 26, 2003Apr 27, 2010Elm Technology CorporationThree dimensional multi layer memory and control logic integrated circuit structure
US7725628Apr 19, 2005May 25, 2010Lexar Media, Inc.Direct secondary device interface by a host
US7734862Jan 11, 2007Jun 8, 2010Lexar Media, Inc.Block management for mass storage
US7743290Nov 24, 2008Jun 22, 2010Lexar Media, Inc.Status of overall health of nonvolatile memory
US7763948Oct 22, 2004Jul 27, 2010Taiwan Semiconductor Manufacturing Co., Ltd.Flexible and elastic dielectric integrated circuit
US7774576Apr 20, 2009Aug 10, 2010Lexar Media, Inc.Direct logical block addressing flash memory mass storage architecture
US7814360Jan 25, 2007Oct 12, 2010Oralce International CorporationSynchronizing cluster time to a master node with a faster clock
US7865659May 5, 2008Jan 4, 2011Micron Technology, Inc.Removable storage device
US7873684Nov 21, 2003Jan 18, 2011Oracle International CorporationAutomatic and dynamic provisioning of databases
US7877540Dec 13, 2005Jan 25, 2011SanDisk CorporationLogically-addressed file storage methods
US7903463Apr 16, 2009Mar 8, 2011Micron Technology, Inc.Increased NAND flash memory read throughput
US7908426Oct 1, 2008Mar 15, 2011Lexar Media, Inc.Moving sectors within a block of information in a flash memory mass storage architecture
US7911012Jan 18, 2008Mar 22, 2011Taiwan Semiconductor Manufacturing Co., Ltd.Flexible and elastic dielectric integrated circuit
US7917709Dec 15, 2009Mar 29, 2011Lexar Media, Inc.Memory system for data storage and retrieval
US7944762May 8, 2007May 17, 2011Micron Technology, Inc.Non-volatile memory control
US7949822Sep 8, 2009May 24, 2011Micron Technology, Inc.Storage capacity status
US8019932May 4, 2010Sep 13, 2011Micron Technology, Inc.Block management for mass storage
US8032694Jul 27, 2010Oct 4, 2011Micron Technology, Inc.Direct logical block addressing flash memory mass storage architecture
US8035233Mar 3, 2003Oct 11, 2011Elm Technology CorporationAdjacent substantially flexible substrates having integrated circuits that are bonded together by non-polymeric layer
US8078797May 22, 2009Dec 13, 2011Micron Technology, Inc.Increasing the memory performance of flash memory devices by writing sectors simultaneously to multiple flash memory devices
US8080442Jun 21, 2008Dec 20, 2011Elm Technology CorporationVertical system integration
US8090404Dec 15, 2009Jan 3, 2012Broadcom CorporationMethods of recording voice signals in a mobile set
US8090886Apr 22, 2010Jan 3, 2012Micron Technology, Inc.Direct secondary device interface by a host
US8116890Oct 25, 2006Feb 14, 2012MPMAN.COM, Inc.Portable sound reproducing system and method
US8135925Mar 28, 2011Mar 13, 2012Micron Technology, Inc.Methods of operating a memory system
US8151041Dec 15, 2010Apr 3, 2012Micron Technology, Inc.Removable storage device
US8161085Oct 14, 2010Apr 17, 2012Oracle International CorporationAutomatic and dynamic provisioning of databases
US8166488Jan 16, 2007Apr 24, 2012Micron Technology, Inc.Methods of directly accessing a mass storage data device
US8169856Oct 24, 2008May 1, 2012Oracle International CorporationTime synchronization in cluster systems
US8170700Apr 26, 2006May 1, 2012Mpman.com, Inc.Portable sound reproducing system and method
US8171203Dec 19, 2003May 1, 2012Micron Technology, Inc.Faster write operations to nonvolatile memory using FSInfo sector manipulation
US8174892Mar 7, 2011May 8, 2012Round Rock Research, LLCIncreased NAND flash memory read throughput
US8175727Dec 29, 2006May 8, 2012Mpman.com, Inc.Portable sound reproducing system and method
US8208322May 16, 2011Jun 26, 2012Micron Technology, Inc.Non-volatile memory control
US8214064Dec 29, 2006Jul 3, 2012LG Electronics Inc.Portable sound reproducing system and method
US8225042May 5, 2009Jul 17, 2012Micron Technology, Inc.Method and apparatus for preventing foreground erase operations in electrically writable memory devices

Claims

1. A method of memory management for a primary memory created from a non-volatile, long-term storage medium, said method enabling direct manipulation of contiguous and non-contiguous discrete data segments stored therein by a file system, and comprising the steps of:

(a) creating the primary memory from a non-volatile, long-term storage medium, wherein the primary memory comprises a plurality of blocks in which the data segments are to be stored;
(b) coupling a cache memory to the primary memory, said cache memory providing temporary and volatile storage for at least one of the data segments;
(c) writing a new data segment from the cache memory to the primary memory by linking said new data segment to a sequentially previous logical data segment by the following steps:
(1) receiving the new data segment in the cache memory;
(2) moving the new data segment from the cache memory to a next available space within primary memory such that the new data segment is stored in primary memory in non-used memory space;
(3) identifying the previous logical data segment in primary memory;
(4) creating a logical link between the previous logical data segment and the new data segment such that the logical link provides a path for sequentially accessing the data segments within the primary memory; and
(5) creating additional serial and logical links as subsequent new data segments are written to primary memory, said logical links providing the path for serially accessing the data segments regardless of contiguity of the data segments relative to each other within the primary memory.

2. The method of claim 1 wherein the method comprises the additional step of reading at least one data segment from primary memory by following the steps of:

(a) moving backwards or forwards from a current data segment to other serially and logically linked data segments within the primary memory along a path of serial and logical links;
(b) identifying the at least one data segment when it is the current data segment; and
(c) retrieving the current data segment from the primary memory by reading said data segment into the cache memory.

3. The method as defined in claim 2 wherein the method comprises the additional step of creating a current file pointer, said current file pointer being a physical address stored in a memory corresponding to a location of a file in the primary memory, and wherein the file system accesses files stored in the primary memory by retrieving data beginning at the physical address stored in the current file pointer.

4. The method as defined in claim 3 wherein the step of moving forwards to other serially and logically linked data segments from a current data segment comprises the additional steps of:

(a) locating a next data segment address pointer stored in the current data segment which stores an address of the next data segment which is logically linked to the current data segment;
(b) retrieving the address from the next data segment address pointer; and
(c) storing the address in the current file pointer.

5. The method as defined in claim 4 wherein the step of moving backwards to other serially and logically linked data segments from a current data segment comprises the additional steps of creating a history of movement by the current file pointer along the linked data segments:

(a) creating a memory stack for storing address pointers in memory, said stack following a last in, first out process for pushing on and popping off address pointers from the stack;
(b) pushing an address pointer of a root directory onto the stack when the file system is initialized; and
(c) sequentially pushing subsequent address pointers onto the stack from the current file pointer as the current file pointer moves down a logical link to a last data segment from which the file system needs to backtrack.

6. The method as defined in claim 5 wherein the step of moving backwards to other serially and logically linked data segments from a current data segment comprises the additional steps of:

(a) sequentially popping a top address pointer from the stack, said top address being an address pointer to a preceding data segment;
(b) storing the popped top address pointer to the current file pointer; and
(c) repeating steps (a) and (b) until the current address pointer contains the address of a desired data segment.

7. The method as defined in claim 2 wherein the file system includes application program instructions which execute functions of the file system which are compatible with DOS compliant computer devices.

8. The method as defined in claim 7 wherein the file system includes BIOS function calls which are specific to memory type such that application program instructions are implemented in context of the memory technology.

9. The method as defined in claim 2 wherein the method of memory management includes the step of creating logical blocks which overlay a physical memory structure of primary memory, said logical blocks comprising at least one erase block.

10. The method as defined in claim 9 wherein the step of creating logical blocks which overlay the physical memory structure further includes the step of creating logical memory block maps within each logical block, said memory block map indicating whether the at least one erase block is nonfunctional.

11. The method as defined in claim 10 wherein the step of creating logical memory blocks maps includes the step of creating a logical block control map, said map including a physical address of the physical memory over which the logical block corresponds, an address of a next available memory equal size block in which data may be stored, and a nonfunctional block map.

12. The method as defined in claim 1 wherein the step of creating the primary memory from a non-volatile, long-term storage medium comprises the more specific step of selecting flash memory as the primary memory.

13. The method as defined in claim 12 wherein the step of creating the primary memory from flash memory comprises the more specific step of selecting NAND technology flash memory as primary memory.

14. The method as defined in claim 1 wherein the step of coupling the cache memory to the primary memory comprises the more specific step of coupling a random access memory to the primary memory.

15. The method as defined in claim 1, wherein the step of creating a logical link between the previous logical data segment and the new data segment comprises the steps of:

(a) appending a header to new data segments when writing the new data segments to primary memory by moving the new data segment from the cache memory to the next available contiguous memory space within primary memory; and
(b) including in the header at least one address pointer so as to logically link the header to other data segments.

16. The method as defined in claim 15 wherein the step of appending a header to the new data segments comprises the more specific step of selecting a header from the group consisting of a device, volume, directory, file, data, and tree header.

17. The method as defined in claim 11 wherein the step of appending a header to the new data segments comprises the more specific step of selecting a header-like data structure from the group consisting of a tree node, a segment index entry, and a secondary segment index entry.

18. The method as defined in claim 15 wherein the step of appending a header to the new data segments so as to create the logical link to the other data segments comprises the more specific steps of including within the header an identification field wherein unique identification data is stored such that no headers in the primary memory have the same identification data.

19. The method as described in claim 15 wherein the method of memory management for a primary memory comprises the additional step of reserving a fixed amount of primary memory for an edit history which provides a record of all modifications to at least one file stored in primary memory.

20. The method as described in claim 19 wherein the method of memory management which reserves the fixed amount of primary memory for an edit history comprises the more specific step of creating a playback tree structure, said playback tree structure providing temporary storage space in the work memory for a copy of sequentially related data segments comprising the at least one file stored in primary memory.

21. The method as defined in claim 20 wherein the step of creating a playback structure in temporary storage space comprises the steps of:

(a) creating a first tree header including a first tree node address pointer and a next tree node address pointer, said first tree header corresponding to a directory in which the current file pointer resides;
(b) creating at least one tree node including a next tree node address pointer, a branch node pointer, a data address pointer and a data size field, said at least one tree node corresponding to a file whose address is contained within the current file pointer.

22. The method as defined in claim 20 wherein the step of creating a playback structure in temporary storage space which provides seamless playback of data stored in a file of primary memory includes the ability to logically insert new data in an existing data segment by the steps of:

(a) creating a second tree node which enables retrieval of a portion of the existing data segment which is designated as pre-insertion data;
(b) creating a third tree node which enables retrieval of data from a new data header, said new data header containing the new data to be logically inserted, and said new data being seamlessly retrievable after retrieval of the pre-existing data; and
(c) creating a fourth tree node which enables seamless retrieval of a portion of the existing data segment which is designated as post-insertion data after retrieval of the new data.

23. The method as defined in claim 20 wherein the step of creating a playback structure in temporary storage space which provides seamless playback of data stored in a file stored in primary memory includes the ability to logically delete a portion of data from an existing data segment without physically deleting said portion, and comprising the steps of:

(a) creating a second tree node which enables retrieval of a portion of the existing data segment which is designated as pre-erasure data; and
(b) creating a third tree node which enables seamless retrieval of a portion of the existing data segment which is designated as post-erasure data after retrieval of the pre-erasure data.

24. The method as defined in claim 23 wherein the method comprises the additional step of creating a new data header which records location information about the portion of data being logically deleted from the existing data segment.

25. The method as defined in claim 20 wherein the method of memory management comprises the more specific steps of separating the work memory from a user memory in primary memory, said work memory being dedicated to storing the playback tree structures.