The present invention relates generally to semiconductors and memory technology. More specifically, the present invention relates to data retention in non-volatile memory.
A semiconductor memory is generally considered to be one of two types of memory—volatile memory or nonvolatile memory. Each of these types of memory has its limitations. For example, volatile memory technologies generally have relatively lower storage densities and faster access times, as compared to nonvolatile memory technologies. However, volatile memory technologies typically require a constant power source to retain the memory contents, unlike nonvolatile memory technologies, which do not generally require a constant power source.
Two conventional types of volatile memory are dynamic random access memory (“DRAM”) and static random access memory (“SRAM”). The relatively simple memory cell structures of DRAM allow for higher performances and higher storage densities. A memory cell in a DRAM cell usually consists of a transistor and a capacitor to store a bit of data. Since capacitors typically leak electrical charge, a DRAM needs to be constantly refreshed to retain the memory contents. Electrical power is typically consumed to refresh a number of memory cells (e.g., every memory cell) in a DRAM, even if the memory or part of the memory is not being used. By contrast, an SRAM cell usually includes several transistors implemented as a flip-flop to store each bit of memory. An SRAM cell is typically sensitive to power glitches, during which some or all of the memory contents are lost. Although an SRAM cell does not require refreshing, it commonly requires constant power to maintain its memory contents, even if the memory or part of the memory is not in use.
Conventional nonvolatile memory, such as Flash memory technology, typically uses complex logic, including state machines and other logic devices, to read and program a memory. Flash memory usually is slower than SRAM or DRAM since Flash memory includes a complex interface and requires erasing and/or programming in blocks of bits. However, Flash memory retains its contents when power is removed from (i.e., is not applied to) the memory.
Flash memory may be implemented as NOR and NAND Flash types. NOR Flash allows dynamic memory access (“DMA”) and, thus, is relatively faster than NAND Flash in accessing small amount of data. However, NOR Flash is slower than volatile memory, such as SRAM or DRAM. NAND Flash offers higher densities on a given die size compared with NOR Flash.
There are continuing efforts to improve non-volatile memory technology.
Various examples are disclosed in the following detailed description and the accompanying drawings.
Although the previous Drawings depict various examples of the invention, the invention is not limited to those specific examples. Furthermore, the depictions are not necessarily to scale.
Various embodiments or examples may be implemented in numerous ways, including as a system, a process, an apparatus, or a series of program instructions on a computer readable medium such as a computer readable storage medium or a computer network where the program instructions are sent over optical, metal, electronic, or wireless communication links. In general, operations of disclosed processes may be performed in an arbitrary order, unless otherwise provided in the claims.
A detailed description of one or more examples is provided below along with accompanying figures. The detailed description is provided in connection with such examples, but is not limited to any particular example. The scope is limited only by the claims. Numerous alternatives, modifications, and equivalents are encompassed. Numerous specific details are set forth in the following description in order to provide a thorough understanding. These details are provided as examples and the described techniques may be practiced according to the claims without some or all of the accompanying details. For clarity, technical material that is known in the technical fields related to the examples has not been described in detail to avoid unnecessarily obscuring the description.
In accordance with various embodiments of the invention, a preservation circuit may be configured to preserve values, such as parametric values, that represent the logic states for data (or a datum) stored in a memory that is composed of at least one layer of memory elements. Examples of parametric values include values that represent storage-related parameters of a memory element or cell, including, but not limited to voltages, currents, resistances, amounts of electrical charge (e.g., stored in association with a ferroelectric layer), magnetic fields (e.g., intensities or polarities thereof, such as in association with a Magnetoresistive Random Access Memory, or MRAM) or any other mechanism by which to write and/or read data (or a datum). Thus, a preservation circuit may be used to ensure that a memory retains its data over a variety of conditions, including over time and over a reduction of power (e.g., during brown-out conditions, and/or absence of power). To illustrate the use of a preservation circuit, consider that a memory is fabricated with, for example, deviations in manufacturing parameters (e.g., deviations in process). One type of manufacturing defect may cause degradation (e.g., leakage or drift) of a parametric value, such as a resistive value, which may corrupt the contents of a memory. A preservation circuit may thereby enhance the data retention capabilities of a memory by preserving values that represent certain states of data, according to at least one embodiment.
In one embodiment, the memory may include one or more layers of non-volatile memory elements. In at least one embodiment, the memory may be composed of memory elements having non-volatility characteristics for extended periods of time during which power is not applied to the memory elements storing the data. As used herein, the term “power absence period” may refer, at least in one embodiment, to an amount of time over which a memory element or cell (or a collection thereof) exhibits non-volatility characteristics by maintaining its contents during the absence of power. A power absence period may be expressed in durations of, for example, milliseconds (e.g., 100 milliseconds or more, such as more than 500 milliseconds), seconds, minutes, hours, days, months, etc., as well as a number of access operations (e.g., number of write operations, or read operations). Thus, a non-volatile memory may be characterized as having a power absence period over which it possesses non-volatile capabilities. For example, one type of memory may possess non-volatile capabilities for 90 days (e.g., at standard temperature, pressure, etc.), after which the probability increases that at least one memory cell in the memory might behave as a volatile memory cell. As used herein, the term “non-volatile,” in terms of memory, may refer, at least in one embodiment, to the ability of memory to retain data stored therein during a reduction in or an absence of power, regardless of the power absence period associated with the memory.
Memory elements may be two dimensional or three dimensional and may be arranged in a two-terminal or three-terminal memory array, in accordance with various embodiments of the invention. In some examples, techniques such as those described herein enable emulation of multiple memory types for implementation on a single component such as a wafer, substrate, or die. U.S. patent application Ser. No. 11/095,026, filed Mar. 30, 2005, now U.S. Publication No. 2006/0171200, and entitled “Memory Using Mixed Valence Conductive Oxides,” is hereby incorporated by reference in its entirety for all purposes and describes non-volatile third dimensional memory elements that may be arranged in a two-terminal, cross-point memory array. Various memory structures are possible with the implementation of the third dimensional memory array. In addition, the non-volatile third dimensional memory elements facilitate the emulation of other memory technologies, with the duplication (i.e., simulation) of interface signals and protocols. For example, the third dimensional memory array may emulate other types of memory, including SRAM, DRAM, and Flash memory, while providing memory combinations within a single component, such as a single integrated circuit.
Accordingly, preservation circuit 140—in whole or in part—may ensure data retention for memory 160. As such, a memory device 100 that uses preservation circuit 140 may enhance the non-volatile nature of memory 160 to extend its data retention to at least that of known non-volatile memory technologies, such as Flash memory, or longer. In one embodiment, trigger circuit 120 may be configured to initiate a preservation operation on any number of memory locations, and, thus, on any number of memory elements for the memory locations. When a preservation operation is performed on each memory location in memory 160 during a power absence period, then the integrity of the data stored therein is ensured, at least until the end of the power absence period. Consequently, when memory device 100 uses preservation circuit 140 and trigger circuit 120, then data may be retained in memory 160 over multiple power absence periods. In one embodiment, preservation circuit 140 and trigger circuit 120, or the equivalent thereof, may operate to retain data in memory 160 for ten (10) years or longer, with other influencing factors remaining unchanged. In at least one embodiment, trigger circuit 120 may be configured to generate a trigger signal in response to a triggering event. In one example, the triggering event may represent a change (or a sufficient change) in power applied to memory device 100 or any of its constituent elements, such as memory 160. As such, the trigger signal may be a power-up signal that indicates power has been applied to memory device 100 (or any of its constituent elements), according to one embodiment. In this case, the triggering event is a power-up event. In another embodiment, the trigger signal may be a power-down signal that indicates the application of power to memory device 100 has ceased. As such, trigger circuit 120 may be configured to apply a power-down signal to preservation circuit, which, in turn, may perform a preservation operation before power to memory device 100 is sufficiently depleted (e.g., from a battery, capacitor, or other power types of power sources). In this case, the triggering event is a power-down event. Note that the triggering event is not limited to representing changes in power and may represent any other type of event affecting the operation of memory device 100.
Memory device 100 of
In various embodiments, trigger circuit 120 is opportunistic. That is, when external power is applied to trigger circuit 120 may perform preservation operations in an expeditious manner so as to restore values (e.g., resistive values) for as many memory elements as possible while external power is available. Also, trigger circuit 120 may opportunistically use memory bus interface 142 to perform preservation operations during periods of low bus usage by a host, so as not to interfere (or to negligibly affect) read and write operations invoked by the host. Low bus usage may relate to low usage of memory bus interface 142 during low rates of data access between the host and memory 160. In instances where memory device 100 includes or has access to a power source, trigger circuit 120 may recalibrate the rate at which it initiates preservation operations so as to meter the rate at which the power source, such as a battery, expends power. In view of the foregoing, trigger circuit 120 may periodically (or aperiodically) send signals (“trigger signals”) via connection 122 to initiate, for example, a rewrite operation on memory 160 as a preservation operation. In some embodiments, a rewrite operation includes reading contents of memory 160 and rewriting the contents back to memory 160, for example, via connection 162. As such, memory device 100 may be configured to rewrite its contents at least once before the expiration of each power-absence period, thereby maintaining the contents until the next power-absence period.
In some instances, the power-absence period may dictate the minimum rate at which to preserve memory contents. In particular, the longer the power-absence period, the slower the preservation rate, which, in turn, may reduce the power consumed to perform preservation operations. For instance, if a memory is able to maintain its contents without power for a period of, for example, thirty (30) days, power that otherwise might be used to power memory 160 may be shut off for up to a period of thirty days of inactivity. Power may be selectively turned on when the memory is accessed (e.g., by a host) or when memory contents need to refresh to maintain through the next period of 30 days.
Note that while
Logic layer 130 may be electrically coupled with the multiple memory layers 160a by way of a plurality of vias or ports (not shown) to communicate control signals and data signals. In a specific embodiment, a subset of these ports may form one or more connections to preservation circuit 140 (e.g., of
Each layer of memory (e.g., layers 161a, 161b, 161c, and 161d) or the single layer of memory 160 (
In a specific embodiment, memory controller 180 may perform memory control functions similarly performed by known memory devices, such as a USB memory storage device, a Flash memory card, a DRAM memory device, a SRAM memory device, or the like. For example, when host device 190 (discussed below) transmits write data to memory device 100a, memory controller 180 may apply the appropriate control signals and data to memory 160a to select one or more memory cells for storage. Similarly, in serving a read request by host device 190, memory controller 180 may be configured to locate the address or addresses for the memory cells that hold the requested data, and may retrieve the stored data to host device 190. Memory controller 180 may control access to multiple memory layers 160a via, for example, memory bus 170 of
In some embodiments, there may be two or more connections 162a to 162d from memory 160. In some cases, one or more connections 162a to 162d may be configured to connect to one or more preservation circuits (“PC”) 140, 140a, 140b, and 140c. In other cases, one or more connections 162a to 162d may interface with memory bus 170. In some embodiments, at least one of connections 162a to 162d interfaces with preservation circuit 140, and at least one other of connections 162a to 162d interfaces with memory bus 170. In some embodiments, memory 160 may be configured to communicate with memory bus 170 directly.
In at least one embodiment, memory device 100b may include more than one trigger circuit 120 that may communicate with one or more preservation circuit (“PC”) 140, 140a, 140b, and 140c. As shown, memory device 100b may be coupled with host device 190. Memory device 100b may be coupled with, attached to, connected to, or embedded in host device 190 in various ways. For example, memory device 100b may be plugged into a memory slot or port of host device 190 or irremovably fixed to host device 190. The memory slot or port may be adapted to communicate using any protocol, for example, a protocol used in known ports or slots, such as USB, PCMCIA, CompactFlash®, Secure Digital (SD™), Micro SD™, SD High Capacity (SDHC™), Memory Stick™, and xD-Picture™.
Host device 190 may be any device that is capable of using a memory device, such as any host described herein. For example, a host may be a computing device, such as a hand-held computer, laptop, desktop, or mainframe system; an electronic device, such as a disk drive, network access storage, network or wireless access point, network router, or network gateway; a consumer electronic device, such as a personal digital assistant (PDA), smart phone, cellular phone, general purpose phone, camera, video recording device, television, radio, audio system, MP3 player, or game console. In some cases, host device 190 may be adapted for use in a vehicle, such as an automobile, boat, ship, airplane, train, and the like. Host device 190 may include at least a processor and at least one input/output (I/O) sub-device, such as an input key, switch, mouse, touch screen, infrared transceiver, wireless interface (e.g., RF), or communication bus. Host device 190 may include a display, screen, or printing sub-device, as well as data storage, such as SRAM, DRAM, or another memory devices. In some embodiments the data storage of host device 190 may be used to temporarily store data that is rewritten back into memory 160 for preservation purposes.
A memory chip in memory device 100b may be formed so as to include a preservation circuit. For example, chips 160b, 160c, and 160d are each shown to contain a preservation circuits (“PC”), 140a, 140b, and 140c, respectively. The preservation circuits may be positioned in the logic layers 130 of their respective memory chip. A preservation circuit inside a chip may perform preservation operations, such as rewrite operations, by sending rewrite instructions to the memory in the corresponding chip. In some embodiments, a preservation circuit inside a chip, such as PC 140c, may be configured to send rewrite instructions to other part of memory 160, for example, to another chip, such as chip 160a. Similarly, a memory chip in memory device 100b may be formed so as to include a trigger circuit. For example, chip 160d may be formed to include a trigger circuit (“TC”) 120a. A trigger circuit inside a chip may provide trigger signals to a corresponding preservation circuit inside that chip. The trigger circuit 120 may be positioned in the logic layers 130 of their respective memory chips. In some embodiments, a trigger circuit inside a chip, such as trigger circuit 120a, may be configured to provide trigger signals to one or more preservation circuits outside that chip, such as any of preservation circuits 140, 140a, and 140b. In some embodiments, memory device 100b does not include trigger circuit 120 or preservation circuit 140, or both. In such embodiments, the functionalities of trigger circuit 120 and preservation circuit 140 may be provided by one or more entities (not shown), such as host device 190, which may be external to memory device 100b. The external entity may use hardware, software, or both to implement an equivalent functionality of the trigger and preservation circuits.
In some implementations, trigger circuit 120 of
In at least one embodiment, timer 240 may be connected with a real-time clock, and may configured to generate a trigger signal at least once per “wake-up” period, which may be in any unit of time, such as milliseconds. Timer 240 may operate by counting to (i.e., reaching) a wake-up time, which triggers or causes timer 240 to send a trigger signal. The wake-up time may be referred to as a triggering event, according to one embodiment. A wake-up time may be set at manufacturing, by programming, by software, or by a switch (not shown). A switch may be a mechanical switch, such as a jumper port, toggle button, or pin-size contact button, or other mechanical selection devices. A switch may also be an electronic switch, such as a transistor, a relay, a pass gate, a register storing one or more data bits, or the like. A switch may have one or more positions, each representing a different wake-up time setting. Wake-up time settings for one or more switch positions may be modified by programming, by software, or by other manipulations. A switch may have one or more positions that are shared with, or used by other, components or circuits, such as preservation circuit 140, of a memory device. In one embodiment, timer 240 may be configured to receive the wake-up time from a host device (not shown) so as to be able to modify the rate of rewriting the memory, based on the host device application, the length of time that external power is available, and the like.
In at least one embodiment, timer 240 may be coupled 251 with clock 230 and be driven by clock pulses generated by the clock 230. To illustrate, consider that timer 240 may be set to generate a trigger at a specific wake-up time of, for example, 500 milliseconds (ms). So, for each clock pulse, clock 230 may cause the timer 240 to advance by one count. In some embodiments, clock 230 may cause the timer 240 to advance by one count for each N number of clock pulses, where N>1. When timer 240 counts to the set wake-up time, which may be a triggering event, timer 240 sends a trigger signal through one or both preservation circuit interface 122 and memory bus interface 242 (e.g., via 253 and/or 255), depending on, for example, the source of power with which to perform preservation operations. Timer 240 then may reset itself, and start counting from zero time. For example, in at least one embodiment, clock 230 may be configured with a RC circuit (“RC clock”) that generates a clock pulse every 100 ms. From zero time, or reset, with N set to 1, then timer 240 may be configured to count up to 500 ms after 5 clock pulses (100 ms×5=500 ms). If the wake-up time is set at 60 seconds, with N set to 2, then timer 240 may be configured to count up to that time after 300 clock pulses (100 ms×2×300=60 seconds). Upon reaching a wake-up time of 500 ms (or 60 seconds), which is a triggering event, timer 240 sends a trigger signal and resets itself to start counting from zero. Timer 240 does this continuously until the supply of power is terminated, or when a power source (e.g., a battery) reaches, for example, a voltage threshold.
In some embodiments, timer 240 may be configured with a ripple counter or a ripple timer. For example, when using an eight-bit ripple counter, the triggering event may be configured to occur when the ripple counter reaches all ones (“11111111”) or all zeros (“00000000”). When associating the triggering event with all zeros, a trigger signal may be sent when the ripple counter counts to zero or when it is reset, for example, by an external reset signal (e.g., coupled with the timer 240 via bus interface 242). A ripple counter may be coupled with a RC clock, in some embodiments. For example, consider that a RC clock, with a clock period of 200 ms (one clock pulse every 200 ms), may be coupled with a ten-bit ripple counter. Thus, trigger circuit 120 may reach a triggering event after every 2,048,000 ms (200 ms×210) or 204.8 seconds.
In some embodiment, timer 240 may be reset by an event external to trigger circuit 120. For example, a power-on (or power-up) event or a power-off (or power-down) event may cause timer 240 to reset. Similarly, trigger circuit 120 (of any of
A wake-up time may be modified, for example, by a software utility, by programming trigger circuit 120, or by changing a switch to a different position. In some embodiments, setting a new wake-up time is a triggering event, which may cause timer 240 to generate a trigger signal. When a new wake-up time is set, timer 240 may reset to zero, and then start counting to the new wake-up time. Timer 240 may be set to any wake-up time from 100 milliseconds to 90 days, or longer. For example, timer 240 may be set to 100 ms, 204 ms, 267 ms, 300 ms, 731 ms, 1021 ms, etc. In some embodiments, timer 240 may be set in units of tenths of seconds or seconds (“s”), such as 0.3 s, 0.8 s, 35 s, 100 s, and so on. In other implementations, timer 240 may be set in units of minutes (“m”), hours (“h”), and days (“d”), such as 1 m, 15 m, 1 h, 6 h, 1 d, 2 d, 10 d, 30 d, 90 d, or longer. For example, one skilled in the art can readily build a timer that accepts the setting of wake-up time in any combination of units, such as 2 d 3 h 25 m 42 s or an equivalent thereof.
In some embodiments, trigger signals are substantially regular and periodic, with substantially uniform intervals between trigger signals. For example, if wake-up time is set at 400 ms, trigger signals may be transmitted every 400 ms (e.g., about 400 ms in between trigger signals). In other embodiments, trigger signals are aperiodic, whereby trigger signals are not separated by substantially the same time period in between. For example, a current trigger signal may come 400 ms (the wake-up time) after a pervious trigger signal, with a subsequent trigger signal coming 917 ms after the current trigger signal. In this example, the time deviates from the wake-up time of 400 ms by as much as 517 ms (917 ms-400 ms). In at least one embodiment, the deviation time may be selected by, for example, a switch, hardware, programming, and/or software. For example, if trigger circuit 120 is set a trigger time of 10 seconds and a deviation time of five seconds, trigger circuit 120 may issue trigger signals separated by a period of about five to 15 seconds. In some embodiments, the deviation time may be expressed in percentage, such as wake-up time plus or minus up to 50%. Regardless, trigger circuit 120 may opportunistically issue trigger signals aperiodically as a function of, for example, the bandwidth of a path between a host accessing the memory, whereby trigger circuit 120 issues more trigger signals when there is lower bus usage between a host and the memory, and issues fewer trigger signals when there is higher bus usage. In other embodiments, trigger circuit 120 may opportunistically issue trigger signals aperiodically as a function of, for example, the voltage of a power source (e.g., a battery), whereby trigger circuit 120 may issue more trigger signals per interval of time when there is more charge stored in the power source than when there is less. In one embodiment, the power source may be a battery (e.g., a rechargeable battery), a capacitor, or any other mechanism for storing electrical charge. Another example of a suitable power source may include a Micro-Electro-Mechanical System (“MEMs”) flywheel, or the like.
In at least one embodiment, preservation circuit 140 may operate to perform reading, writing, and rewriting of memory contents. Examples of reading and writing or storing, in the context of memory access, are described in U.S. patent application Ser. No. 11/095,026, entitled “Memory Using Mixed Valence Conductive Oxides,” which involves one example of a resistive-based memory. As used herein, the term “rewriting” or “restoring” in the context of a modifying the contents of memory, in at least one embodiment, refers to writing to a memory with data read from that memory, either from the same location or a different location. For example, in the context of a resistive-based memory, which stores the logic states of data bits by setting resistance values in memory cells, the term “rewriting” may refer to the process of restoring the resistance values to sufficient values for representing the logic states of data bits (e.g., that were previously read from the memory). As an example, each two-terminal memory element may store a single bit of data as one of two distinct conductivity profiles with a first resistive state R0 at a read voltage VR indicative of a logic “0” and a second resistive state R1 at VR indicative of a logic “1”, where R0≠ R1. Preferably, a change in conductivity, measured at VR, between R0 and R1, differs by at least a factor of approximately 10 (e.g., R0≈1 MΩ and R1≈100 kΩ). The memory elements are not necessarily linear resistors and the resistance of the memory elements may not be a linear function of the voltage applied across the memory elements. Therefore, a resistance R of the memory elements may approximately be a function of the read voltage VR such that R≈f (VR). The R0 and R1 may be retained in the absence of power (e.g., no applied voltage across the two terminals of the memory element) and the application of the read voltage may be non-destructive to the values of R0 and R1. However, the values of R0 and R1 may drift over time due to several factors including but not limited to successive read operations to the same memory element and changes in conductivity of the memory element over time.
If one memory element stores a logic “0” (e.g., R0≈1 MΩ) and another memory element stores a logic “1” (e.g., R1≈100 kΩ), then those values of resistance may drift over time (e.g., after 18 months) such that after a period of time R0 may decrease from about 1 MΩ to about 600 kΩ and R1 may increase from about 100 kΩ to about 350 kΩ. When the read voltage VR is applied across the two terminals of the two-terminal memory element, a read current IR flows through the memory element and a magnitude of the read current IR is indicative of the value of data stored in the memory element. Therefore, for a substantially constant read voltage VR, the magnitude of the read current IR for the R0 resistive state is lower than the magnitude of the read current IR for the R1 resistive state. Sense circuitry (e.g., in the logic layer 130) operative to sense the magnitude of the read current IR and convert the value sensed into a logic voltage level may not be able distinguish between the read currents indicative of the R0 and R1 resistive states if the resistive values for R0 and R1 have drifted as described above. Essentially, unacceptably large amounts of drift in resistive values may result in data corruption. Drift may occur do to several factors including but not limited to the passage of time since the last write operation to a memory element and successive read operations to a memory element. Accordingly, the process of restoring or rewriting is operative to restore the resistive value of R0 from about 600 kΩ to about 1 MΩ and to restore the resistive value of R1 from about 350 kΩ to about 100 kΩ.
The process of restoring or rewriting may include applying an appropriate magnitude of a write voltage VW across the two terminals of the two-terminal memory element to effectuate writing the R0 or R1 resistive value to a memory element selected for a restore operation. As one example a first magnitude and polarity of a write voltage VW0 may be used to effectuate a restore operation on a memory element that stores the R0 resistive value and a second magnitude and polarity of a write voltage VW1 may be used to effectuate a restore operation on a memory element that stores the R1 resistive value. After the restore operation, the resistive value of a memory element storing the R0 resistive value will have increased from about 600 kΩ to about 1 MΩ, for example. Similarly, after the restore operation, the resistive value of a memory element storing the R1 resistive value will have decreased from about 350 kΩ to about 100 kΩ, for example.
Preservation circuit 140 (of any of
Preservation circuit 140 may be configured to perform a rewrite or restore operation according to one or many schemes. A different scheme or process may be programmed into preservation circuit 140. In some embodiments, preservation circuit 140 may be configured with a switch (not shown), such as one discussed above, to select different pre-defined rewrite schemes.
In operation, described from an origin 301 of the x-y plane of scheme 300a, preservation circuit 140 sits idle, awaiting a trigger signal. Index 330, at this point of operation, points to the last portion of memory rewritten 310g, which is the portion, viewed in a loop, before portion 310a. When preservation circuit 140 (not shown) detects a trigger signal, it sends a wait signal or a halt signal to lockup memory bus 170 of
Preservation circuit 140 may be configured to ignore one or more trigger signals. If a trigger signal is not ignored, preservation circuit 140 performs rewrite operation to the next portion 310b of in-use memory. A trigger signal then triggers preservation circuit 140 to rewrite portion 310c of the in-use memory. At this time, index 330 advances to point to portion 310c and the last rewrite mark advances to a position shown
In some embodiments, a threshold age may be used, the threshold age indicating to preservation circuit 140 which portions to rewrite, in response to the next trigger signal. In particular, all portions of memory with age older than the threshold age may be subject to a preservation operation. As shown, three portions 310d, 310e, and 310f have memory older than the set threshold age. When a next trigger signal comes, preservation circuit 140 may operate to rewrite all three portions 310d, 310e, and 310f. In at least one embodiment, the age of a portion of memory may be updated by other components of a memory device, such as memory controller 180. For example, when new data is written to portion 310e by memory controller 180, memory controller 180 updates register 320e to record the time portion 310e was written. As a result, portion 310e has a newer age indicated by 310e′. As such, preservation circuit 140 may increase the performance of its rewrite operation by skipping portion 310e′ when it rewrites memory portions older than the threshold age. The last rewrite mark then advances to after portion 310f, last portion rewritten. The next rewrite operation will be performed on portion 310g. Preservation circuit 140 then loops back to the origin 301 of the x-y plane, goes idle, and waits for the next trigger signal.
In some embodiments, the threshold age is set according to the power-absence period of a memory. For example, if a memory may maintain its contents for a period of 90 days in the absence of power, the threshold age may be set to at most 90 days. The threshold age is likely to be set at 90 days minus a grace period, such as 90 days minus 15 days, or 75 days. The grace period may be selected according to the natures of an application, condition, or situation the memory will likely to be used in. For example, if a memory with a 90-day power-absence period is likely to be unplugged from a host device for up to 60 days at a time, a likely grace period is 60 days or more. Threshold age for this particular application should be 90 days minus at least 60 days equal at most 30 days. Thus, in this example, no memory portion will be older than 30 days, and the memory may maintain its contents for another 60 days in the absence of power.
Preservation circuit 140, in accordance with method 300b, may perform substantially the same operation as in method 300a, except in relation to two features. At the completion of a rewrite operation on any portions 310a to 310u, preservation circuit 140 writes the current timestamp into last write time register 322. Before a rewrite operation, preservation circuit 140 determines how many portions to rewrite with two timestamps: the current timestamp and the timestamp recorded in last write time 322. In a first example, if preservation circuit 140 is configured to rewrite the entire memory in 21 days and current time is five days after the time recorded in last write time 322, preservation circuit 140 will rewrite five portions 310j to 310n after the portion 310i pointed to by index 330. In a second example, if preservation circuit 140 is configured to rewrite the entire memory in 42 hours and current time is four hours after the time recorded in last write time 322, preservation circuit 140 will rewrite two portions 310j and 310k after the portion 310i pointed to by index 330. If method 300b also implements memory threshold age in the second example, two additional portions 310l and 310m will be included in the rewrite operation that is described above.
In some embodiments, method 300b may be implemented with one or more registers (not shown) to record the rewrite time of each memory portion, as in method 300a. In such embodiments, memory age of memory portions, such as 310c′, 310m′, and 310p′, may be updated by other components of the memory device, such as the memory controller 180, when the contents of these memory portions are modified or written. As such, a memory portion with an age below the threshold age will not be included in the next rewrite operation.
As shown and described in relation to
In one of more embodiments, preservation circuit 140 may be configured to follow multiple preservation schemes, depending on different trigger signals. For example, a power-on signal or power-off signal will trigger rewriting of the entire memory; a trigger signal from trigger circuit 120 will trigger rewriting of a portion or portions of the memory, as illustrated in
Flow diagram 400 shows that a memory may sleep (e.g., placed into a state of low or no power consumption) during a stage 410. In some embodiments, stage 410 may be skipped at the initial start (but not after a stage 460, in some cases). At stage 410, flow diagram 400 waits, delays, sleeps, idles, or otherwise stays inaction for a period of time (“delay period”). The delay period may be any length of time from 100 milliseconds to days, for example, 90 days, and longer. The delay period may be changed anywhere (not shown) in flow diagram 400. The passing, expiring or lapsing of the delay period is a triggering event that may cause flow diagram 400 to advance to a stage 420.
At stage 420, a trigger signal is generated, created, issued, sent, or otherwise broadcasted to one or more components, devices, systems, and entities that are configured to receive the trigger signal. In some embodiments, a receiver of the trigger circuit is preservation circuit 140. In at least one embodiment, a software utility receives the trigger signal. The trigger circuit may be generated by the receiving software utility itself, trigger circuit 120, another software utility, or another device or component. There may be more than one receiver, for example, preservation circuits 140, 140a, and 140b in
The receiver or receivers of the trigger signal, at a stage 430, may determine the amount of memory to rewrite. Determining the amount of memory to rewrite may follow one or more methods described above, a method modified from those described above, or a new method. Determining the amount of memory includes determining the starting point, i.e., the starting memory address, of the amount of memory. When the amount is computed, a rewrite operation begins at a stage 440. To rewrite the amount of memory, a portion is read from the memory from the starting memory address. The memory may be read into a buffer. For example, if a software utility is performing the rewrite operation, a part of the allocated memory of the system, on which the software utility is executed, may be used as a buffer. If a preservation circuit is performing the rewrite operation, it may be configured with a buffer to hold the portion of memory.
At a stage 450, the portion of memory is read from the buffer and written or rewritten back to the memory at the same starting memory address or a different starting memory address. In some embodiment, a buffer is not used, and the portion of memory is read from a first location of the memory and written or rewritten into a second location of the memory. At a stage 460, an amount of memory that has been rewritten is determined. If rewriting is not done, the flow goes back to reading at the stage 440 and rewrites at the stage 450, to read and rewrite the next portion of the memory, and keeps on reading and rewriting until the amount of memory has been rewritten, at which point, the flow returns to the stage 410. At stage 410, since the length of the delay period may have been changed since the last delay, the delay period is determined before going to sleep. Flow diagram 400 continues until it is terminated, or for example, power to a preservation circuit that carries out the processes is lost. Flow diagram 400 may terminate when a software utility that executes instructions carrying out the flow diagram 400 is stopped.
A computer-implemented or computer-executable version of the flow diagram 400 or part of the flow diagram 400 may be embodied using, stored on, or associated with computer-readable medium. A computer-readable medium may include hard disks and any medium that participates in providing instructions to one or more processors for execution. Such a medium may take many forms including, but not limited to, nonvolatile, volatile, and transmission media. Nonvolatile media includes, for example, Flash memory, optical disks, or magnetic disks or tapes. Volatile media includes static or dynamic memory, such as SRAM or DRAM. Transmission media includes coaxial cables, copper wire, fiber optic lines, and wires arranged in a bus. Transmission media may also take the form of electromagnetic, radio frequency, acoustic, or light waves, such as those generated during radio wave and infrared data communications.
For example, a binary, machine-executable version, of the software of the present invention may be stored or reside in DRAM, Flash memory, or on a mass storage device (e.g., hard disk, magnetic disk, tape, or CD-ROM). The source code of the software of the present invention may also be stored or reside on mass storage device. As a further example, code of various embodiments of the invention may be transmitted via wires, radio waves, or through a network such as the Internet or a local area network. Computer software products may be written in any of various suitable programming languages, such as Java, JavaScript, Perl, C, C++, C#, or Visual Basic, for example.
RF-to-DC converter 510 receives RF signals 518 in a range of frequencies, for example, from 800 to 1000 megahertz, through antenna 520 or through an antenna (not shown) on host device 190. RF-to-DC converter 510 is configured to convert RF signals 518 into, for example, direct current (“DC”) power. In at least one embodiment, RF-to-DC converter 510 may be implemented with a Powercast® circuit, designed by Powercast, LLC, of Ligonier, Pa., USA. The Powercast® circuit may be further configured to receive RF signals 518 from a nearby RF signal transmitter. For example, when RF-to-DC converter 510 is placed within 10 feet of the nearby transmitter, RF-to-DC converter 510 receives RF signals 518 from the transmitter and converts the signals into electricity. The power may be stored in battery 530. RF-to DC-converter 510 may also directly power trigger circuit 120, preservation circuit 140, and memory 160 for internal memory device 100 (
Battery 530 is configured to store electricity for use in rewrite operations. In some embodiments, memory device 110 includes a power management circuit 181. In one embodiment, power management circuit 181 may be formed within, memory controller 180. Power management circuit 181 may operate to manage power storage and usage in memory device 110. For example, when memory device 110 is embedded or attached to host device 190, power management circuit 181 directs power from host device 190 to memory controller 180, trigger circuit 120, and preservation circuit 140, as well as to battery 530 to recharge it. When power seizes to flow (or, alternatively, drops below a threshold for voltage produced by battery 530) from host device 190, for any reason, power management circuit 181 may disconnect memory controller 180, memory 160, and preservation circuit 140 from power bus 540 to preserve power in battery 530. Battery 530 supplies power to trigger circuit 120 to drive clock 230 and timer 240. When trigger circuit 120 sends or broadcasts a trigger signal, the power management circuit 181 supplies power from battery 530 to preservation circuit 140 and memory 160 for the rewrite operation. After the rewrite operation, power to preservation circuit 140 and memory 160 are cut off. Power is turned on again for the next rewrite operation, and so on.
In some embodiments, battery 530 may be configured to have a size and/or charge storage capacity suitable for a particular application or environment in which memory device 110 is designed to operate. For example, the charge storage capacity of battery 530 may be sufficient enough to store enough power for one rewrite operation. Charging a small battery 530 may use a relatively small RF-to-DC converter 510, whereby the size determination may be a function of a variety of factors, such as the power absence period, the form-factor requirements, the environment in which battery 530 operates, and the like. A relatively small converter and relatively small battery help reduce the cost, size, and weight of memory device 110. To further reduce the cost, size, and weight, trigger circuit 120 may be configured with a RC clock coupled with a ripple counter. In these specific embodiments, preservation circuit 140 may be designed to perform a rewrite operation that does not require more power than may be supplied by the small battery. For example, the portion of memory to rewrite may be programmed to be small, such as a few kilobytes or a few megabytes. Trigger circuit 120 may be designed to operate in accordance with an opportunistic behavior that does not send trigger signals sooner than battery 530 may be recharged. In operations, when host device 190 does not supply power to memory device 110, memory 160 may be kept fresh by numerous cycles of charging up the battery and rewriting a small portion of the memory. Successive charging-rewriting cycles ensure memory device 110 to maintain the contents of memory 160.
In a variety of embodiments, a trigger circuit may include a resistor-capacitor (“RC”) oscillator clock configured to generate clock pulses, and a ripple timer coupled with the RC oscillator clock, the ripple timer configured to generate the trigger signal. A trigger circuit may include a real-time clock. In some embodiments, a preservation circuit may include a buffer, and the preservation circuit is further configured to read the logic states of a portion of the multiple layers of memory from a first location, to store values that represent the logic states in the buffer, and to rewrite the values that represent the logic states to a second location of the multiple layers of memory, thereby preserving the resistance values associated with the logic states. A portion of the multiple layers of memory may be determined with the input of a threshold age. In at least one instance, the second location is the first location. In a specific embodiment, the preservation circuit may be configured to ignore at least one previous trigger signal.
According to at least one embodiment, a memory device may be configured to exchange data with a host, the memory device comprising a memory that comprises multiple layers of memory cells. Further, the memory device may include a preservation circuit coupled with the multiple layers of memory cells, the preservation circuit being configured to restore a resistance value associated with a data bit stored in one of the memory cells in response to a trigger signal, and a memory controller coupled with the memory, the memory controller being configured to interact with the host.
In accordance with one embodiment, a method includes detecting a trigger signal, reading a portion of memory from a first location into a buffer, wherein the portion of the memory is stored in a resistive-based, nonvolatile memory, and rewriting the portion of memory from the buffer into a second location of the memory. In one instance, the second location is the first location. The method also may include determining the portion of the memory to read. A portion of the memory may be determined with the input of a threshold age. In some embodiments, the method may also include storing, in a first register, a memory location corresponding to the end of the portion of the memory, and storing, in a second register, information associated with the writing of the portion of memory from the buffer into a second location of the memory.
An integrated circuit may be configured to rewrite a memory configured to store logic states associated with resistance values, according to an embodiment. The integrated circuit may include a trigger circuit configured to (1) detect a triggering event, and (2) generate a trigger signal. The integrated circuit may also include a preservation circuit, coupled with the trigger circuit, and configured to (1) respond to the trigger signal, and (2) preserve the resistance values of a portion of the memory to represent the logic states. Further, the trigger circuit may comprise a resistor-capacitor (“RC”) oscillator clock configured to generate clock pulses, and a ripple timer coupled with the RC oscillator clock, the ripple timer configured to generate the trigger signal.
A computer-readable medium, according to one embodiment, may include executable instructions stored thereon and configured to (1) sleep for a first period of time, and (2) send a trigger signal to a preservation circuit in a memory device, wherein the memory device comprises at least a resistive-based, nonvolatile memory cell. The executable instructions to send the trigger signal may further include executable instructions to apply power to the memory device. And the computer-readable medium may further include executable instructions to (1) sleep for a second period of time, and (2) remove power from the memory device.
Various embodiments of the invention enable hosts or host devices to be configured to save power with one or more power saving modes. For example, a host may be configured to turn off power to a memory port when a memory device coupled with that port is not used. Power may be turned on selectively when access to the memory device is needed. The memory device, according to at least one embodiment of the invention, is able to maintain its contents with minimal power consumption due to the various schemes of slow restore or rewrite.
The foregoing description, for purposes of explanation, used specific nomenclature to provide a thorough understanding of the various embodiments of the invention. However, it will be apparent to one skilled in the art that specific details are not required in order to practice the various embodiments of the invention. In fact, this description should not be read to limit any feature or aspect of the present invention to any embodiment; rather features and aspects of one embodiment may readily be interchanged with other embodiments.
Thus, the foregoing descriptions of specific embodiments of the various embodiments of the invention are presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the various embodiments of the invention to the precise forms disclosed; many alternatives, modifications, equivalents, and variations are possible in view of the above teachings. For the purpose of clarity, technical material that is known in the technical fields related to the embodiments has not been described in detail to avoid unnecessarily obscuring the description. Thus, the various embodiments may be modified within the scope and equivalents of the appended claims. Further, the embodiments were chosen and described in order to best explain the principles of the embodiments of the invention and their practical applications; they thereby enable others skilled in the art to best utilize various embodiments of the invention with various modifications as are suited to the particular use contemplated. Notably, not every benefit described herein need be realized by each embodiment of the present invention; rather any specific embodiment may provide one or more of the advantages discussed above. In the claims, elements and/or operations do not imply any particular order of operation, unless explicitly stated in the claims. It is intended that the following claims and their equivalents define the scope of the various embodiments of the invention.
This application is a continuation of U.S. Ser. No. 15/381,566, filed Dec. 16, 2016, now U.S. Pat. No. 9,830,985, issued Nov. 28, 2017, which is a continuation of U.S. Ser. No. 14/727,190, filed Jun. 1, 2015, now U.S. Pat. No. 9,536,607, issued Jan. 3, 2017, which is a continuation of U.S. Ser. No. 14/068,754, filed Oct. 31, 2013, now U.S. Pat. No. 9,053,756, issued Jun. 9, 2015, which is a continuation of U.S. Ser. No. 13/401,665 filed Feb. 21, 2012, now abandoned, which is a continuation of U.S. Ser. No. 12/932,637 filed Mar. 1, 2011, now U.S. Pat. No. 8,120,945 issued Feb. 21, 2012, which is a continuation of U.S. Ser. No. 12/800,512 filed May 17, 2010, now U.S. Pat. No. 7,898,841, issued Mar. 1, 2011, which is a continuation of U.S. Ser. No. 12/221,136 filed Jul. 31, 2008, now U.S. Pat. No. 7,719,876, issued May 18, 2010, all of which are incorporated herein in their entirety.
Number | Name | Date | Kind |
---|---|---|---|
4292668 | Miller | Sep 1981 | A |
4328539 | Heeger | May 1982 | A |
4458307 | McAnlis | Jul 1984 | A |
4498140 | Hull | Feb 1985 | A |
5025367 | Gurd et al. | Jun 1991 | A |
5418920 | Kuddes | May 1995 | A |
5434589 | Nakamura | Jul 1995 | A |
5511020 | Hu et al. | Apr 1996 | A |
5515080 | Nakamura | May 1996 | A |
5519663 | Harper, Jr. | May 1996 | A |
5544306 | Deering | Aug 1996 | A |
5557777 | Culbert | Sep 1996 | A |
5613143 | Shimokawa | Mar 1997 | A |
5621863 | Boulet | Apr 1997 | A |
5621886 | Alpert | Apr 1997 | A |
5652720 | Aulas et al. | Jul 1997 | A |
5677900 | Nishida et al. | Oct 1997 | A |
5689676 | Hirose et al. | Nov 1997 | A |
5799200 | Brant | Aug 1998 | A |
5974579 | Lepejian et al. | Oct 1999 | A |
5978293 | Taylor | Nov 1999 | A |
6169688 | Noguchi | Jan 2001 | B1 |
6201742 | Hirai | Mar 2001 | B1 |
6223301 | Santeler | Apr 2001 | B1 |
6317375 | Perner | Nov 2001 | B1 |
6331944 | Monsma et al. | Dec 2001 | B1 |
6359909 | Ito | Mar 2002 | B1 |
6504221 | Tran et al. | Jan 2003 | B1 |
6608773 | Lowrey et al. | Aug 2003 | B2 |
6651225 | Lin | Nov 2003 | B1 |
6667900 | Lowrey et al. | Dec 2003 | B2 |
6701331 | Sawada et al. | Mar 2004 | B1 |
6707712 | Lowery | Mar 2004 | B2 |
6717874 | Perner et al. | Apr 2004 | B1 |
6751147 | Smith et al. | Jun 2004 | B1 |
6754107 | Khouri et al. | Jun 2004 | B2 |
6813177 | Lowrey et al. | Nov 2004 | B2 |
6826094 | Perner et al. | Nov 2004 | B1 |
6836422 | Perner et al. | Dec 2004 | B1 |
6847544 | Smith et al. | Jan 2005 | B1 |
6850443 | Lofgren | Feb 2005 | B2 |
6865104 | Perner | Mar 2005 | B2 |
6885573 | Sharma et al. | Apr 2005 | B2 |
6894938 | Smith et al. | May 2005 | B2 |
6898134 | Smith et al. | May 2005 | B2 |
6934937 | Johnson | Aug 2005 | B1 |
6940744 | Rinerson et al. | Sep 2005 | B2 |
6999366 | Perner et al. | Feb 2006 | B2 |
7006383 | Tanaka | Feb 2006 | B2 |
7016240 | Avakian | Mar 2006 | B1 |
7020006 | Chevallier et al. | Mar 2006 | B2 |
7038948 | Hamilton et al. | May 2006 | B2 |
7042757 | Perner | May 2006 | B2 |
7046043 | Shibata et al. | May 2006 | B2 |
7046558 | Tanaka | May 2006 | B2 |
7057258 | Tran et al. | Jun 2006 | B2 |
7068204 | Bathul et al. | Jun 2006 | B1 |
7075817 | Rinerson et al. | Jul 2006 | B2 |
7079436 | Perner et al. | Jul 2006 | B2 |
7102948 | Perner | Sep 2006 | B2 |
7107424 | Avakian | Sep 2006 | B1 |
7107480 | Moshayedi | Sep 2006 | B1 |
7177977 | Chen et al. | Feb 2007 | B2 |
7260051 | Culver et al. | Aug 2007 | B1 |
7363421 | Di Sena et al. | Apr 2008 | B2 |
7372753 | Rinerson et al. | May 2008 | B1 |
7379364 | Siau et al. | May 2008 | B2 |
7562202 | Potteiger | Jul 2009 | B2 |
7719876 | Chevallier et al. | May 2010 | B2 |
8036035 | Moschiano et al. | Oct 2011 | B2 |
8111572 | Norman | Feb 2012 | B2 |
8120945 | Chevallier et al. | Feb 2012 | B2 |
8151034 | Gorobets et al. | Apr 2012 | B2 |
8195899 | Chen et al. | Jun 2012 | B2 |
8244969 | McWilliams et al. | Aug 2012 | B2 |
8559209 | Siau | Oct 2013 | B2 |
8638584 | Chevallier et al. | Jan 2014 | B2 |
8694359 | Algranati | Apr 2014 | B2 |
8694423 | Wajih et al. | Apr 2014 | B2 |
8694852 | Choi et al. | Apr 2014 | B2 |
8724388 | Neo et al. | May 2014 | B2 |
8730722 | Koh et al. | May 2014 | B2 |
8786972 | Grobis et al. | Jul 2014 | B2 |
9208823 | Na | Dec 2015 | B2 |
9685217 | Romanovskyy et al. | Jun 2017 | B2 |
9691473 | Yang et al. | Jun 2017 | B2 |
20020000597 | Okazawa | Jan 2002 | A1 |
20020064217 | Ohsuge | May 2002 | A1 |
20020083366 | Ohran | Jun 2002 | A1 |
20020097916 | Kaizu | Jul 2002 | A1 |
20020194521 | Ma | Dec 2002 | A1 |
20030058728 | Tran et al. | Mar 2003 | A1 |
20030088742 | Lee | May 2003 | A1 |
20030103400 | Van Tran | Jun 2003 | A1 |
20040125653 | Tran et al. | Jul 2004 | A1 |
20040160797 | Tran et al. | Aug 2004 | A1 |
20040163028 | Olarig | Aug 2004 | A1 |
20050035429 | Yeh et al. | Feb 2005 | A1 |
20050036368 | Yeh et al. | Feb 2005 | A1 |
20050071697 | Batchelor | Mar 2005 | A1 |
20050135155 | Ishimaru et al. | Jun 2005 | A1 |
20050202855 | Choi | Sep 2005 | A1 |
20050228638 | Muramatsu | Oct 2005 | A1 |
20060034124 | Guterman et al. | Feb 2006 | A1 |
20060039191 | Perner et al. | Feb 2006 | A1 |
20060044878 | Perner | Mar 2006 | A1 |
20060050551 | Perner | Mar 2006 | A1 |
20060050552 | Perner | Mar 2006 | A1 |
20060050582 | Perner | Mar 2006 | A1 |
20060136765 | Poisner | Jun 2006 | A1 |
20060139069 | Frank | Jun 2006 | A1 |
20060227591 | Lowrey et al. | Oct 2006 | A1 |
20060285397 | Nishihara | Dec 2006 | A1 |
20070006000 | Jain | Jan 2007 | A1 |
20070028035 | Nishihara | Feb 2007 | A1 |
20070043898 | Ozeki | Feb 2007 | A1 |
20070078891 | Lescouet | Apr 2007 | A1 |
20070101238 | Resnick | May 2007 | A1 |
20070124531 | Nishihara | May 2007 | A1 |
20070159904 | Tran | Jul 2007 | A1 |
20070171751 | Ho | Jul 2007 | A1 |
20070204120 | Garimella | Aug 2007 | A1 |
20070204128 | Lee | Aug 2007 | A1 |
20070276994 | Caulkins | Nov 2007 | A1 |
20080025079 | Philipp et al. | Jan 2008 | A1 |
20080034154 | Lee | Feb 2008 | A1 |
20080077816 | Ravichandran | Mar 2008 | A1 |
20080082752 | Chary | Apr 2008 | A1 |
20080098159 | Song | Apr 2008 | A1 |
20080144357 | Siau et al. | Jun 2008 | A1 |
20080151669 | Bill et al. | Jun 2008 | A1 |
20080159046 | Rinerson et al. | Jul 2008 | A1 |
20080165592 | Kitagawa et al. | Jul 2008 | A1 |
20080229000 | Kim | Sep 2008 | A1 |
20080239851 | Lin | Oct 2008 | A1 |
20080273405 | Byun | Nov 2008 | A1 |
20090006720 | Traister | Jan 2009 | A1 |
20090024790 | Rajan | Jan 2009 | A1 |
20090063757 | Norman | Mar 2009 | A1 |
20090077277 | Vidal | Mar 2009 | A1 |
20090083857 | Ueno | Mar 2009 | A1 |
20090157950 | Selinger | Jun 2009 | A1 |
20090172350 | Norman | Jul 2009 | A1 |
Number | Date | Country |
---|---|---|
WO-2005-106886 | Nov 2005 | WO |
Entry |
---|
Forester, Peter, “MSP430 Flash Memory Characteristics,” MSP430 Applications, Texas Instruments, Application Report, SLAA334, Sep. 2006. 9 pages. |
Notification dated Apr. 8, 2010 Concerning Transmittal of International Preliminary Report on Patentability (Chapter I) includes the Written Opinion for Int'l Appln. No. PCT/US2008/072917. 9 pages. |
Sakimura et al., “A 512Kb Cross-Point Cell MRAM,” IEEE International Solid-State Circuits Conference, 2003, paper 16.1. 8 pages. |
Number | Date | Country | |
---|---|---|---|
20180182454 A1 | Jun 2018 | US |
Number | Date | Country | |
---|---|---|---|
Parent | 15381566 | Dec 2016 | US |
Child | 15823270 | US | |
Parent | 14727190 | Jun 2015 | US |
Child | 15381566 | US | |
Parent | 14068754 | Oct 2013 | US |
Child | 14727190 | US | |
Parent | 13401665 | Feb 2012 | US |
Child | 14068754 | US | |
Parent | 12932637 | Mar 2011 | US |
Child | 13401665 | US | |
Parent | 12800512 | May 2010 | US |
Child | 12932637 | US | |
Parent | 12221136 | Jul 2008 | US |
Child | 12800512 | US |