# US 7,610,445 B1 · System and method for improving data integrity and memory performance using non-volatile media

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,445 B1
- Document ID: US7610445B1
- Status: Granted
- Kind: B1
- Application number: 11/184,131
- Filed: 2005-07-18
- Granted: 2009-10-27
- Earliest claimed: 2005-07-18
- Assignees: Palm, Inc.
- Inventors: Justin Evan Manus; Douglas Anderson; Yoon Kean Wong; Rajan Ranga
- Web page: https://patentgrep.com/patent/US7610445B1

## CPC

- G06F 12/0804: with main memory updating (G06F12/0806 takes precedence)
- G06F 12/0866: for peripheral storage systems, e.g. disk cache
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system and computer system for improving data integrity and memory performance using non-volatile media. A system includes a non-volatile mass storage unit, e.g., a flash memory device and/or a hard drive unit for instance. A memory device is used as a high speed data buffer and/or cache for the non-volatile storage unit. The memory device may be non-volatile, e.g., magnetic random access memory (MRAM) or volatile memory, e.g., synchronous dynamic random access memory (SDRAM). By buffering and/or caching the write data, fewer accesses are required to the mass storage device thereby increasing system performance. Additionally, mechanical and electrical degradation of the mass storage device is reduced. Certain trigger events can be programmed to cause data from the memory device to be written to the mass storage device. In one embodiment, the write buffer contents are preserved across reset or power loss events. In one embodiment, the mass storage unit may be a data transport layer, e.g., Ethernet, USB, Bluetooth, etc.

## Claims

### Claim 1

A method of accessing a non-volatile media having a file system, the method comprising:
temporarily storing a unit of data into a high speed memory device as a plurality of write commands is received by a driver, said driver being transparent to said file system;
setting a flag to identify whether said unit of data has been transferred from said high speed memory device to said non-volatile media, wherein said flag remains set through any subsequent power loss event and wherein said flag remains set through any subsequent reset event, and wherein a respective flag is associated with each unit of data stored in said high speed memory device;
in response to one of a power loss event and a reset event and after restoring power, checking said flag and if said unit of data has not been transferred from said high speed memory device to said non-volatile media then transferring said unit of data from said high speed memory device to said non-volatile media using a single media access operation; and
in response to a trigger event other than a power loss event and other than a reset event, checking said flag and if said unit of data has not been transferred from said high speed memory device to said non-volatile media then transferring said unit of data from said high speed memory device to said non-volatile media using a single media access operation.

### Claim 2 (depends on 1)

The method as described in claim 1 wherein said high speed memory device is a magnetic random access memory (MRAM) device.

### Claim 3 (depends on 1)

The method as described in claim 1 wherein said non-volatile media is a hard drive device.

### Claim 4 (depends on 1)

The method as described in claim 1 wherein said non-volatile media is a flash memory device.

### Claim 5 (depends on 4)

The method as described in claim 4 wherein said flash memory device is selected from the group consisting of: NAND flash memory; and NOR flash memory.

### Claim 6 (depends on 1)

The method as described in claim 1 wherein said high speed memory device is a synchronous dynamic random access memory (SDRAM) device.

### Claim 7 (depends on 1)

The method as described in claim 1 wherein said trigger event is selected from the group consisting of:
in response to opening a door for a battery;
in response to a change in an operating system of said non-volatile media from one mode to another;
in response to a program beginning or ending execution in said non-volatile media;
in response to a buffer in said non-volatile media becoming full;
in response to a predetermined number of buffer records being written to a buffer in said non-volatile media;
in response to a peripheral device being connected to or removed from a bus of said non-volatile media;
in response to said non-volatile media being charged;
in response to when a hard drive of said non-volatile media spins up;
in advance of a synchronization process or drive mode connection;
performed periodically over a predetermined period;
in response to said non-volatile media being idle; and
in response to a low battery condition.

### Claim 8 (depends on 1)

The method as described in claim 1 further comprising:
in response to a read command of said non-volatile media, supplying data for said read command from said high speed memory device if said data is located therein; and
otherwise, supplying said data for said read command from said non-volatile media.

### Claim 9 (depends on 1)

The method as described in claim 1 wherein said non-volatile media is a data transport transmission device.

### Claim 10

A computer system having a file system, the computer system comprising:
a non-volatile memory for storing data;
a non-volatile high speed memory device coupled to said non-volatile memory; and
a processor coupled to said non-volatile memory and for issuing a plurality of write commands corresponding to a unit of data to be written to said non-volatile memory, wherein a driver, transparent to said file system, is operable for storing said unit of data into said high speed memory device as said plurality of write commands is received by said driver;
wherein a flag associated with said unit of data is set to identify whether said unit of data has been written from said high speed memory device to said non-volatile memory, wherein said flag remains set through any subsequent power loss event and wherein said flag remains set through any subsequent reset event, and wherein a respective flag is associated with each unit of data stored in said high speed memory device; wherein further, in response to one of a power loss event and a reset event and after restoring power, said flag is checked and if said unit of data has not been written from said high speed memory device to said non-volatile memory then said unit of data is written from said high speed memory device to said non-volatile memory using a single media access operation; and wherein in response to a trigger event other than a power loss event and other than a reset event, said flag is checked and if said unit of data has not been written from said high speed memory device to said non-volatile memory then said unit of data is written from said high speed memory device to said non-volatile media using a single media access operation.

### Claim 11 (depends on 10)

The computer system as described in claim 10 wherein said high speed memory device is a magnetic random access memory (MRAM) device.

### Claim 12 (depends on 10)

The computer system as described in claim 10 wherein said non-volatile memory is a hard drive device.

### Claim 13 (depends on 10)

The computer system as described in claim 10 wherein said non-volatile memory is a flash memory device.

### Claim 14 (depends on 13)

The computer system as described in claim 13 wherein said flash memory device is from the group consisting of: NAND flash memory; and NOR flash memory.

### Claim 15 (depends on 10)

The computer system as described in claim 10 wherein said high speed memory device is a synchronous dynamic random access memory (SDRAM) device.

### Claim 16 (depends on 10)

The computer system as described in claim 10 wherein said trigger event is selected from the group consisting of:
in response to opening of a door for a battery;
in response to a change in an operating system of said computer system from one mode to another;
in response to a program beginning or ending execution in said computer system;
in response to a buffer in said computer system becoming full;
in response to a predetermined number of buffer records being written to a buffer in said computer system;
in response to a peripheral device being connected to or removed from said bus of said computer system; in response to said computer system being charged;
in response to when a hard drive of said computer system spins up;
in advance of a synchronization process or drive mode connection;
performed periodically over a predetermined period;
in response to said non-volatile media being idle; and
in response to a low battery condition.

### Claim 17 (depends on 10)

The computer system as described in claim 10 wherein said driver is further operable to:
in response to a read command of said non-volatile media, supply data for said read command from said high speed memory device if said data is located therein; and
otherwise supply said data for said read command from said non-volatile memory.

### Claim 18 (depends on 10)

The computer system as described in claim 10 wherein said non-volatile memory is a data transport transmission device.

### Claim 19

A computer system comprising:
a non-volatile memory for storing data; and
a high speed non-volatile memory device; wherein a file system issues a plurality of write commands corresponding to a unit of data to be written to said non-volatile memory; and wherein a driver, transparent to said file system, stores said unit of data into said high speed non-volatile memory device as said plurality of write commands is received by said driver and, in response to a trigger event, writes said unit of data to said non-volatile memory in a single memory access operation;
wherein a flag associated specifically with said unit of data is set to identify whether said unit of data has been written from said high speed non-volatile memory device to said non-volatile memory, wherein said flag remains set through any subsequent power loss event and wherein said flag remains set through any subsequent reset event, and wherein a respective flag is associated with each unit of data stored in said high speed memory device; wherein further, in response to one of a power loss event and a reset event and after restoring power, said flag is checked and if said unit of data has not been written from said high speed memory device to said non-volatile memory then said unit of data is written from said high speed non-volatile memory device to said non-volatile memory using a single media access operation; and wherein in response to a trigger event other than a power loss event and other than a reset event, said flag is checked and if said unit of data has not been written from said high speed non-volatile memory device to said non-volatile memory then said unit of data is written from said high speed non-volatile memory device to said non-volatile media using a single media access operation.

### Claim 20 (depends on 19)

The computer system as described in claim 19 wherein said high speed non-volatile memory device is a magnetic random access memory (MRAM) device.

### Claim 21 (depends on 19)

The computer system as described in claim 19 wherein said non-volatile memory is a hard drive device.

### Claim 22 (depends on 19)

The computer system as described in claim 19 wherein said non-volatile memory is a flash memory device.

### Claim 23 (depends on 19)

The computer system as described in claim 19 wherein said trigger event is selected from the group consisting of:
in response to opening a door for a power source;
in response to a change in an operating system of said computer system from one mode to another;
in response to a program beginning or ending execution in said computer system;
in response to a buffer in said computer system becoming full;
in response to a predetermined number of buffer records being written to a buffer in said computer system;
in response to a peripheral device being connected to or removed from a bus of said computer system; in response to said computer system being charged;
in response to when a hard drive of said computer system spins up;
in advance of a synchronization process or drive mode connection;
performed periodically over a predetermined period;
in response to said non-volatile media being idle; and
in response to a low battery condition.

### Claim 24 (depends on 19)

The computer system as described in claim 19 wherein said driver is further operable to:
in response to a read command of said non-volatile media, supply data for said read command from said high speed non-volatile memory if said data is located therein; and
otherwise supply said data for said read command from said non-volatile memory.

### Claim 25 (depends on 19)

The computer system as described in claim 19 wherein said non-volatile memory is a data transport transmission device.
