This application claims priority under 35 USC §119 to Korean Patent Application No. 10-2009-0082030 filed on Sep. 1, 2009, the disclosure of which is hereby incorporated by reference in its entirety.
Embodiments of the inventive concept relate generally to memory devices, and more particularly, to resistive memory devices and related methods of operation.
Semiconductor memory devices can be roughly divided into two categories based on whether or not they retain stored data when disconnected from power. These categories include nonvolatile memory devices, which retain stored data when disconnected from power, and volatile memory devices, which lose stored data when disconnected from power. Examples of volatile memory devices include dynamic random access memory (DRAM) and static random access memory (SRAM), and examples of nonvolatile memory devices include flash memory devices and read only memory (ROM).
In recent years, increasing demand for high capacity, high performance, and low power nonvolatile data storage has led to the development of various new types of nonvolatile memory devices. For example, recent years have seen the development of phase change random access memories (PRAMs), which employ phase change materials, resistance random access memories (RRAMs), which employ materials having variable resistance such as transition-metal oxides, and magnetic random access memories (MRAMs), which employ ferromagnetic materials. Such materials have common characteristics in that resistances are varied based on the magnitude and/or direction of an applied voltage and/or current. Moreover, such resistances can be maintained even where power is cut off, so refresh operations are not required to retain stored data.
In a resistive memory, each memory cell comprises a variable resistance element, and a switching element to control a voltage or current applied to the variable resistance element. The variable resistance element is typically located between a bitline and the switching element, and the switching element is typically located between the variable resistance element and a wordline. Accordingly, a plurality of such memory cells arranged in a memory cell array can be controlled by applying voltages to a plurality of wordlines and bitlines connected to rows and columns of the array.
A PRAM comprises variable resistance elements comprising a phase change material such as Ge—Sb—Te (GST), which changes resistance in response to changes in temperature. An RRAM comprises a variable resistance element comprising an upper electrode, a lower electrode, and a complex metal oxide formed between the upper electrode and the lower electrode. An MRAM comprises a variable resistance element comprising an upper electrode of magnetic material, a lower electrode of magnetic material, and a dielectric material formed between the upper electrode and the lower electrode.
Many resistive memories, including PRAMs, experience a delay between execution of a program operation and a time when the written data can be accessed. In other words, a certain delay is required between a program operation used to store data in a resistive memory, and a read operation used to access the stored data. The delay phenomenon is referred to as resistance drift, and the delay time between the program operation and availability of the stored data is referred to as a program-to-active time (tPTA). In various conventional resistive memories, the tPTA has a value between about 1 us and about 100 us, which can significantly limit the performance of the resistive memories.
Selected embodiments of the inventive concept provide resistive memory devices and methods of processing data to account for resistance drift in the resistive memory devices.
According to one embodiment of the inventive concept, a method of processing data in a resistive memory device comprising a resistive memory is provided. The method comprises performing a write operation to store data into the resistive memory and to store program information corresponding to the data into a cache memory, performing a first read operation to read the program information from the cache memory during a program-to-active time in which the data is being stored in the resistive memory, and performing a second read operation to read the data from the resistive memory after the program-to-active time.
In certain embodiments, the cache memory is incorporated in a memory controller of the resistive memory device.
In certain embodiments, the cache memory is incorporated in a host.
In certain embodiments, the cache memory is a dynamic random access memory or a static random access memory.
In certain embodiments, the resistive memory is a phase-change random access memory.
In certain embodiments, performing the write operation comprises determining whether the cache memory is filled, upon determining that the cache memory is filled, storing the program information into a buffer, and upon determining that the cache memory is not filled, storing the program information into the cache memory.
In certain embodiments, performing the write operation comprises determining whether the cache memory is filled, upon determining that the cache memory is filled, storing the program information into a buffer, detecting expiration of an entry in the cache memory, and upon detecting the expiration of the entry, transferring the program information from the buffer to the cache memory.
In certain embodiments, the program information is transferred from the buffer to the cache memory using first-in first-out method.
In certain embodiments, the program information comprises a starting address of the resistive memory in which the data is to be stored, a number of words in the data, and the data.
In certain embodiments, performing the first read operation comprises determining whether the cache memory is filled and whether a first buffer is empty, and upon determining that the cache memory is filled and the first buffer is not empty, searching the first buffer for the program information.
In certain embodiments, performing the first read operation further comprises determining whether the program information is stored in the first buffer, and upon determining that the program information is stored in the first buffer, storing read information for the data in a second buffer.
In certain embodiments, performing the first read operation further comprises determining whether the program information is stored in the first buffer, and upon determining that the program information is not stored in the first buffer, searching the cache memory for the program information using a fully-associated method based on the starting address and the number of words.
In certain embodiments, performing the first read operation further comprises determining whether the program information is stored in the cache memory, upon determining that the program information is stored in the cache memory, reading the program information from the cache memory, and upon determining that the program information is not stored in the cache memory, reading the data from the resistive memory.
In certain embodiments, the program information comprises a starting address of the resistive memory in which the data is to be stored and a number of words in the data.
In certain embodiments, performing the first read operation comprises searching a buffer for the program information upon determining that the cache memory is filled and the buffer is not empty.
In certain embodiments, performing the first read operation further comprises storing read information of the data into the buffer to be linked with the program information upon determining that the program information is stored in the buffer.
In certain embodiments, performing the first read operation further comprises searching the cache memory using a fully-associated method based on the starting address and the number of words upon determining that the program information is not stored in the buffer.
In certain embodiments, performing the first read operation further comprises storing read information of the data to be linked with the program information into the cache memory when the program information is in the cache memory, and reading the data from the resistive memory when the program information is not in the cache memory.
According to another embodiment of the inventive concept, a resistive memory device comprises a memory controller, a resistive memory, and a cache memory. The memory controller is configured to perform a first read operation to read requested data from the cache memory during a program-to-active time during which the data is being programmed in the phase change random access memory, and further configured to perform a second read operation to read the requested data from the phase change memory after the program-to-active time.
According to still another embodiment of the inventive concept, a memory system comprise a host system comprising first and second buffers, a resistive memory device comprising a memory controller and a phase change random access memory, and a cache memory. The memory controller is configured to read data from the cache memory during a program-to-active time in which the data is being programmed in the phase change random access memory, and is further configured to read the data from the phase change random access memory after the program-to-active time, and wherein the host system is configured to determine whether the cache memory is full, and upon determining that the cache memory is full, reads program information from a first buffer and stores read information corresponding to the program information in a second buffer.
The attached drawings illustrate selected embodiments of the inventive concept. In the drawings, like reference numbers denote like features.
Embodiments of the inventive concept are described below with reference to the accompanying drawings. These embodiments are presented as teaching examples and should not be construed to limit the scope of the inventive concept.
In the description that follows, the terms first, second, third etc. may be used to describe various elements, but these elements should not be limited by these terms. Rather, these terms are used to distinguish one element from another. Thus, a first element discussed below could be termed a second element without departing from the teachings of the inventive concept. As used herein, the term “and/or” encompasses any and all combinations of one or more of the associated listed items.
Where an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, where an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between,” “adjacent” versus “directly adjacent,” etc.).
The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the inventive concept. As used herein, the singular forms “a,” “an” and “the” are intended to encompass the plural forms as well, unless the context clearly indicates otherwise. The terms “comprises,” “comprising,” “includes,” and/or “including,” where used in this specification, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Unless otherwise defined, all terms (including technical and scientific terms) used herein have the same meaning as commonly understood by one of ordinary skill in the art. It will be further understood that terms, such as those defined in commonly used dictionaries, should be interpreted as having a meaning that is consistent with their meaning in the context of the relevant art and will not be interpreted in an idealized or overly formal sense unless expressly so defined herein.
Referring to
The program-to-active time corresponds to a delay time between a program operation and an active operation, such as a read operation. For instance, the program-to-active time can represent an interval between a time when data to be stored is provided to resistive memory 150 and a time when the stored data is ready to be read from resistive memory 150 by memory controller 130.
Host 110 typically comprises a central processing unit (CPU), a driver and an operating system (OS) and provides commands, addresses, and data to be stored in resistive memory device 160.
Resistive memory device 160 performs a write operation to store the data in resistive memory 150 and to store program information of the data into cache memory 140. The program information typically comprises both the data to be stored in resistive memory 150 and other information such as an address where the data is to be stored.
During the program-to-active time of the write operation, the data provided to resistive memory 150 cannot be read out of resistive memory 150 because storage of the data is not completed until after the program-to-active time. Storage of the data in resistive memory 150 is only completed once selected resistive memory cells have undergone an appropriate phase change as described below with reference to
During the program-to-active time, however, the data provided to resistive memory 150 can be read from data cache 140. For instance, during the program-to-active time of resistive memory 150, memory controller 130 can read the data from the program information stored in cache memory 140 instead of reading the data from resistive memory 150.
In some embodiments, resistive memory device 160 performs a first read operation during the program-to-active time to read the data from cache memory 140. Where resistive memory device 160 is unable to read the data from cache memory 140 during this time, it performs a second read operation to read the data from resistive memory 150 after the program-to-active time.
Resistive memory device 160 has a write operation mode and a read operation mode for performing different operations. For instance, the above-described write operation is performed during the write operation mode to store data and program information in resistive memory 150. In addition, the first read operation is performed during the write operation mode to read the data from cache memory 140. The second read operation is performed during the read operation mode to read the data from resistive memory 150.
Resistive memory 150 stores the data during the write operation mode and outputs the data during the read operation mode. Memory controller 130 provides host 110 with the data read from resistive memory 150.
In the write operation mode, host 110 provides a program signal, such as a write command, to memory controller 130 to store the data in resistive memory 150. Memory controller 130 performs the write operation in response to the write command and stores program information for the data in cache memory 140. In the read operation mode, host 110 accesses the program information in cache memory 140 to read the data during the program-to-active time. Cache memory 140 can comprise, for instance, an SRAM or a DRAM.
Referring to
Referring to
Phase change material GST is placed in the amorphous state by heating it above a melting temperature TM and then rapidly cooling it during an interval T0-T1. Phase change material GST is placed in the crystalline state by heating it above a crystallization temperature Tx during an interval T0-T2 and then cooling it thereafter. For example, the write operation mode may comprise a set operation mode and a reset operation mode.
An operating mode of a resistance memory device for changing the variable resistance element from the amorphous state to the crystalline state can be referred to as a “set mode”, and an operating mode for changing the variable resistance element from the crystalline state to the reset state can be referred to as a “reset mode”.
Referring to
The time required to change the states of the variable resistance elements leads to resistance drift. However, in certain embodiments of the inventive concept, a cache memory is used to compensate for the resistance drift. For instance, in the embodiment of
In the embodiment of
Where cache memory 140 is filled or has substantially no storage space to store the program information, host 110 stores the program information in a buffer of host 110. Otherwise, where cache memory 140 is not filled, host 110 or memory controller 130 stores the program information in cache memory 140.
Referring to
A data caching operation of memory system 100 can be performed using the information structure of
Referring to
Where cache memory 140 is filled, the program information is not stored therein, and a cache full signal is transmitted to host 110. Upon receiving the cache full signal, host 110 stores the program information in a first buffer. Upon expiration of a time stamp of an existing entry of cache memory 140, host 110 transfers an oldest entry of program information stored in the first buffer to cache memory 140 to replace the expired cache entry. In other words, whenever cache memory 140 has an empty slot (e.g., due to expiration of an existing cache entry), host 110 provides an entry of program information stored in the first buffer, using a first-in first-out (FIFO) method.
In some embodiments, data is not programmed in resistive memory 150 until corresponding program information is stored in cache memory 140. For instance, memory system 100 may wait until the program information is transferred from the first buffer to cache memory 140 before storing the data in resistive memory 150. In other embodiments, the data can be programmed in resistive memory 150 even if the program information is not stored in cache memory 140.
In the read operation mode of memory system 100, host 110 first determines whether cache memory 140 is filled and whether the first buffer is non-empty. Upon determining that cache memory 140 is filled and the first buffer is non-empty, host 110 searches the first buffer to identify program information corresponding to data to be read in the read operation mode. Where the program information is identified in the first buffer, host 110 stores read information for the read operation in a second buffer. The read information can be used in subsequent operations, for instance, to indicate to cache memory 140 that the data corresponding to the program information has been the target of a read operation. Accordingly, the read information can be used to inform future caching decisions and other operations.
Where the program information is not identified in the first buffer, host 110 or resistive memory device 160 searches for the program information in cache memory 140 using a fully-associative method (i.e., a method that assumes a fully associative cache) based on a starting address STARTING ADDR and a number of words included in the read information. If the search identifies the program information in cache memory 140, memory controller 130 reads the data from among the program information. On the other hand, memory controller 130 can read the data from resistive memory 150 upon determining that the program information is not stored in cache memory 140.
Referring to
In the write operation mode of memory system 100, where cache memory 140 is filled or has substantially no storage space to store program and read information, program information is stored in first buffer 141 as sustained program information. Upon expiration of a program information entry in cache memory 140, an oldest entry of sustained program information Sus.PGM1 through Sus.PGMN stored in the first buffer is transferred to cache memory 140. In other words, whenever cache memory 140 is not filled, host 110 transfers an entry of sustained program information Sus.PGM1 through Sus.PGMN from first buffer 141 to cache memory 140 using a FIFO method.
In some embodiments, data is not programmed in resistive memory 150 until corresponding sustained program information is stored in cache memory 140. In other embodiments, the data can be programmed in resistive memory 150 even if the sustained program information is not stored in cache memory 140.
Sustained read information Sus.RD1 through Sus.RDN is linked with the sustained program information Sus.PGM1 through Sus.PGMN as indicated by arrows in the example of
Where sustained program information Sus.PGM1 through Sus.PGMN in first buffer 141 is provided to cache memory 140, corresponding sustained read information that remains in the first buffer can be output in order and then removed from second buffer 143. For example, where sustained program information Sus.PGM1 is provided to cache memory 140, sustained read information Sus.RD1 and Sus.RD3 can be output in order and then removed from second buffer 143 while the other sustained read information Sus.RD2 and Sus.RD4 through Sus.RDN is rearranged based on the removal of read information Sus.RD1 and Sus.RD3.
Referring to
Referring to
Referring to
As will be described with reference to
Referring to
Upon completing step S430A, the method determines whether the program information is stored in the first buffer (S440). Upon identifying the program information in the first buffer (S440=YES), the method stores read information related to the program in a second buffer of host 110 (S450A). The read information is subsequently transferred to cache memory 140 to indicate that the program data has been read in a read operation. Accordingly, the read information can be used, for instance, to inform a caching algorithm that may be performed by cache memory 140. The read information is typically transferred from the second buffer to cache memory 140 when the program information is provided to cache memory 140 (S490A). Where the program information is identified in the first buffer (S440=YES), the corresponding data is not stored in resistive memory 150 until the program information is transferred to cache memory 140.
Upon determining that the program information is not stored in the first buffer (S440=NO), cache memory 140 is searched for the program information using a fully-associated method (S460A). Where the program information is identified in cache memory 140 (S470=YES), the program information is read from cache memory 140 (S480A). On the other hand, where the program information is not identified in cache memory 140 (S470=NO), the data may be read from the resistive memory after the program-to-active time (S600).
Cache memory 140 may be searched using a fully-associated method based on the starting address and the number of words (S460A) when the program information is not sustained in the first buffer (S410=NO, S420=NO or S440=NO). The program information may comprise the starting address, the number of words and the data.
Referring to
Referring to
Compared with the information structure for data caching illustrated in
Referring to
Address caching of memory system 100 of
Host 110 or resistive memory device 160 can store a new entry of program information at an empty row in where VALID field is “0” and perform a program operation for storing data of the new entry into resistive memory 150.
Where cache memory 140 is filled, a program operation is not performed and a cache full signal is transmitted to host 110 or memory controller 130. Host 110 typically has a buffer for storing or queuing sustained program information. At least one entry of the sustained program information stored in the buffer can be provided to cache memory 140 when the time stamp of the entry of program information is expired in cache memory 140. In other words, where cache memory 140 is not filled, host 110 can provide entries of the program information sustained in the buffer using a FIFO method to store the program information into cache memory 140. After the time stamp of an entry of program information expires, the entry is removed from cache memory 140. In other example embodiments, the program operation for resistive memory 150 may be performed even though cache memory 140 is filled.
During the first read operation, an operation of address caching of memory system 100 of
Where cache memory 140 is filled and the buffer of host 110 is non-empty, host 110 searches the first buffer. Where the program information of the data to be read is in the first buffer, host 110 stores or buffers corresponding read information of the data into the second buffer. On the other hand, where the program information of the data to be read is not in the first buffer, host 110 or memory controller 130 searches cache memory 140 using a fully-associative method based on a starting address and number of words of the data. Once cache memory 140 stores the program information of the data to be read, host 110 or resistive memory device 150 stores the corresponding read information in cache memory 140. Memory controller 130 can read the data from resistive memory 150 where cache memory 140 does not comprise the program information of the data to be read, i.e., after the program-to-active time.
Where the time stamp of
In the example of
Where cache memory 140 is filled, program information of the data to be programmed is stored in the buffer. Otherwise, where cache memory 140 is not filled, host 110 provides an uppermost entry of sustained program information to cache memory 140. Then, the sustained read information Sus.RD1 to Sus.RDN are associated with the program information is stored to cache memory 140 in order.
Resistance drifted (R-drifted) program information can be incorporated in the buffer for storing additional read information of the cached data in cache memory 140. After the time stamp is expired, host 110 can search the R-drifted program information R-drifted PGM2, R-drifted PGM3, and R-drifted PGM4 in the buffer for the expired program information. Where the R-drifted program information that corresponds to the expired program information is in the buffer, host 110 can provide resistive memory 150 with the sustained read information Sus.RD1 through Sus.RDN that is associated with the R-drifted program information of the buffer after providing resistive memory 150 with associated read information stored in cache memory 140.
Referring to
The read information of the data is stored in the buffer to be linked with the program information (S450B) where the program information is sustained in the buffer (S440=YES).
Cache memory 140 is searched using a fully-associated method based on the starting address and the number of words (S460B) where the program information is not sustained in the buffer (S440=NO or S410=NO). The program information typically comprises a starting address and number of words of the data.
The read information of the data is stored to link with the program information in cache memory 140 (S480B) when the program information is in cache memory 140 (S470=YES). The read information of the data is provided to resistive memory 150 for reading the data when the program information is provided to resistive memory 150 (490B). The data can be read from resistive memory 150 after the program-to-active time (S600) when the program information is not in the cache memory 150 (S470=NO).
Where the cache memory is filled (S410=YES) and the buffer is empty (S420=NO), no more read information associated with the program information can be stored in cache memory 140. Thus, R-drifted program information of the data is stored into the buffer (S421) and read information of the data is stored in the buffer to be linked with the R-drifted program information (S423).
Referring to
Referring to
In a conventional resistive memory device, such as a PRAM, an active operation such as a read operation cannot be performed until after a program operation because of resistance drift. Thus, the conventional memory system employing the resistive memory cannot be read data during a program-to-active time.
To compensate for the degradation of operation speed caused by resistance drift, resistive memory 150 according to certain embodiments can, during the program-to-active time, read program information of data from cache memory 140 that is located outside resistive memory 150, instead of reading the data from resistive memory 150. Referring to
Referring
Host 210 comprises a CPU, the driver, and the OS and provides commands, addresses and data. Memory controller 230 provides the commands, the addresses, and the data to resistive memory 150. Resistive memory device 260 stores the data in resistive memory 150 or provides the data read from resistive memory 150. Memory controller 230 provides host 210 with the data provided from resistive memory 150.
Host 210 performs a write operation to store the data into resistive memory 150 and to store program information of the data into cache memory 220. Host 210 performs a first read operation to read the program information of the data from cache memory 220 of host 210 during a program-to-active time without waiting until the data is stored completely into resistive memory 150. Host 210 performs a second read operation to read the data from resistive memory 150 after the program-to-active time. Cache memory 220 can comprise, for instance, an SRAM or a DRAM.
Cache memory 220 stores the driver or the OS of memory system 200. Thus, the effect of resistance drift can be reduced and the operation speed of the memory device can be increased by using cache memory 220 for reading data during a program-to-active time.
Referring to
Where cache memory 220 is filled, host 210 stores the program information of the data into a buffer of host 210. Otherwise, where cache memory 220 is not filled, host 210 stores the program information of the data into cache memory 220.
The operation of memory system 200 is similar to operation of memory system 100 of
The write operation, the first or second read operation described with reference to
As indicated by the foregoing, methods of data processing according to example embodiments may be employed by various memory systems such as memory systems of
Although a memory system for storing and reading data in and from a resistive memory has been mainly described above, example embodiments can be adapted for various memory systems comprising a resistive memory such as PRAM.
The foregoing is illustrative of embodiments and is not to be construed as limiting thereof. Although a few embodiments have been described, those skilled in the art will readily appreciate that many modifications are possible in the embodiments without materially departing from the novel teachings and advantages of the inventive concept. Accordingly, all such modifications are intended to be included within the scope of the inventive concept as defined in the claims.
Number | Date | Country | Kind |
---|---|---|---|
10-2009-0082030 | Sep 2009 | KR | national |