Programming for electronic memories
10366752 ยท 2019-07-30
Assignee
Inventors
Cpc classification
G11C2213/77
PHYSICS
International classification
G11C13/00
PHYSICS
Abstract
Memory circuitry comprises memory cells having two terminals and a feedback path connected between the two terminals. The feedback path is used to adaptively amplify identical programming pulses that serve to change memory states of the memory cell, and the amplification is based on a current resistive level of the memory cell, which may for example be a multi-level memory cell.
Claims
1. Memory circuitry comprising: a memory cell having a first terminal and a second terminal, the circuitry further comprising a feedback path between said first terminal and said second terminal, wherein said feedback path is configured to compensate for a slowdown in a resistance transition caused by non-linearity within said memory cell, and thereby brings about a linear state transition within said memory cell between respective memory states, and wherein said feedback path comprises an operational amplifier and is configured to connect said memory cell in a negative feedback configuration.
2. The memory circuitry of claim 1, wherein said memory cell is a resistive memory cell.
3. The memory circuitry of claim 1, wherein said feedback path is configured to maintain input programming pulses at a constant voltage.
4. The memory circuitry of claim 1, wherein said feedback path is configured to maintain input programming pulses at a constant current.
5. The memory circuitry of claim 1, being part of any one of the group consisting of: 1T1R, 1D1M, 1S1R, PCM, RRAM, ReRAM, STT-MRAM, CBRAM and Flash memories.
6. The memory circuitry of claim 1, wherein said memory cell has a number of memory states, said number being at least three.
7. Memory circuitry comprising: a memory cell having a first terminal and a second terminal, the circuitry further comprising a feedback path between said first terminal and said second terminal, and a parallel resistor connected in parallel with both of said feedback loop and said memory cell, wherein said feedback path is configured to compensate for a slowdown in a resistance transition caused by non-linearity within said memory cell, and thereby brings about a linear state transition within said memory cell between respective memory states, wherein said feedback loop is configured to provide compensation at a beginning of a respective state transition.
8. The memory circuitry of claim 1, further comprising an input resistor upstream of said feedback loop.
9. The memory circuitry of claim 7, wherein values for said input resistor and said parallel resistor are selected together to provide voltage compensation across a memory cell resistive range, the memory cell resistive range extending from a low resistive state of said cell to a high resistive state of said cell.
10. A method for adaptively amplifying programming pulses in at least one memory cell array having at least one memory cell, the method comprising: providing a feedback-based peripheral circuit, wherein said feedback-based peripheral circuit adaptively amplifies programming pulses for changing memory states of said at least one memory cell, said amplification being based on a current resistive level of said at least one memory cell, and wherein said feedback-based peripheral circuit is configured to compensate for a slowdown in a resistance transition caused by non-linearity within said at least one memory cell, and thereby brings about a linear state transition within said at least one memory cell between respective memory states, wherein said feedback-based peripheral circuit comprises an operational amplifier and is configured to connect said at least one memory cell in a negative feedback configuration.
Description
BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS
(1) The patent or application file contains at least one drawing executed in color. Copies of this patent or patent application publication with color drawing(s) will be provided by the Office upon request and payment of the necessary fee.
(2) Some embodiments of the invention are herein described, by way of example only, with reference to the accompanying drawings. With specific reference now to the drawings in detail, it is stressed that the particulars shown are by way of example and for purposes of illustrative discussion of embodiments of the invention. In this regard, the description taken with the drawings makes apparent to those skilled in the art how embodiments of the invention may be practiced.
(3) In the drawings:
(4)
(5)
(6)
(7)
(8)
(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)
(17)
(18)
(19)
(20)
(21)
(22)
(23)
(24)
(25)
DESCRIPTION OF SPECIFIC EMBODIMENTS OF THE INVENTION
(26) The present invention, in some embodiments thereof, relates to programming for electronic memories and, more particularly, but not exclusively, to such programming when applied to resistance based memories, including those with multi-level cells.
(27) Resistive RAM (ReRAM) technologies are attractive candidates to replace current non-volatile memory technologies such as NAND Flash. Studies of ReRAM technologies show that their memory cells exhibit a relatively high ratio between low and high resistance states, potentially allowing Multi-Level-Cells (MLC). Unfortunately, the nonlinear behaviour of the resistive devices makes it difficult to control and maintain different resistance levels in MLC. In the present embodiments, the effect of non-linearity on the device tolerance to process variation is addressed by using a methodology referred to herein as Adaptive Programming (AP). AP provides a programming method that improves process variation tolerance, and may reduce the erroneous cell count by 50% in terms of Frequency of Error (FoE) in comparison to Identical Pulse Programming (IIP). The AP method requires fewer programming steps than previously proposed MLC programming techniques such as staircase programming and program and verify. These latter have been shown to result at best in a 46% performance improvement with reduced complexity.
(28) Furthermore, AP may enable in-memory multi-valued computing that can be used in non-von Neumann machines.
(29) The adaptive programming method thus may do away with cell-state-pulse dependency. It also requires no separate verify operations, thus, allowing identical pulse programming while, at the same time, dealing with the nonlinearity impact on memristive devices and MLC level distribution.
(30) The present embodiments may show that adaptive programming is able to control uniformity of level distribution, which increases process variation tolerance. Moreover, since adaptive programming adaptively modifies identical voltage pulses according to the cell's instantaneous state, it no longer requires the support of numerous voltage level sources, namely, no longer requires numerous voltage regulators, which reduces the complexity of the MLC memories.
(31) Adaptive Programming (AP) according to the present embodiments may provide for fixed voltage pulses that may be used to program the memristor to different resistance values, while effectively linearizing the behaviour of the memory cell using a feedback peripheral circuit. The feedback mechanism may transform the fixed voltage pulse into the required applied voltage based on current measurement and on the desired resistance levels in a simple and elegant manner.
(32) AP may improve process variation tolerance by achieving uniformity in the distribution of memristor resistance as compared to previously proposed identical pulse programming (IPP) methods. While AP simplifies the write mechanism for memory applications, the technique may also be used also as a building block for in-memory multi-valued computing.
(33) For purposes of better understanding some embodiments of the present invention, as illustrated in
(34) Reference is now made to
(35)
(36) Before explaining at least one embodiment of the invention in detail, it is to be understood that the invention is not necessarily limited in its application to the details of construction and the arrangement of the components and/or methods set forth in the following description and/or illustrated in the drawings and/or the Examples. The invention is capable of other embodiments or of being practiced or carried out in various ways.
(37) Referring now to the drawings,
(38) The memory cell may be a multi-level cell, having at least three distinct voltage levels for different memory states, and the feedback path may compensate for a slowdown in a resistance transition caused by non-linearity within the cell, and thereby bring about a linear state transition within the cell between the different memory states.
(39) The feedback path may utilize an operational amplifier 50 connected for negative feedback. Thus the memory cell 42 is connected in a negative feedback configuration, and the feedback loop may provide compensation at the beginning of a state transition.
(40) The circuit may include an input resistor, R.sub.in52 upstream of the feedback loop, for example between the input voltage V.sub.in54 and the memory cell terminal 44.
(41) A parallel resistor R.sub.p56, shown in
(42) Values for the input resistor 52 and the parallel resistor 56 may be selected together to provide voltage compensation across a full memory cell resistive range, that is between the lowest and highest restive states of the cell.
(43) Reference is now made to
(44) Returning to
(45) The present circuit, and its current topology (with a feedback connection), can be analyzed from a different perspective, in which the cells are programmed using constant current pulses. Consider the opAmp circuit in
(46) Since V.sub.+=V.sub. can be assumed to be a virtual short for ideal opAmps the current flowing in R.sub.in 52 will be the same current flowing in the feedback through R.sub.inR.sub.p 44, noting that current cannot flow into the opAmp 50. Since V.sub.+=0, therefore V.sub.=0 and the current through R.sub.in 52 can be calculated by Ohms low according to:
(47)
(48) Therefore, on the basis of the above perspective, applying constant voltage pulses is equivalent to applying constant current pulses to a cell that consists of a memristive device 42 with a resistor 56 in parallel. And the resistor R.sub.p 56 may be connected such that input for the column is at one side, the side corresponding to the cell, and the other side is connected to ground. Thus, a feedback adaptive connection may be also achieved using identical current programming.
(49) Reference is now made to
(50)
(51)
(52) As mentioned, memory and computing cells based on the present embodiments may include all types of resistive memories in different cell topologies, such as 1T1R, 1D1M, 1S1R, PCM, RRAM, ReRAM, STT-MRAM, CBRAM and Flash memories.
(53) Adaptive Programming (AP) according to the present embodiments is thus a method for programming MLC ReRAM by applying identical voltage pulses and transforming them based on the current state of the cell. Adapting identical applied voltage pulses may compensate the slowdown in the resistance transition caused by the non-linearity of the memristive cell, as shown in
(54) The present embodiments may comprise an AP circuit based on operational amplifiers 68 in inverter configuration with a memristor 64 connected in negative feedback, as shown in
(55)
(56) where Vin is an input voltage consisting of identical voltage pulses. During programming the voltage across the memristor may be greater than the device threshold, i.e.,
(57)
(58) The input voltage Vin may thus be limited by the worst case scenario, when the resistance of the memristor is at LRS, namely, (t)/Rin ratio is at a minimum. However, different memristors exhibit different HRS/LRS ratios, and for devices with high HRS/LRS ratio, the amplification of the voltage may reach the saturation voltage of the operational amplifier before a full switch is achieved, namely, Vo(t)>Vcc for Rmem(t)<HRS. The implication is that the present embodiments only enhance the transition at the start, that is when V.sub.O(t)<Vcc, and after reaching the saturation voltage the applied voltages on the memristive device are identical, hence the log-shaped transition in the resistance is still present.
(59) To deal with different OFF/ON ratios, another resistor Rp 66 is connected as feedback to the operational amplifier in parallel to the memristor as shown in
(60)
(61) After selecting Rin and Rp, a linear-like transition may be achieved under CVS as depicted in
(62) A circuit for adaptive programming according to the present embodiments may allow the controller to apply identical pulses at the input (i.e., Vin) and adaptively amplify them according to the state of the memristor 64. The adaptive amplification may eliminate the state-pulse dependency between resistance levels and voltage pulses. Furthermore, adaptive programming with identical pulses may distribute the resistance levels uniformly across the resistance range and improve process variation tolerance, while maintaining simplicity of the programming mechanism.
(63) Crossbar Compatibility
(64) The design of Adaptive Programming using operational amplifiers is compatible with crossbar array architecture, which is the base topology underlying ReRAM technologies, and can be feasibly embedded within the ReRAM peripheral circuitry. In crossbar architecture, each cell (i.e., memristor) 64 is placed at a column-row intersection as depicted in
(65) To increase performance of the ReRAM, operations may be performed simultaneously for the whole row (i.e., wordline, WL). Reading an entire wordline is performed by applying a read voltage on the wordline and sensing the currents in all of the columns (i.e., bitlines, BLs). Programming operations (either SET or RESET) are also performed in WL granularity, by applying a program voltage on all the bitlines within a WL it is desired to program, and connecting the corresponding WL to the ground.
(66) The AP method involving embedding operational amplifiers within a crossbar design is shown in
(67) Evaluation
(68) In the following, an operational-amplifier-based adaptive programming method is evaluated and compared to previously proposed programming techniques. Two test environments are built. First, a SPICE based ReRAM is designed and tested in a CMOS 0.18 m process to verify the functionality of the proposed circuit. Then, a MATLAB based statistical analysis is performed to evaluate the improvement brought about by the AP method under its process variation while considering Frequency of Error (FoE) among ReRAM cells as a figure of merit.
(69) A. Circuit Evaluation
(70) To perform the simulations, the TEAM mode has been selected following a procedure to model the switching dynamics of an HfO.sub.2-based memristor, which reportedly has a gradual RESET operation while exhibiting a sub-nanosecond SET operation. The TEAM model was chosen for its non-linear behaviour under CVS, which fits the dynamics of the physical HfO.sub.2-based memristor, and reference is now made to
(71) In crossbar arrays, current can sneak, or leak, into different paths other than the desired read or write path. These currents, the sneak or leakage path currents, can cause write disturbs, that is changing cell states undesirably along the sneak paths, or may cause an erroneous read operation due to the increased currents sensed at the sense amplifiers. Several solutions have been proposed in the literature to solve the sneak path problem, such as an unfolded crossbar architecture, diode gating, selectors, Complimentary Resistive Switching (CRS) and half-selected cells. However, considering the different programing schemes in MLC ReRAM that possibly require an increasing magnitude of voltage pulses, some of the known methods may not work as effectively, compared to SLC ReRAM. For example, half-selecting cells may require adaptation to the change in programming voltage to keep other cells half-selected and not causing write disturbs. Such adaptation may increase the complexity of the voltage generators and the peripheral circuitry. CRS is only compatible with SLC ReRAM, while unfolded architecture increases power, latency, and area overhead.
(72) In evaluating the present embodiments, an asymmetrical selector is used to mitigate sneak paths during program and read operations with minimal density and fabrication overhead. The asymmetrical selector exhibits a forward voltage threshold of VF, and a backward voltage threshold of VB, and both reading and programming operations may allow current flow in the desired path for operation, but suppress currents in the sneak paths.
(73) Reference is now made to
(74) Formulating the previous constraint, while considering sneak paths of minimal length of 3, as shown in
V.sub.F+V.sub.thV.sub.op2V.sub.F+|V.sub.B|+3V.sub.th, for V.sub.op>0,(7)
|V.sub.Z|+V.sub.th|V.sub.op|<2|V.sub.B|+V.sub.F+3V.sub.th, for V.sub.op<0,(8)
(75) where Vop is the operational voltage for either reading or programming a cell, VF is the selector's forward voltage, VB is the selector's backward voltage, and Vth is the memristor's threshold voltage. However, using selectors with symmetric characteristics the constraints turn to be,
V.sub.S+V.sub.thV.sub.op3V.sub.S+3V.sub.th, for V.sub.op>0,(9)
V.sub.S+V.sub.th|V.sub.op|<3V.sub.S+3V.sub.th, for V.sub.op<0,(10)
(76) where VS is the selector's breakthrough voltage. It can be concluded that using symmetrical selectors may lead to an operational voltage range of |Vopmax||Vopmin|=2V.sub.S, in order to assure correct read and program operations. However, the operational voltages when using asymmetrical selectors are restricted to the range of |Vopmax||Vopmin|=V.sub.F+|V.sub.B|. Considering the fact that |V.sub.B|>>|V.sub.S|, a much wider range of operational voltages can be used for programming operations using asymmetrical selectors over symmetrical selectors. Therefore the present embodiments may use asymmetrical selectors in 1S1R topology for its feasibility with the different programming methods and for its compatibility with high programming voltages compared to symmetrical selectors.
(77) Simulation results of an adaptive programming of a WL in MLC ReRAM are shown in
(78) We compare different programming methods by SPICE simulations, optimizing the voltage pulse magnitude and length of each method (See Tab. II). For IPP, voltage pulses are chosen to achieve the optimal programming latency at the expense of programming energy, while in ILPP and IMPP, the voltage pulse length and magnitude (within the operational voltage range V.sub.op [5 V, 5 V]) are selected to achieve the best level distribution of a four-level cell resistance. In P&V method, the voltage pulse amplitude or duration trades off the controlled resolution of the resistance levels. Higher or wider voltage pulses increase the resistance steps more rapidly and as a result lower the resolution control. The voltage pulses therefore have been chosen to achieve sufficient accuracy with the aforementioned tradeoff. In AP, R.sub.in and R.sub.p resistors are selected to achieve an appropriate voltage pulse amplification.
(79) Energy and latency (per cell) results for different programming methods are listed in Tab. II. Adaptive programming achieves the lowest latency as compared to other programming methods except IPP, improving programming speed by 29% as compared to IMPP. For IPP, voltage pulses were chosen to achieve the lowest programming latency possible (i.e., pulses were chosen with high magnitudes) on the cost of programming energy, however, IPP will still suffer from reliability issues much more compared to AP as it will be discussed in the following sub-section VB.
(80) It is important to note that P&V method also dissipates energy during the verify pulse (i.e., read pulse) after each programming pulse. Since there are a lot of optimizations that can be applied to the read circuitry, we took the best case read energy and latency (1.41 nJ and 1.61 ns in 22 nm) and multiplied it by the number of verify pulses required for the programmed cells to reach levels 1, 2, and 3 (5, 11, and 17, respectively). The energy and latency figures are extrapolated for a 180 nm process according to scaling estimates, as shown in Table II. Simulations show that AP reduces energy dissipation up to 95% and reduces programming latency by at least 46% compared to P&V.
(81) The present inventors have evaluated the impact of process variation on the level distribution of MLC in different programming techniques. First, the impact of process variations on memristors using the TEAM model has been studied. To add process variations, the present inventors have adopted the methods used to determine the influence of variations in the linear ion drift memristor model.
(82) The TEAM model consists of the two following expressions,
(83)
(84) where x [0, D] is an internal state variable, D, k.sub.off, .sub.off, and .sub.on are positive constants, k.sub.on is a negative constant, i.sub.off and i.sub.on are current thresholds, R.sub.on and R.sub.off are the LRS and HRS, respectively. The current and resistance of the device are, respectively, i(t) and R(t). The resistance of the TEAM model can exhibit, among other I-V relationships, a linear I-V relationship, which is similar to the I-V relationship in the linear ion drift model. Therefore, the same process variation models used for modeling parameter distribution under process variations can be adopted for the TEAM model. In this model, the parameters R.sub.off, R.sub.on, and D vary normally,
R.sub.offN(.sub.R.sub.
R.sub.onN(.sub.R.sub.
DN(.sub.D, .sub.D.sup.2),(5)
(85) where .sub.R.sub.
(86) To perform process variations aware simulations, the present inventors built a MATLAB-based Monte-Carlo (MC) simulation environment. As a figure of merit, they selected the Frequency of Error (FoE), which is the number of ReRAM chips suffering from the same number of bit errors (i.e., frequency), while an error refers to erroneous read operation of a cell which was intended to be programmed to level i, but its resistance is lower than R.sub.i1.sup.F (i.e., lower than the fastest cell of the next lower level). They then compared AP to identical pulse programming (IPP) as they both have state-pulse independency and the same underlying programming mechanism which is identical pulses. 10,000 MC samples were sampled and wrapped in 100 iterations (i.e., simulating 100 ReRAM chips) to induce the frequency of bit errors, while considering different deviations for the distributions and the possibility of increasing the cells capacity. For process variation with standard deviation of 2%, adaptive programming completely eliminates the bit errors, as shown in
(87) Note that the other programming techniques (i.e., IMPP, ILPP, and P&V) achieve better uniformity with process variations as compared to the proposed design of AP and they practically have a negligible FoE. Since AP outperform these methods and has simpler mechanism, we believe that an upgraded circuit design of AP with better linearity will improve also the uniformity, while maintaining the superior performance. Furthermore, IPP and AP enable in-memory computing since identical pulse programming mechanism is an important block in some of those architectures, as discussed in the following section. The present results show that AP has a clear advantage over IPP in terms of performance, energy and reliability (FoE).
(88) Statistical Analysis
(89) To evaluate the impact of process variation on MLC level distribution, first, the impact of process variation on the memristor has been studied. Since memristors lack a generalized physical model, unlike CMOS transistors, understanding the impact depends on obtaining an exact model and technology. Previous work and efforts have been invested into understanding how to model process variations using memristor model parameters, however, these efforts focus on analyzing the impact of process variations only on the linear ion drift model.
(90) The TEAM model discussed above consists of the two following expressions,
(91)
(92) where x[0, D] is an internal state variable, D, k.sub.off, .sub.off, and .sub.on are positive constants, k.sub.on is a negative constant, i.sub.off and i.sub.on are current thresholds, R.sub.on and R.sub.off are, respectively, the LRS and HRS. (t) and (t) are the current and resistance of the device. The resistance of the TEAM model can exhibit, among other I-V relationships, a linear I-V relationship similar to the I-V relationship in the linear i.sub.on drift model. Therefore, the same process variation models for modeling parameters distributions under process variations can be adopted for the TEAM model. In this model, the parameters R.sub.off, R.sub.on, and D vary in a normal distribution,
R.sub.offN(.sub.R.sub.
R.sub.onN(.sub.R.sub.
DN(.sub.D, .sub.R.sub.
(93) where R.sub.off, R.sub.on, and D are, respectively, the desired values of R.sub.off, R.sub.on, and D without process variations. R.sub.off, R.sub.on, and D are the standard deviations of, respectively, R.sub.off, R.sub.on, and D.
(94) TABLE-US-00001 TABLE 1 Tuned Parameters of TEAM model Physical Device TiNHfO2Pt OFF Region (RESET) ON Region (SET) Parameters R.sub.off [] 5.6K R.sub.on [] 460 of TEAM k.sub.off [m/s] 0.0035 k.sub.on [m/s] 10 model [15] a.sub.off 1 a.sub.on 1 i.sub.off [mA] 0.202 i.sub.on [mA] .sup.0.14 x.sub.off 0 x.sub.on = D [m] .sup.10.sup.6
(95) TABLE-US-00002 TABLE II Energy and Latency Comparison Between Different Programming Methods Level 0 (SET).sup.a Level 1.sup.b Level 2.sup.b Level 3.sup.b Programming Energy Latency Energy Latency Energy Latency Energy Latency Method [fJ] [nsec] [nJ] [sec] [nJ] [sec] [nJ] [sec] IPP 106.63 8.49 17.89 1.7 26.72 2.4 33.67 3.1 IMPP 4.24 2.65 12.68 5.3 24.42 7.95 ILPP 5.94 2.65 14.18 12.65 25 42.65 P&V 146.18 3.51 348.84 7.72 515.98 11.94 AP 10.64 1.9 19.6 3.8 27.18 5.7
(96) Reference is now made to
(97) For process variation with a standard deviation of 2%, adaptive programming completely eliminates the bit errors, as shown in
(98) It is noted that the present simulations show that the IMPP, ILPP, and P&V methods achieve better uniformity compared to the current implementation of AP. However, AP is shown to be better in terms of performance, energy and complexity compared to these methods and a circuit implementation of AP where better linearity is achieved may achieve the same uniformity while saving energy and increasing performance. Furthermore, IPP and AP allow in-memory computing because of the identical pulse programming mechanism while other methods do not, as discussed in the following section, and furthermore, AP increases reliability by almost 50% in terms of FoE compared to IPP.
(99) Use for in Memory Computing
(100) Reference is now made to
(101) Since AP allows identical pulse programming in MLC ReRAM, while terminating the state-pulse dependency, improving FoE, and increasing the capacity, it may enable an in-memory computing architecture. Logic and architectural challenges may be addressed such as carry handling, defining a new Instruction Set Architecture (ISA), coherency issues, and other control issues of such memories.
(102) General
(103) Memristors can be programmed to use intermediate levels, unlike HRS and LRS, thus allowing the design of MLC ReRAM. Due to imperfections in the fabrication process, memory cells deviate from each other and as a result limit the number of logical levels stored in each cell. Hence, control of uniformity of level distribution in MLC ReRAM may allow for an increase in process variation tolerance and memory capacity.
(104) Adaptive programming (AP) as per the present embodiments, is a programming method which relies on a feedback circuit that amplifies identical voltage pulses according to the current level of the memory cell. AP may decrease latency and energy as compared with other programming schemes with a simpler mechanism. Furthermore, AP reduces the frequency of errors by approximately 50%. Not only does AP improve memory performance, but there is the potential to use the AP programming technique in multi-valued operations, which are useful methods for in-memory computing.
(105) Adaptive programming is a method of programming an electronic memory having at least one memory cell, which involves obtaining an instantaneous resistive level of the memory cell and modifying a programming pulse to adapt to the instantaneous level. The obtaining and the modifying may involve using a feedback path from the memory cell, and adaptive amplification of the programming pulse may be dynamically responsive to the instantaneous resistive level.
(106) It is expected that during the life of a patent maturing from this application many relevant memristor, memory cell, and feedback technologies will be developed and the scopes of the corresponding terms are intended to include all such new technologies a priori.
(107) The terms comprises, comprising, includes, including, having and their conjugates mean including but not limited to.
(108) The term consisting of means including and limited to.
(109) The term consisting essentially of means that the composition, method or structure may include additional ingredients, steps and/or parts, but only if the additional ingredients, steps and/or parts do not materially alter the basic and novel characteristics of the claimed composition, method or structure.
(110) As used herein, the singular form a, an and the include plural references unless the context clearly dictates otherwise.
(111) It is appreciated that certain features of the invention, which are, for clarity, described in the context of separate embodiments, may also be provided in combination in a single embodiment. Conversely, various features of the invention, which are, for brevity, described in the context of a single embodiment, may also be provided separately or in any suitable subcombination or as suitable in any other described embodiment of the invention. Certain features described in the context of various embodiments are not to be considered essential features of those embodiments, unless the embodiment is inoperative without those elements.
(112) Although the invention has been described in conjunction with specific embodiments thereof, it is evident that many alternatives, modifications and variations will be apparent to those skilled in the art. Accordingly, it is intended to embrace all such alternatives, modifications and variations that fall within the spirit and broad scope of the appended claims.
(113) All publications, patents and patent applications mentioned in this specification are herein incorporated in their entirety by reference into the specification, to the same extent as if each individual publication, patent or patent application was specifically and individually indicated to be incorporated herein by reference. In addition, citation or identification of any reference in this application shall not be construed as an admission that such reference is available as prior art to the present invention. To the extent that section headings are used, they should not be construed as necessarily limiting.