The present disclosure relates generally to memory devices, and more particularly, to methods and apparatus for tracking the status of data or code written to non-volatile bit alterable memory.
The present disclosure relates to non-volatile semiconductor memories and particularly to bit-alterable memories. Non-volatile memory refers to a type of solid state memory that retains stored information without the need for a constant power source. Non-volatile bit alterable memory is a non-volatile memory that can be programmed and erased on a bit level. This means that each individual memory cell carrying distinct pieces of data or charge can be changed independently of other pieces of data.
Non-volatile memory that is erased and programmed using an electrical field or charge is known as Electronically Erasable Programmable Read Only Memory (EEPROM). Standard EEPROM is erased by changing one byte, or string of bits, of memory at a time. A commonly used version of EEPROM, known as flash memory, is erased and sometimes programmed by changing a whole block of bytes at one time, typically on the order of 64,000 bytes. Flash memory is operationally efficient because the erase process occurs on a block level instead of a bit or byte level. One drawback is that if only a very small amount of memory needs to be updated, it is also necessary to erase a whole block of memory to accommodate the change.
Though non-volatile memory are designed to retain data without the need for a continuous power source, the program and erase operations does require a continuous power source. An unexpected loss of power during the writing or erasing cycle of the flash device may lead to corrupt or invalid data in the memory, resulting in undesirable consequences for the end user. Methods have been applied to detect instances of power loss during the writing or erasing of non-volatile memory. Such methods have included the use of status bits to track the status of the write or erase process and the resulting state of the memory. As an example, an erased block could begin with no status bits written, indicating that the block has been successfully erased. Similarly, one status bit could be written to indicate that a write process has commenced. A second status bit could be written to indicate that a write process has completed, signaling a valid write operation.
Using two status bits per block to track the state of a collection of flash memory blocks can become burdensome when the amount of data tracked per block decreases, due to the corresponding increase in status bits. Thus, there is a need to reduce the number of status bits required to track programming states as the size of the flash memory blocks decrease.
The subject matter regarded as the invention is particularly pointed out and distinctly claimed in the concluding portion of the specification. The invention, however, both as to organization and method of operation, together with objects, features, and advantages thereof, may best be understood by reference to the following detailed description when read with the accompanying drawings in which:
It will be appreciated that for simplicity and clarity of illustration, elements illustrated in the figures have not necessarily been drawn to scale. For example, the dimensions of some of the elements may be exaggerated relative to other elements for clarity. Further, where considered appropriate, reference numerals have been repeated among the figures to indicate corresponding or analogous elements.
the following detailed description, numerous specific details are set forth in order to provide a thorough understanding of the invention. However, it will be understood by those skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components and circuits have not been described in detail so as not to obscure the description.
In the following description and claims, the terms “coupled” and “connected,” along with their derivatives, may be used. It should be understood that these terms are not intended as synonyms for each other. Rather, in particular embodiments, “connected” may be used to indicate that two or more elements are in direct physical or electrical contact with each other while “coupled” may further mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
In this embodiment, two memory colonies may be used interchangeably to store valid data. A memory colony is a collection of one or more memory cells, wherein each memory cell contains one or more bits of data. The two memory colonies are redundant memory locations, allowing one memory location to store existing data or code while the second memory location is updated with new information. In this embodiment, two memory colonies A and B are tracked so their programming status can be determined using a power loss recovery mechanism. An interface may comprise a write state machine to determine the status of a programming process. A write state machine applies power loss recovery code to read a direction bit for two memory colonies 300 to determine which memory colony contains valid data. The direction bit may be located in a neighboring memory cell and may be used to indicate whether the information in a first memory colony or a second memory colony is valid. In one embodiment, if the direction bit is equal to one at block 320, also referred to as a first state, then the memory colony A is determined valid 302. The value of the direction bit may be inverted to a zero or used differently in alternative embodiments. The valid data from the memory colony A can then be read 304 and later transferred or copied from the memory colony A to a different location 306 either inside the non-volatile bit alterable memory or outside the non-volatile bit alterable memory.
Referring back to block 320, if the direction bit is not equal to one (e.g., the direction bit is zero), then the direction bit is at a second state and the memory colony B is determined valid 308. The valid data from the memory colony B is then read 310 and later transferred or copied from the memory colony B to another location 312 using a memory file management system.
Upon programming the memory colony B, the direction bit and a first register grey code bit remain at a first state “1” and a second register grey code bit is changed to a second state “0”. This indicates that the memory colony A is valid and the memory colony B is being updated 402. When the write process to the memory colony B is complete, the first register bit is changed to a second state “0” and the two remaining status bits remain unchanged. This indicates that the memory colony A is valid and the memory colony B is updated 404.
To make the updated data available for use, the memory colony B is marked as valid and the memory colony A is marked invalid, thereby making the memory colony A available for an update. This condition is set by leaving the grey code status bits in a second state “0” and changing the direction bit to a second state “0” 406. The memory colony A is updated similarly to the memory colony B by first changing the second register status bit from a second state “0” to a first state “1” and leaving the remaining status bits unchanged. This indicates that the memory colony B is valid and the memory colony A is being updated 408. When the data has been completely written to the memory colony A, the first register bit is changed from a second state “0” to a first state “1.” This indicates that the memory colony A is updated and that the memory colony B is valid 410. This method allows two separate memory colonies to share three status bits to indicate the memory state of each memory colony.
In another example at time t1530, the memory colony B 501 may be in the process of being updated. In particular, the second register bit 506 is changed from a first state “1” to a second state “0”. Thus at time t1, the corresponding bit field 508 may be “110”.
In a later example at time t2540, the memory colony B 501 may be updated. In particular, the first register bit 504 is changed from a first state “1” to a second state “0”. Thus at time t2, the corresponding bit field 508 may be “100”.
In a further example at time t3545, the memory colony B 501 may be determined valid. In particular, the direction bit 502 is changed from a first state “1” to a second state “0”. Thus at time t3, the corresponding bit field 508 may be “000”. The power loss recovery mechanism determines the state of two memory colonies by reading the bit field and can therefore assist the memory device in avoiding the use of corrupt or partially written data.
The electronic system 600 includes a bus 605 or other communication device to communicate information, and a processor 610 coupled to the bus 605 that may process information. While the electronic system 600 is illustrated with a single processor, the electronic system 600 may include multiple processors and/or co-processors. The electronic system 600 further may include random access memory (RAM) or a dynamic storage device 620 (referred to as main memory), coupled to the bus 605 and may store information and instructions that may be executed by the processor 610. The main memory 620 may also be used to store temporary variables or other intermediate information during execution of instructions by the processor 610.
The electronic system 600 may also include a non-volatile bit alterable non-volatile memory (NV BAM) storage device 630 coupled to bus 605 that may store code or data for the processor 610. A data storage device 640 may be coupled to the bus 605 to store information and instructions. The data storage device 640 such as a magnetic disk or optical disc and corresponding drive may be coupled to the electronic system 600.
The electronic system 600 may also be coupled via the bus 605 to a display device 650, such as a cathode ray tube (CRT) or liquid crystal display (LCD), to display information to a user. An alphanumeric input device 660, including alphanumeric and other keys, may be coupled to the bus 605 to communicate information and command selections to the processor 610. Another type of user input device is a cursor control 670, such as a mouse, a trackball, or cursor direction keys to communicate direction information and command selections to the processor 610 and to control cursor movement on the display 650.
The electronic system 600 further may include a network interface(s) 680 to provide access to a network, such as a local area network. The network interface(s) 680 may include, for example, a wireless network interface having an antenna 685, which may represent one or more antenna(e). The network interface(s) 680 may also include, for example, a wired network interface to communicate with remote devices via a network cable 687, which may be, for example, an Ethernet cable, a coaxial cable, a fiber optic cable, a serial cable, or a parallel cable.
In one embodiment, the network interface(s) 680 may provide access to a local area network, for example, by conforming to Electrical Institute of Electrical and Electronic Engineers (IEEE) 802.11b and/or IEEE 802.11g standards, and/or the wireless network interface may provide access to a short-range personal area network, for example, by conforming to Bluetooth standards. Other wireless network interfaces and/or protocols can also be supported.
IEEE 802.11b corresponds to IEEE Standard 802.11b-1999 entitled “Local and Metropolitan Area Networks, Part 11: Wireless Local Area Network (LAN) Medium Access Control (MAC) and Physical Layer (PHY) Specifications: Higher-Speed Physical Layer Extension in the 2.4 GHz Band,” approved Sep. 16, 1999 as well as related documents. IEEE 802.11g corresponds to IEEE Standard 802.11g-2003 entitled “Local and Metropolitan Area Networks, Part 11: Wireless LAN Medium Access Control (MAC) and Physical Layer (PHY) Specifications, Amendment 4: Further Higher Rate Extension in the 2.4 GHz Band,” approved Jun. 27, 2003 as well as related documents. Bluetooth protocols are described in “Specification of the Bluetooth System: Core, Version 1.1,” published Feb. 22, 2001 by the Bluetooth Special Interest Group, Inc. Associated as well as previous or subsequent versions of the Bluetooth standard may also be supported.
In addition to, or instead of, communication via wireless LAN standards, the network interface(s) 680 may provide wireless communications using, for example, Time Division, Multiple Access (TDMA) protocols, Global System for Mobile Communications (GSM) protocols, Code Division, Multiple Access (CDMA) protocols, and/or any other type of wireless communications protocol.
While certain features of the invention have been illustrated and described herein, many modifications, substitutions, changes, and equivalents will now occur to those skilled in the art. It is, therefore, to be understood that the appended claims are intended to cover all such modifications and changes as fall within the true spirit of the invention.