Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
WRITE EFFICIENCY IN MAGNETO-RESISTIVE RANDOM ACCESS MEMORIES
Document Type and Number:
WIPO Patent Application WO/2021/061193
Kind Code:
A1
Abstract:
A system and method include determining, by a memory controller associated with a memory device, a value of a parameter of a write pulse for a plurality of bits of a B-bit word to be stored in the memory device. The value of the parameter is based upon a relative importance of a bit position of the plurality of bits in the B-bit word to a performance of a machine learning or signal processing task involving the B-bit word, a fidelity metric, and a resource metric. The system and method also include writing each of the plurality of bits of the B-bit word in a different sub-array of the memory device using the write pulse generated based on the value of the parameter determined for a particular one of the plurality of bits.

Inventors:
KIM YONGJUNE (US)
JEON YOOCHARN (US)
CHOI WON HO (US)
GUYOT CYRIL (US)
CASSUTO YUVAL (US)
Application Number:
US2020/024159
Publication Date:
April 01, 2021
Filing Date:
March 23, 2020
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
WESTERN DIGITAL TECH INC (US)
International Classes:
G11C11/16
Foreign References:
US20190214070A12019-07-11
US6591394B22003-07-08
US20160049195A12016-02-18
US20170351449A12017-12-07
US20140192583A12014-07-10
Attorney, Agent or Firm:
MAGEN, Burt (2001 Junipero Serra Blvd. Suite 51, Daly City California, US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A method comprising: determining, by a memory controller associated with a memory device, a value of a parameter of a write pulse for a plurality of bits of a B-bit word to be stored in the memory device, wherein the value of the parameter is based upon a relative importance of a bit position of the plurality of bits in the B-bit word to a performance of a machine learning or signal processing task involving the B-bit word, a fidelity metric, and a resource metric; and writing, by the memory controller, each of the plurality of bits of the B-bit word in a different sub-array of the memory device using the write pulse generated based on the value of the parameter determined for a particular one of the plurality of bits.

2. The method of claim 1, wherein the value of the parameter of the write pulse is determined to minimize the fidelity metric while satisfying the resource metric.

3. The method of claim 1, wherein the parameter of the write pulse comprises at least one of write current, pulse width, or write voltage.

4. The method of any preceding claim, further comprising determining, by the memory controller, the value of the parameter of the write pulse to satisfy a granularity.

5. The method of any preceding claim, further comprising identifying, by the memory controller, the relative importance of the bit position of each of the plurality of bits before determining the value of the parameter of the write pulse.

6. The method of any preceding claim, wherein a most significant bit of the B-bit word is more important than a least significant bit of the B-bit word.

7. The method of claim 6, wherein the value of the parameter of the write pulse of the most significant bit is greater than the value of the parameter of the write pulse of the least significant bit.

8. The method of any preceding claim, wherein the parameter is write current or pulse width, and wherein the bit position that is of greater relative importance is assigned a greater write current and/or longer pulse width than the bit position that is of lesser relative importance.

9. The method of any preceding claim, wherein the memory device comprises a magneto-resistive random access memory device.

10. The method of any preceding claim, wherein the fidelity metric comprises at least one of mean square error or peak signal-to-noise ratio.

11. The method of any preceding claim, wherein the resource metric comprises write energy.

12. The method of any preceding claim, further comprising dynamically updating, by the memory controller, the value of the parameter of the write pulse for the bit position of the plurality of bits upon receiving a new fidelity metric or a new resource metric.

13. The method of any preceding claim, wherein determining the value of the parameter of the write pulse comprises inputting the fidelity metric or the resource metric into a look-up table, and receiving the value of the parameter of the write pulse as an output from the look-up table.

14. The method of any preceding claim, further comprising performing, by the memory controller, a wear leveling operation in which the sub-array currently designated to store a particular bit position is designated to store a different bit position upon satisfaction of a pre-determined condition.

15. A system comprising a memory device comprising a plurality of sub-arrays, wherein each of the plurality of subarrays stores one bit of a B-bit word; and a memory controller in operational association with each of the plurality of sub arrays, wherein the memory controller comprises programmed instructions to: determine a first write pulse for a most significant bit of the B-bit word and a second write pulse for a least significant bit of the B-bit word, wherein a value of a parameter of the first write pulse is greater than the value of the parameter of the second write pulse, and wherein the values of the parameter of the first write pulse and the second write pulse are determined to minimize a fidelity metric and satisfy a resource metric, and to reflect a relative importance of the most significant bit and the least significant bit to a performance of a machine learning or signal processing task involving the B-bit word; and store the most significant bit in a first sub-array of the plurality of sub arrays based on the first write pulse and store the least significant bit in a second sub-array of the plurality of sub-arrays based on the second write pulse.

16. The system of claim 15, wherein the memory device comprises a magneto resistive random access memory.

17. The system of claim 15, wherein the parameter comprises at least one of write current, pulse width, or write voltage.

18. The system of claim 15, wherein each of the plurality of sub-arrays is dedicated to storing a designated bit position of the B-bit word.

19. The system of claim 15, wherein the memory controller further comprises programmed instructions to dynamically update the parameter of the first write pulse and the parameter of the second write pulse upon receiving a new fidelity metric or a new resource metric.

Description:
WRITE EFFICIENCY IN MAGNETO-RESISTIVE RANDOM ACCESS MEMORIES

BACKGROUND

[0001] Applicant provides the following description to assist the understanding of the reader. None of the information provided or references cited is admitted to be prior art.

[0002] Memory devices are used in a wide variety of applications for storing data. Magneto resistive Random Access Memory (“MRAM”) is one type of memory device that has gained popularity in recent years. However, present day MRAM devices have limitations due to their configuration and the way they operate.

SUMMARY

[0003] The systems, methods, and devices of this disclosure each have several innovative aspects, no single one of which is solely responsible for the all of the desirable attributes disclosed herein.

[0004] Various aspects of the disclosure will now be described with regard to certain examples and embodiments, which are intended to illustrate but not limit the disclosure. Although the examples and embodiments described herein will focus on, for the purpose of illustration, specific systems and processes, one of skill in the art will appreciate the examples are illustrative only, and are not intended to be limiting.

[0005] In accordance with some aspects of the present disclosure, a method is disclosed. The method includes determining, by a memory controller associated with a memory device, a value of a parameter of a write pulse for a plurality of bits of a B-bit word to be stored in the memory device. The value of the parameter is based upon a relative importance of a bit position of the plurality of bits in the B-bit word to a performance of a machine learning or signal processing task involving the B-bit word, a fidelity metric, and a resource metric. The method also includes writing, by the memory controller, each of the plurality of bits of the B-bit word in a different sub-array of the memory device using the write pulse generated based on the value of the parameter determined for a particular one of the plurality of bits.

[0006] In accordance with some other aspects of the present disclosure, a system is disclosed. The system includes a memory device having a plurality of sub-arrays. Each of the plurality of sub-arrays stores one bit of a B-bit word. The system also includes a memory controller in operational association with each of the plurality of sub-arrays. The memory controller includes programmed instructions to determine a first write pulse for a most significant bit of the B-bit word and a second write pulse for a least significant bit of the B-bit word. A value of a parameter of the first write pulse is greater than the value of the parameter of the second write pulse, and the values of the parameter of the first write pulse and the second write pulse are determined to minimize a fidelity metric and satisfy a resource metric, and to reflect a relative importance of the most significant bit and the least significant bit to a performance of a machine learning or signal processing task involving the B-bit word. The memory controller further includes programmed instructions to store the most significant bit in a first sub-array of the plurality of sub-arrays based on the first write pulse and store the least significant bit in a second sub-array of the plurality of sub-arrays based on the second write pulse.

[0007] In accordance with yet other aspects of the present disclosure, a non-transitory computer-readable medium having computer-readable instructions stored thereon is disclosed. The computer-readable instructions when executed by a processor associated with a magneto resistive random access memory causes the processor to receive a fidelity metric, a resource metric, and a granularity. The computer-readable instructions also cause the processor to determine a value of a parameter of a write pulse for a plurality of bit positions of a B-bit word to satisfy the granularity and the resource metric while minimizing the fidelity metric, and to reflect a relative importance of the plurality of bit positions to a performance of a machine learning or signal processing task involving the B-bit word. The value of the parameter of the write pulse for a more important bit position is greater than the value of the parameter of the write pulse for a lesser important bit position.

[0008] The foregoing summary is illustrative only and is not intended to be in any way limiting. In addition to the illustrative aspects, embodiments, and features described above, further aspects, embodiments, and features will become apparent by reference to the following drawings and the detailed description.

BRIEF DESCRIPTION OF THE DRAWINGS

[0009] FIG. 1 is an example block diagram of a computing system, in accordance with some embodiments of the present disclosure.

[0010] FIG. 2A is an example block diagram of a two-dimensional MRAM array used in a memory device of the computing system of FIG. 1, in accordance with some embodiments of the present disclosure.

[0011] FIG. 2B is an example block diagram of a three-dimensional MRAM array used in a memory device of the computing system of FIG. 1, in accordance with some embodiments of the present disclosure.

[0012] FIG. 2C is another example block diagram of a three-dimensional MRAM array used in a memory device of the computing system of FIG. 1, in accordance with some embodiments of the present disclosure.

[0013] FIG. 3 is an example block diagram of a portion of the MRAM array of FIGS. 2A-2C showing an MRAM cell in greater detail, in accordance with some embodiments of the present disclosure.

[0014] FIG. 4 is an example circuit diagram showing read and write operations in the MRAM array of FIGS. 2A-3, in accordance with some embodiments of the present disclosure.

[0015] FIG. 5 is an example block diagram showing additional details of the MRAM arrays of FIGS. 2A-2C, in accordance with some embodiments of the present disclosure.

[0016] FIG. 6 is an example block diagram showing further details of the MRAM array of FIG. 5, in accordance with some embodiments of the present disclosure.

[0017] FIG. 7 is an example flowchart outlining operations for operating the MRAM array of FIGS. 5 and 6, in accordance with some embodiments of the present disclosure.

[0018] FIG. 8 is an example graph plotting a relationship between a fidelity metric and a write energy for a particular bit position of data stored in the MRAM array of FIG. 6, in accordance with some embodiments of the present disclosure.

[0019] FIG. 9 is an example graph plotting the relationship between another fidelity metric and a write energy for a particular bit position of data stored in the MRAM array of FIG. 6, in accordance with some embodiments of the present disclosure.

[0020] FIG. 10 is an example block diagram showing a wear-levelling operation, in accordance with some embodiments of the present disclosure.

[0021] The foregoing and other features of the present disclosure will become apparent from the following description and appended claims, taken in conjunction with the accompanying drawings. Understanding that these drawings depict only several embodiments in accordance with the disclosure and are therefore, not to be considered limiting of its scope, the disclosure will be described with additional specificity and detail through use of the accompanying drawings. DETAILED DESCRIPTION

[0022] In the following detailed description, reference is made to the accompanying drawings, which form a part hereof. In the drawings, similar symbols typically identify similar components, unless context dictates otherwise. The illustrative embodiments described in the detailed description, drawings, and claims are not meant to be limiting. Other embodiments may be utilized, and other changes may be made, without departing from the spirit or scope of the subject matter presented here. It will be readily understood that the aspects of the present disclosure, as generally described herein, and illustrated in the figures, can be arranged, substituted, combined, and designed in a wide variety of different configurations, all of which are explicitly contemplated and made part of this disclosure.

[0023] Magneto-resistive Random Access Memory (“MRAM”) is a high density, non-volatile memory that stores data in magnetic storage elements. An MRAM array may include a plurality of MRAM cells, with each MRAM cell being configured to store one bit of data. A data bit may be written to an MRAM cell by applying a write pulse that facilitates a change in a magnetic state of the magnetic storage element of the MRAM cell. The write pulse is a function of a magnitude of write current and a length/duration of pulse width. A pulse width may be defined as the time between a rising edge and the next falling edge of a write pulse. Thus, pulse width may be expressed in units of time. The write current and pulse width of the write pulse impact the Write Error Rate (“WER”) (also referred to herein as write failure rate) of the MRAM cell. WER may be defined as the probability of a write error in an MRAM cell for a given write pulse. In other words, WER may be defined as the probability that a write error occurs during writing a data bit to an MRAM cell for a given write current and pulse width of the write pulse. A write error may be defined as a failure to write the data bit desired to be written in an MRAM cell. Thus, the WER is also a function of write current and pulse width of the write pulse.

[0024] Generally speaking, the WER decreases as the write current increases or as the pulse width increases. Thus, by increasing the magnitude of write current or by using longer/greater duration pulse widths in the write pulse, the WER may be reduced. However, increasing the magnitude of the write current or using longer/greater duration pulse widths increases the write energy or power needed or consumed to write a data bit to an MRAM cell. Increasing the write energy may also increase the wear and tear on the MRAM cells, and ultimately degrade the endurance of the associated MRAM array. Thus, increasing the write energy uninhibited is undesirable. The present disclosure provides technical solutions for reducing WER, while also reducing the write energy needed/consumed during writing a data bit to an MRAM cell, thereby increasing write efficiency.

[0025] More specifically, the present disclosure provides a mechanism to determine an optimized write pulse based upon the relative importance of a bit position of data. For example, in some applications, write errors in a Most Significant Bit (“MSB”) position of data may cause more harm than write errors in a Least Significant Bit (“LSB”) position of the data. Thus, the MSB may be considered more important than the LSB in some applications. To reduce write errors in the MSB, and therefore reduce WER of the MSB, the write current and/or pulse width of the write pulse used for writing the MSB bit may be increased. For example, in some embodiments, a write energy constraint may be defined. The write pulse for the MSB may then be optimized by identifying an optimized write current and/or an optimized pulse width that minimizes WER subject to the write energy constraint. In some embodiments, the write pulses for the LSB and other bit positions may also be optimized. However, by varying the write energy constraint based upon the relative importance of the bit positions, optimized write pulses, and therefore optimized write currents and optimized pulse widths, for those bit positions may also be determined. In some embodiments, the magnitude of the optimized write current for the more important bit positions (e.g., MSB) may be greater than the magnitude of the optimized write current for the lesser important bit positions (e.g., LSB). Similarly, in some embodiments, the length/duration of the optimized pulse width for the more important bit positions (e.g., MSB) may be greater than the length/duration of the optimized write current for the lesser important bit positions (e.g., LSB). By optimizing write pulses based upon the relative importance of the bit position of data, the WER in the data may be controlled, while achieving a desired write energy.

[0026] Although the present disclosure is described in terms of write current, the present disclosure is also applicable to write voltages of the write pulse. For example, in some embodiments, the write pulse may be defined in terms of a write voltage and a pulse width. When the write pulse is defined in terms of a write voltage, an optimal write voltage may be computed, instead of or in addition to computing an optimal write current, based upon the relative importance of the bit positions of data. The formulae below used for write current may also be used for write voltage with the current variable, i, in those formulae replaced with a voltage variable, v. The write current, the pulse width, and write voltage are parameters of the write pulse. [0027] Referring now to FIG. 1, an example block diagram of a computing system 100 is shown, in accordance with some embodiments of the disclosure. The computing system 100 includes a host device 105 associated with a memory device 110. The host device 105 may be configured to receive input from one or more input devices 115 and provide output to one or more output devices 120. The host device 105 may be configured to communicate with the memory device 110, the input devices 115, and the output devices 120 via appropriate interfaces or channels 125A, 125B, and 125C, respectively. The computing system 100 may be implemented in a variety of computing devices such as computers (e.g., desktop, laptop, etc.), tablets, personal digital assistants, mobile devices, wearable computing devices such as smart watches, other handheld or portable devices, or any other computing unit suitable for performing operations described herein using the host device 105.

[0028] The input devices 115 may include any of a variety of input technologies such as a keyboard, stylus, touch screen, mouse, track ball, keypad, microphone, voice recognition, motion recognition, remote controllers, input ports, one or more buttons, dials, joysticks, and any other input peripheral that is associated with the host device 105 and that allows an external source, such as a user, to enter information (e.g., data) into the host device and send instructions to the host device. Similarly, the output devices 120 may include a variety of output technologies such as external memories, printers, speakers, displays, microphones, light emitting diodes, headphones, plotters, speech generating devices, video devices, global positioning systems, and any other output peripherals that are configured to receive information (e.g., data) from the host device 105. The “data” that is either input into the host device 105 and/or output from the host device may include any of a variety of textual data, graphical data, video data, sound data, position data, combinations thereof, or other types of analog and/or digital data that is suitable for processing using the computing system 100.

[0029] The host device 105 may include one or more Central Processing Unit (“CPU”) cores or processors 130A-130N that may be configured to execute instructions for running one or more applications associated with the host device. In some embodiments, the instructions and data needed to run the one or more applications may be stored within the memory device 110. The host device 105 may also be configured to store the results of running the one or more applications within the memory device 110. Thus, the host device 105 may be configured to request the memory device 110 to perform a variety of operations. For example, the host device 105 may request the memory device 110 to read data, write data, update or delete data, and/or perform management or other operations. [0030] To facilitate communication with the memory device 110, the host device 105 may communicate with a memory controller 135 of the memory device. Although the memory controller 135 is shown as being part of the memory device 110, in some embodiments, the memory controller may be part of the host device 105 or another element of the computing system 100 and operatively associated with the host device/memory device. The memory controller 135 may be configured as a logical block or circuitry that receives instructions from the host device 105 and performs operations in accordance with those instructions. For example, the memory controller 135 may be configured to read data from or write data to the memory device 110 via the interface 125 A.

[0031] In some embodiments and as shown, the memory device 110 may include a Magneto resistive Random Access Memory (“MRAM”) module 140. In some embodiments, the MRAM module 140 may be of the type Magneto-electric Random Access Memory (“MeRAM”) or Spin Transfer-Torque MRAM (“STT-MRAM”) (also referred to sometimes as STT-RAM, ST-MRAM, ST-RAM, and the like), Spin-Orbit Torque MRAM (“SOT-MRAM”). In other embodiments, the MRAM module 140 may include other types of MRAM. In some embodiments, the memory device 110 may include memory modules other than the MRAM module 140 that may benefit from improving a write efficiency as described herein. For example, in some embodiments, the memory device 110 may include Dynamic Random Access Memory (“DRAM”), Resistive Random Access Memory (“ReRAM”), Static Random Access Memory (“SRAM”), etc. In some embodiments, the memory device 110 may include the MRAM module 140 as well as other types of memories (e.g., such as those discussed above) that may benefit from the operations described herein. Further, although the memory device 110 has been shown as having a single memory module (e.g., the MRAM module 140), in other embodiments, the memory device may be made up of multiple memory modules. For ease of description, MRAM will be used in the description here but the scope of the various embodiments encompasses these other memory types including those mentioned above.

[0032] The MRAM module 140 may include an MRAM array 145. The MRAM array 145 may include a plurality of MRAM cells that allow storing of data bits as magnetic states instead of electric charge. FIGS. 2A-2C describe examples of the MRAM array 145 in greater detail. Although a single MRAM array 145 has been shown as being part of the MRAM module 140, in some embodiments, multiple MRAM arrays may be present within the MRAM module. [0033] It is to be understood that only some components of the computing system 100 are shown and described in FIG. 1. However, the computing system 100 may include other components such as various batteries and power sources, networking interfaces, routers, switches, external memory systems, controllers, etc. Generally speaking, the computing system 100 may include any of a variety of hardware, software, and/or firmware components that are needed or considered desirable in performing the functions described herein. Similarly, the host device 105, the input devices 115, the output devices 120, and the memory device 110 including the MRAM module 140 and the MRAM array 145, may include other hardware, software, and/or firmware components that are considered necessary or desirable in performing the functions described herein. In addition, in some embodiments, the memory device 110 may integrate some or all of the components of the host device 105, including, for example, the CPU cores 130A-130N, and those CPU cores may implement the write pulse determination and related control as described herein.

[0034] Turning now to FIGS. 2A-2C, example configurations of an MRAM array are shown, in accordance with some embodiments of the present disclosure. For example, FIG. 2A shows an example of an MRAM array 200, FIG. 2B shows an example of an MRAM array 205, and FIG. 2C shows an example of an MRAM array 210. The MRAM arrays 200-210 are analogous to the MRAM array 145 of FIG. 1. Referring specifically to FIG. 2A, the MRAM array 200 is a two-dimensional memory array having a plurality of MRAM cells 215A-215H extending in x-direction 220 and y-direction 225, and forming a two-dimensional array of MRAM cells. Although nine of the plurality of MRAM cells 215A-215H are shown in the MRAM array 200, it is to be understood that the number of MRAM cells in the x- direction 220 and in the y-direction 225 may vary from that shown depending upon the capacity of the MRAM array that is desired. The MRAM array 200 also includes a plurality of word lines 230A-230D, only four of which are shown in FIG. 2 A. Depending upon the number of the plurality of MRAM cells 215A-215H, the number of the plurality of word lines 220A-220D may vary. Generally speaking, one of the plurality of word lines 230A-230D may be provided for each row of the plurality of MRAM cells 215A-215H, as shown in FIG.

2 A. A “row” as used herein means a horizontal line extending in the x-direction 220. Thus, for example, the plurality of MRAM cells 215 A, 215B, 215C, and 215D may be considered to be in one “row,” and are connected to and share the wordline 230 A. Similarly, the plurality of MRAM cells in the same row as the MRAM cell 215F are connected to and share the wordline 230B, and so on. [0035] The MRAM array 200 also includes a plurality of bit lines 235A-235E. The plurality of bit lines 235A-235E run perpendicular (or substantially perpendicular) to the plurality of word lines 230A-230D. Similar to the plurality of word lines 230A-230D, the number of the plurality of bit lines 235A-235E varies depending upon the number of the plurality of MRAM cells 215A-215H in the MRAM array 200. Generally speaking, one of the plurality of bit lines 235A-235E may be provided for each “column” of the plurality of MRAM cells 215, as shown in FIG. 2A. A “column” as used herein means a vertical line extending in the y- direction 225. Thus, for example, the plurality of MRAM cells 215E, 215F, 215G, and 215H may be considered to be in one “column,” and may be connected to and share the bit line 235E. Similarly, the plurality of MRAM cells in the same column as the MRAM cell 215D may be connected to and share the bit lines 235D, and so on.

[0036] Thus, the memory array 200 includes the plurality of word lines 230A-230D and the plurality of bit lines 235A-235E arranged in a crisscross or cross point configuration. Each of the plurality of word lines 230A-230D and each of the plurality of bit lines 235A-235E is a conductor or conductive line that may be used to select the associated one of the plurality of MRAM cells 215A-215H. Further, each of the plurality of word lines 230A-230D may be offset from a neighboring word line to define a spacing therebetween. Similarly, each of the plurality of bit lines 235A-235E may be offset from a neighboring bit line to define a spacing therebetween in the x-direction 220.

[0037] Each of the plurality of MRAM cells 215A-215H is located at an intersection region or intersection point of one of the plurality of word lines 230A-230D and one of the plurality of bit lines 235A-235E. For example, the MRAM cell 215A is located at the intersection of, and connected to, the word line 230 A and the bit line 235 A. Similarly, the MRAM cell 215B is located at the intersection of, and connected to, the word line 230A and the bit line 235B, and so on. Since the plurality of word lines 230A-230D and the plurality of bit lines 235 A- 235E are offset from each other to define the spacing discussed above, each of the plurality of MRAM cells 215A-215H is also offset from a neighboring MRAM cell.

[0038] Instead of the two-dimensional array of the MRAM array 200, the MRAM arrays 205 and 210 are three-dimensional in nature. For example, in some embodiments, the MRAM arrays 205 and 210 may stack multiple two-dimensional MRAM arrays to form a three dimensional MRAM array. The MRAM arrays 205 and 210 show two two-dimensional MRAM arrays stacked. However, in other embodiments, the number of two-dimensional arrays that are stacked to form the three-dimensional MRAM array may be greater than two. Referring specifically to FIG. 2B, the MRAM array 205 includes a first two-dimensional MRAM array 240 and a second two-dimensional MRAM array 245 stacked in a z-direction 250 that is perpendicular to the x-direction 220 as well as the y-direction 225. Each of the first two-dimensional MRAM array 240 and the second two-dimensional MRAM array 245 may be configured as the MRAM array 200 having a plurality of MRAM cells formed at an intersection of a word line and a bit line, as discussed above.

[0039] For example, as shown in FIG. 2B, the first two-dimensional MRAM array 240 may include the plurality of MRAM cells 215A-215H, the plurality of word lines 230A-230D, and the plurality of bit lines 235A-235E arranged as described above with respect to the MRAM array 200. Similarly, the second two-dimensional MRAM array 245 may include the plurality of MRAM cells 215A-215H, the plurality of word lines 230A-230D, and the plurality of bit lines 235A-235E arranged as described above with respect to the MRAM array 200. Further, the first two-dimensional MRAM array 240 and the second two- dimensional MRAM array 245 may be separated from one another by an insulating layer, which is not shown in FIG. 2B for clarity.

[0040] It is to be understood that the number of the plurality of MRAM cells 215A-215H in each of the first two-dimensional MRAM array 240 and the second two-dimensional MRAM array 245 may vary from that shown. Consequently, the number of the plurality of word lines 230A-230D and the plurality of bit lines 235A-235E in each of the first two-dimensional MRAM array 240 and the second two-dimensional MRAM array 245 may vary from that shown. Further, although the number of the plurality of MRAM cells 215-215H (and therefore the number of the plurality of word lines 230A-230D and the plurality of bit lines 235A-235E) in each of the first two-dimensional MRAM array 240 and the second two- dimensional MRAM array 245 are shown as being equal, in other embodiments, the number of the plurality of MRAM cells (and therefore the number of the plurality of word lines and the number of the plurality of bit lines) may be unequal.

[0041] FIG. 2C shows another example of a three-dimensional MRAM array. The MRAM array 210 may be configured as a mirrored configuration in which adjacent two-dimensional MRAM arrays share a set of bit lines or word lines. For example, the MRAM array 210 is shown as sharing the plurality of bit lines 235A-235E. Thus, the MRAM array 210 includes a first two-dimensional MRAM array 255 and a second two-dimensional MRAM array 260, both of which share the plurality of bit lines 235A-235E. Each of the first two-dimensional MRAM array 255 and the second two-dimensional MRAM array 260 include their separate instances of the plurality of MRAM cells 215A-215H and their separate instances of the plurality of word lines 230A-230D. Although not shown, the MRAM array 210 may be configured to share the plurality of word lines 230A-230D instead.

[0042] It is to be understood that the number of the plurality of MRAM cells 215A-215H in each of the first two-dimensional MRAM array 2255 and the second two-dimensional MRAM array 260 may vary from that shown. Consequently, the number of the plurality of word lines 230A-230D and the plurality of bit lines 235A-235E in each of the first two- dimensional MRAM array 255 and the second two-dimensional MRAM array 260 may vary from that shown. Further, although the number of the plurality of MRAM cells 215-215H (and therefore the number of the plurality of word lines 230A-230D) in each of the first two- dimensional MRAM array 255 and the second two-dimensional MRAM array 260 are shown as being equal, in other embodiments, the number of the plurality of MRAM cells (and therefore the number of the plurality of word lines and the plurality of bit lines) may be unequal.

[0043] Turning now to FIG. 3, an example MRAM cell 300 is shown in greater detail, in accordance with some embodiments of the present disclosure. The MRAM cell 300 may correspond to one of the plurality of MRAM cells 215A-215H of FIGS. 2A-2C above. The MRAM cell 300 is formed at an intersection of and connected to a word line 305 and a bit line 310. The word line 305 corresponds to one of the plurality of word lines 230A-230D. Similarly, the bit line 310 corresponds to one of the plurality of bit lines 235A-235E. For example, if the MRAM cell 300 corresponds to the MRAM cell 215 A, the word line 305 corresponds to the word line 230 A and the bit line 310 corresponds to the bit line 235 A. For simplicity, only a portion of the word line 305 and a portion of the bit line 310 is shown in FIG. 3.

[0044] The MRAM cell 300 may be formed by depositing a plurality of layers 315. Each of the plurality of layers 315 may be a continuous unpatterned layer, and may be deposited by anisotropically etching the plurality of layers into an array of pillar structures. Alternatively, the plurality of layers 315 of the MRAM cell 300 may be formed by a damascene process by depositing the plurality of layers in an opening in an insulating layer. In other embodiments, other processes may be used for depositing and forming the plurality of layers 315 that make up the MRAM cell 300. The plurality of layers 315 of the MRAM cell 300 may include a series connection of a magnetic tunnel junction formed by layers 320, 325, and 330. In some embodiments, the magnetic tunnel junction may be a magnetoelectric tunnel junction (MeTJ) In other embodiments, the magnetic tunnel junction may be of other types. The layer 330 of the magnetic tunnel junction forms a ferromagnetic free (unpinned) layer, the layer 325 forms an insulating tunneling oxide layer, and the layer 320 forms a ferromagnetic fixed reference (pinned) layer. The layer 320 is referred to herein as the reference layer 320, the layer 325 is referred to herein as the insulating layer 325, and the layer 330 is referred to herein as the free layer 330.

[0045] The plurality of layers 315 of the MRAM cell 300 may also include a two-terminal selector element 335. The plurality of layers 315 may further include one or more magnetic pinning layers for pinning the reference layer 320. In some embodiments, the one or more pinning layers of the plurality of layers 315 may include a ferromagnetic pinning layer 340 and an optional diamagnetic or antiferromagnetic coupling layer 345 located between the ferromagnetic pinning layer and the reference layer 320. Although not shown, in some embodiments, the ferromagnetic pinning layer 340 may itself include a stack of layers, such as a stack of six to ten alternating cobalt and platinum layers having a thickness on 0.3 to 0.4 nm each. In some embodiments, the optional coupling layer 345 may be a 0.2 to 0.3 nm thick tantalum layer. In some embodiments, any other suitable layer materials and thicknesses instead of and/or in addition to the ones described above may be used to pin the reference layer 320.

[0046] The reference layer 320 has a fixed magnetization direction. The direction of magnetization of the reference layer 320 may be fixed, for example, by a combination of the pinning layer 340 and the coupling layer 345. For example, the pinning layer 340 may include a permanent magnet having a magnetization direction that is parallel to the height direction of the MRAM cell 300, and thus, perpendicular to the interface between the free layer 330 and the insulating layer 325. In some embodiments, the magnetization of the free layer 330 may be antiparallel to the magnetization of the reference layer 320. The thickness of the coupling layer 345 may be selected such that the magnetization of the reference layer 320 is antiparallel to the magnetization of the pinning layer 340. Thus, the magnetization of the reference layer 320 may be perpendicular to the interface between the free layer 330 and the insulating layer 325. For example, the reference layer 320 may include CoFeB layer having a thickness in a range from 1 nm to 2 nm. In some embodiments, the magnetic moment of the reference layer 320 may be chosen such that essentially no net perpendicular magnetic field is present at the free layer 330.

[0047] The insulating layer 325 allows passage of leakage current therethrough, for example, for measurement of resistance of the magnetic tunnel junction, and thus, determination of the alignment of the magnetization of the free layer 330 with respect to the reference layer 320 Magnetic anisotropy in the free layer 330 provides an easy axis of magnetization, which enables two stable states for the free layer. When the magnetization of the free layer 330 is parallel to the magnetization of the reference layer 320, a low resistance state having a low resistance Rp results. When the magnetization of the free layer 330 is antiparallel to the magnetization of the reference layer 320, a high resistance state having a high resistance RAP results. The tunneling magnetoresistance ratio, which is defined as (RAP/RP)-1, is a measure of performance metric for the magnetic tunnel junction, and affects the sensing margin and error rates directly. In some embodiments, the thickness of the insulating layer 325 may be selected such that spin torque transfer (STT) effect is insignificant relative to the precession of magnetization of the free layer 330 about an in-plane (within the plane of the interface between the free layer and the insulating layer 325) axis under an applied electrical bias voltage. For example, the insulating layer 325 may include an MgO layer. The MgO layer preferably has a thickness greater than 1.2 nm to reduce the switching energy, such as a thickness in a range from 1.3 nm to 3 nm, such as from 1.4 nm to 1.7 nm.

[0048] The free layer 330 has perpendicular magnetic anisotropy. Thus, the easy axis of magnetization may be perpendicular to the interface between the free layer 330 and the insulating layer 325. In embodiments in which the interface between the free layer 330 and the insulating layer 325 is horizontal, the magnetization of the free layer may be along an “up” direction, or along a “down” direction, i.e., one of the two vertical directions. The magnetic tunnel junction may be formed with built-in asymmetry along the vertical direction. In this case, the Perpendicular Magnetic Anisotropy (“PMA”) may include a constant term that is independent of applied voltage across the free layer 330 and the reference layer 320, and an odd term of significant magnitude (with respect to the constant term) that is proportional to the applied voltage across the free layer and the reference layer. In other words, the perpendicular magnetic anisotropy may be significantly increased or decreased by applying an external bias voltage of a suitable polarity across the free layer 330 and the reference layer 320. In some embodiments, the free layer 330 may include a CoFeB layer. The free layer 330 may have a thickness of less than 1.4 nm, such as a thickness in a range from 0.9 nm to 1.3 nm to permit the electric field to penetrate it during operation, although lesser and greater thicknesses can also be employed.

[0049] The MRAM cell 300 is shown in a vertical configuration, and in some embodiments, the MRAM cell may be configured in a horizontal configuration instead. In a horizontal configuration, the free layer 330 may be located below the reference layer 320 rather than above the reference layer, and the pinning layer 340 may be located above the reference layer. Furthermore, in the horizontal configuration, the selector element 335 may be located such that the remaining layers are formed over the selector element. The MRAM cell 300 may be written or read using a voltage controlled magnetic anisotropy (VCMA) effect. In other words, a voltage may be applied between a selected word line and a selected bit line, and due to the VCMA effect, the MRAM cell 300 may be toggled back and forth between the parallel and anti-parallel states by pulsing a voltage in one direction (e.g., in forward bias mode), such as by applying a negative voltage polarity to the free layer 330 and a positive voltage polarity to the reference layer 320. In some embodiments, a very small current may flow between the free layer 330 and the reference layer 320 during the writing operation. However, the current may be small that STT effects may be ignored, and ohmic dissipation may be minimal, which reduces write energy. In contrast, a larger current may flow between the free layer 330 and the reference layer 320 through the insulating layer 325 during the reading operation.

[0050] Referring now to FIG. 4, an example reading and writing operation in an MRAM cell of an MRAM array 400 is shown, in accordance with some embodiments of the present disclosure. The MRAM array 400 includes a plurality of MRAM cells 405A-405I. Although nine MRAM cells are shown in the MRAM array 400, the number of MRAM cells in the MRAM array may vary. Each of the plurality of MRAM cells 405A-405I may be connected to a bit line and a word line. For example, the MRAM cells 405A, 405D, and 405G may be considered to be in the same “column” and share and are connected to a bit line 410. The MRAM cells 405B, 405E, and 405H share and are connected to a bit line 415. Similarly, the MRAM cells 405C, 405F, and 4051 share and are connected to a bit line 420. The MRAM cells 405A, 405B, and 405C may be considered to be in the same “row,” and are connected to a word line 425. Similarly, the MRAM cells 405D, 405E, and 405F are connected to a word line 430, while the MRAM cells 405G, 405H, and 4051 are connected to a word line 435. Thus, each of the plurality of MRAM cells 405A-405I is formed at an intersection of a bit line and a word line.

[0051] The MRAM cell that is to be programmed or read from may be selected by enabling the associated bit line and word line. For example, to program or read from the MRAM cell 405E, the bit line 415 and the word line 430 to which that MRAM cell is connected may be enabled. Thus, the bit line 415 and the word line 430 may be considered a “selected bit line” (“SBL”) and “selected word line” (“SWL”), respectively. The other bit lines (e.g., the bit lines 410 and 420) may be considered the “unselected bit line” (“UBL”) and the other word lines (e.g., the word lines 425 and 435) may be considered the “unselected word line” (“UWL”). To write or program the MRAM cell 405E, in some embodiments, a forward bias may be applied to facilitate switching of the magnetization state of the free layer of the magnetic tunnel junction of that MRAM cell. Similarly, to read from the MRAM cell 405E, in some embodiments, a reverse bias may be applied to sense the magnetization state of the free layer of the magnetic tunnel junction of that MRAM cell. During the reading and writing operations, a two-terminal selector element of the unselected magnetic tunnel junctions prevent writing and/or disturbing of the unselected MRAM cells. For example, when the MRAM cell 405E is the selected MRAM cell, the MRAM cells 405A-405D and 405F-4015I are the unselected MRAM cells, and an associated selector element 440A-44D and 440F-440I, respectively, of those MRAM cells may prevent reading/writing to those MRAM cells.

[0052] In some embodiments, a write pulse with a first inhibit voltage may be applied to each of UWL (e.g., the UWL 425 and 435) and a write pulse with a second inhibit voltage may be applied to each of UBL (e.g., the UBL 410 and 420) during reading and writing to a selected MRAM cell (e.g., the MRAM cell 405E). In some embodiments, during programming, the first inhibit voltage may be in a range from 0.4 V to 1.2 V, such as 0.6 V, and the second inhibit voltage may be in a range from 0.4 V to 1.2 V, such as 0.6 V. The second inhibit voltage may be the same as, higher than, or lower than the first inhibit voltage. The SWL 430 and the SBL 415, on the other hand, may be biased to provide a write pulse voltage to program the associated MRAM cell 405E. The write pulse may be greater than the turn-on voltage of the associated selector element 440E. For example, the SBL 415 may be biased at 0 V, and the SWL 430 may be biased with a positive voltage pulse of a magnitude in a range from 1.0 V to 2.5 V, such as 1.2 V for both a reset operation (e.g., parallel to anti-parallel magnetic state) and a set operation (e.g., anti-parallel to parallel magnetic state). The pulse width duration of the write pulse may be on the order of a nanosecond.

[0053] During reading, the first inhibit voltage may be in a range from 0.3 V to 1.0 V, such as 0.45 V to 5 V, and the second inhibit voltage may be in a range from 0.3 V to 1.0 V, such as 0.45 V to 5 V. The second inhibit voltage may be the same as, higher than, or lower than the first inhibit voltage. The first and second inhibit voltages during sensing may be the same as, or different from, the first and second inhibit voltages during programming, respectively.

If all inhibit voltages are the same, then time switching from read to write may be saved since a read-before-write may be used for every write (to determine whether or not to send the write pulse). The SWL 430 and the SBL 415 may be biased to provide the optimal reading voltage, which does not have a time limit as in the case of the write pulses. For example, the SBL 415 may be biased at a voltage in a range from 0.7 V to 2.0 V, such as 0.9 V to 1 V, and the SWL 430 may be biased with 0 V.

[0054] Turning now to FIG. 5, an MRAM array 500 is shown, in accordance with some embodiments of the present disclosure. The MRAM array 500 is analogous to the MRAM arrays 145, 205, 210, and 215. The MRAM array 500 includes a plurality of MRAM sub arrays 505A-505N. Each of the plurality of MRAM sub-arrays 505A-505N may include a plurality of MRAM cells. Further, each of the plurality of MRAM sub-arrays 505A-505N include a plurality of bit lines 510A-510N, respectively, that extend along a column direction, as discussed above. Each of the plurality of MRAM sub-arrays 505A-505N also include a plurality of word lines 515A-515N, respectively, that extend along a row direction. Further, each of the plurality of MRAM sub-arrays 505A-505N may be configured for independent operation and control.

[0055] Thus, each of the plurality of MRAM sub-arrays 505A-505N may be associated with a row decoder 520A-520N, respectively, to select an associated one of the plurality of word lines 515A-515N based upon address information provided via an address bus 525. Each of the plurality of MRAM sub-arrays 505A-505N may also be associated with a column decoder 530A-530N, respectively, to select an associated one of the plurality of bit lines 510A-510N. By selecting and unselecting word lines and bit lines of the plurality of MRAM sub-arrays 505A-505N, MRAM cells of those MRAM sub-arrays may be enabled for writing data into or reading data from those MRAM cells. Each of the plurality of MRAM sub-arrays 505A-505N may also be associated with a read-write circuit 535A-535N, respectively. In some embodiments, each of the read-write circuits 535A-535N may include one or more sense amplifiers to enable reading and writing data to the associated one of the plurality of MRAM sub-arrays 505A-505N under control of a controller 540. The controller 540 may be analogous to the memory controller 135 of FIG. 1. In some embodiments, the controller 540 may be separate from the memory controller. Further, each of the read-write circuits 535A-535N may be connected with a data buffer 545. In some embodiments, a separate instance of the data buffer 545 may be used for each of the plurality of MRAM sub-arrays 505A-505N. The data buffer 545 may be used to store data received via a data bus 550 that is to be written in the plurality of MRAM sub-arrays 505A-505N. The data buffer 545 may also be used to store the data read from the plurality of MRAM sub-arrays 505A-505N before transmitting that data on the data bus 550.

[0056] Thus, each of the plurality of MRAM sub-arrays 505A-505N is configured for parallel operation. In other words, the controller 540 that is associated with the MRAM array 500 may be able to control each of the plurality of MRAM sub-arrays 505A-505N independently and simultaneously. Additionally, each of the plurality of MRAM sub-arrays 505A-505N may be of the same size (e.g., same capacity) or of a different size relative to other sub-arrays. Each of the plurality of MRAM sub-arrays 505 A-505N may be configured to store data that is stored within the MRAM array 500. For each piece of data that is stored within the MRAM array 500, each of the plurality of MRAM sub-arrays 505A-505N is configured to store one bit of the piece of data. For example, for an eight-bit data that is stored within the MRAM array 500, an MRAM cell of a first sub-array of the plurality of MRAM sub-arrays 505A-505N may be configured to store a first bit of the eight-bit data, an MRAM cell of a second sub-array may be configured to store a second bit of the eight-bit data, an MRAM cell of a third sub-array may be configured to store a third bit of the eight-bit data, and so on. Further, each of the plurality of MRAM sub-arrays 505A-505N may be configured to store a plurality of data, with each MRAM sub-array storing one bit of each of the plurality of data.

[0057] The number of sub-arrays that form part of the plurality of MRAM sub-arrays 505 A- 505N may vary based upon the configuration of the MRAM array 500 and the bandwidth (e.g., bit-width) of each piece of data that the MRAM module stores. In some embodiments, the plurality of MRAM sub-arrays 505 A-505N may include eight sub-arrays to store eight-bit data. In other embodiments, the plurality of MRAM sub-arrays 505A-505N may include sixteen sub arrays to store sixteen-bit data. In yet other embodiments, groups of sub-arrays may be formed to store data that is larger than eight-bits in width. For example, in some embodiments, a first group of eight sub-arrays may store the bits zero-seven of the data, while a second group of eight sub-arrays may store bits eight-fifteen of the sixteen bit data. Thus, depending upon the size of the data that is to be stored and the configuration of the MRAM array 500, the number of sub-arrays in the plurality of MRAM sub-arrays 505A-505N may be vary.

[0058] Further, each of the plurality of MRAM sub-arrays 505A-505N may be dedicated to storing a particular bit position of the data. Specifically, each piece of data, regardless of the bit-width, includes a Least Significant Bit (“LSB”), a Most Significant Bit (“MSB”), and bits occupying bit positions between the LSB and the MSB. As used herein, the LSB is the lowest bit of a piece of data and the MSB is the highest bit of the piece of data. Thus, for example, for an eight bit data, B0B1B2B3B4B5B6B7, B7 is the MSB and BO is the LSB. Bits B1-B6 occupy bit positions between the MSB and LSB. In some embodiments, the MSB bit, B7, may be said to occupy the first bit position, bit B6 may be said to occupy the second bit position, bit B5 may be said to occupy the third bit position, and so on. The LSB bit, BO, may be said to occupy the eighth bit position. Each of the plurality of MRAM sub-arrays 505A-505N may be dedicated to storing a specific bit position of a piece of data.

[0059] Referring to FIG. 6, an example MRAM array 600 is shown, in accordance with some embodiments of the present disclosure. The MRAM array 600 is similar to the MRAM array 500, but only some elements are shown in FIG. 6. Similar to the MRAM array 500, the MRAM array 600 includes a plurality of MRAM sub-arrays 605 A-605N. In some embodiments, to store a B-bit word, the plurality of MRAM sub-arrays 605 A-605N includes B MRAM sub arrays, with each MRAM sub-array storing one bit of the B-bit word. As indicated above, each of the plurality of MRAM sub-arrays 605 A-605N may be dedicated to storing a specific bit position of the B-bit word. For example and as shown in FIG. 6, the MRAM sub-array 605 A may be configured to store the LSB (e.g., bit B0 in the example above), the MRAM sub-array 605N may be configured to store the MSB (e.g., bit B7 in the example above), while the MRAM sub-arrays 605B-605M may be configured to store bit positions between the LSB and MSB (e.g., bits B1-B6 in the example above). By virtue of being dedicated to storing a specific bit position of data, each time a piece of data is to be stored, the LSB of that data may be stored within the MRAM sub-array 605 A, the MSB of the data may be stored within the MRAM sub array 605N, and each bit between the LSB and MSB may be stored within one MRAM sub array between the MRAM sub-array 605A and 605N depending upon the bit position of that bit and the MRAM sub-array that is configured to store that bit position.

[0060] As also indicated above, in some embodiments, to store the B-bit word, the plurality of MRAM sub-arrays 605A-605N may include B MRAM sub-arrays. In other embodiments, multiple groups of MRAM sub-arrays may be created, with each group storing a subset of the B-bit word. For example, to store a sixteen bit word, a first group 610 of the plurality of MRAM sub-arrays 605 A-605N may be created to store bit positions one to eight of the sixteen bit word and a second group 615 may be created to store the bit positions nine to sixteen of the sixteen bit word. Thus, each of the first group 610 and the second group 615 may include eight MRAM sub-arrays to store one bit of the sixteen bit word. Therefore, the plurality of MRAM sub-arrays 605A-605N in the first group 610 may include eight MRAM sub-arrays. Similarly, the second group 615 may include MRAM sub-arrays 620A-620N, and particularly, eight MRAM sub-arrays. For word sizes greater than sixteen bits, additional groups of MRAM sub arrays may be formed. Alternatively, the number of MRAM sub-arrays in the first group 610 and the second group 615 may be increased.

[0061] Further, for a sixteen bit word where the bit positions one to eight are stored in the plurality of MRAM sub-arrays 605 A-605N and the bit positions nine to sixteen are stored in the plurality of MRAM sub-arrays 620A-620N, the MSB in the bit positions one to eight may be the bit corresponding to bit position one and may be stored within the MRAM sub-array dedicated to storing the MSB (e.g., the MRAM sub-array 605N) and the bit position eight is the LSB and may be stored in the MRAM sub-array dedicated to storing the LSB (e.g., the MRAM sub-array 605A). Similarly, for the bit positions nine to sixteen, the bit position nine is the MSB and may be stored within the MRAM sub-array dedicated to storing the MSB (e.g., the MRAM sub-array 620N) and the bit position sixteen is the LSB and may be stored in the MRAM sub-array dedicated to storing the LSB (e.g., the MRAM sub-array 620A). Thus, the LSB and MSB in the subset of the data bits that is being stored in each group may be identified and stored in the MRAM sub-array dedicated to that bit position.

[0062] For simplicity, the discussion below is with respect to the plurality of MRAM sub arrays 605A-605N. However, the same discussion also applies to the plurality of MRAM sub arrays 620A-620N.

[0063] An interleaver 625 of the MRAM array 600 may be configured to know which MRAM sub-array of the plurality of sub-arrays 605A-605N stores data of which bit position. Thus, the interleaver 625 may be configured to know that the LSB of data is to be stored within the MRAM sub-array 605 A, the MSB of the data is to be stored within the MRAM sub-array 605N, and so on. For example, for an eight-bit data, x = (xO, xl, x2, ... x7), where bit xO is the LSB and bit x7 is the MSB, the interleaver 625 may store the bit, xO, in the MRAM sub-array 605A, the bit, xl, in the MRAM sub-array 605B, the bit, x7, in the MRAM sub-array 605N, and so on. As will be discussed further below, the interleaver 625 may be configured to periodically scramble or change which MRAM sub-array stores which bit positions to reduce wear on the MRAM sub-arrays 605A-605N. Further, the interleaver 625 may also be used for storing data bits in the plurality of MRAM sub-arrays 620A-620N. In some embodiments, a separate interleaver may be used for the plurality of MRAM sub-arrays 620A-620N. Thus, each MRAM sub-array may be configured to store a data bit corresponding to a particular bit position.

[0064] By storing each bit of data in a different MRAM sub-array, a write pulse optimization system 630 may determine optimized parameters (e.g., write current and pulse width) of a write pulse for one or more of the plurality of MRAM sub-arrays 605A-605N depending upon the bit position of data that is stored in a particular MRAM sub-array. In many applications such as machine-learning applications and signal processing, the impact of bits errors depends upon the bit position. For example, errors in the MSB position of an image pixel may degrade overall image quality more than errors in the LSB position. An error in the MSB may also impact the inference or characterization accuracy in machine learning applications. Thus, errors in the LSB may be more tolerable than errors in the MSB. In other words, maintaining the accuracy of the MSB may be more important than maintaining the accuracy of the LSB. To maintain the greater accuracy of the MSB compared to the LSB, as discussed herein, the write pulse used for writing data bits in the MSB position may vary from the write pulse used for writing data bits in the LSB position. In other embodiments, errors in other bit positions other than MSB and LSB positions may degrade the data more. By separating and storing each bit of a piece of data in a separate MRAM sub-array, the MRAM array 600 provides the ability to determine different write pulses for one or more of the plurality of MRAM sub-arrays 605 A- 605N based upon the relative importance of the bit position of the data bit stored in those sub arrays. The write pulse optimization system 630 may be configured to determine the write pulse for one or more bit positions depending upon the relative importance of those bit positions.

[0065] As discussed above, the write pulse is a function of write current and pulse width. By increasing the magnitude of the write current and/or the length/duration of the pulse width, the WER may be reduced. However, increasing the magnitude of the write current and/or the length/duration of the pulse width increases the write energy or power needed to write a data bit. Thus, the write energy, E, is also a function of write current and pulse width of the write pulse:

E o i 2 t (Equation I)

[0066] As seen from Equation I above, the write pulse, E, is directly proportional to write current, i, and the length/duration of the pulse width, t. Further, the error in writing each bit of a piece of data may be defined in terms of a Bit Error Rate (“BER”) (also referred to herein as Write Error Rate (“WER”) or Write Failure Rate (“WFR”)). Specifically, the BER may be defined as the number of write errors in a particular bit per unit time. Lower BER is generally desirable. The BER is referred to herein as a fidelity metric. The BER decreases exponentially as the write current of the write pulse increases. Similarly, the BER decreases exponentially as the length/duration of the pulse width of the write pulse increases. The BER, may be expressed as: (Equation II)

Where: j = i - 1 = over drive current i = normalized current = EI C0

Ico = critical current and I = write current t = pulse width of the write pulse to = fixed parameter based on the characteristic relaxation time of magnetic moment.

[0067] Additional details of how Equation II is derived may be found in Khvalkovskiy et al ., “Basic Principles of STT-MRAM Cell Operation in Memory Arrays,” Journal of Physics D Applied Physics, Vol. 46, No. 7, February 2013, the entirety of which is incorporated by reference herein.

[0068] Equation II may be solved using a convex optimization algorithm to minimize BER subject to a constraint of a resource metric. In some embodiments, the resource metric may be write energy. For example, for a desired write energy, Equation II may be solved to obtain a magnitude of an optimized write current and/or the length/duration of an optimized pulse width that reduces or minimizes BER. In some embodiments, an Alternate Convex Search (“ACS”) algorithm may be used to solve Equation II. In some embodiments, the ACS algorithm may alternate solving the following two optimizations until satisfying a stopping criteria:

(1) Fix t, then solve: t * = argmin t subject to E(i, t) < £, 0 < t < d (2) Fix t = t * , then solve: i * = argmin i

— ) subject to E(i, t * ) < £, 1 < i t 0/

[0069] The equations above are discussed in greater detail below. In other embodiments, other convex algorithms and possibly non-convex algorithms may be used for solving Equation II. Thus, Equation II may be solved using a variety of convex and non-convex algorithms to minimize the fidelity metric (e.g., BER) subject to (e.g., to satisfy) a desired resource metric (e.g., write energy). Further, in some embodiments, Equation II may be solved using the ACS algorithm (or another algorithm) by fixing the magnitude of the write current and determining the length/duration of an optimal pulse width, t * , as follows: t * = arg tmin subject to E(i, t) < £, 0 < t < d

(Equation III)

Where

E(i, t) = write energy that is a function of write current and length/duration of the pulse width. £ = maximum allowable write energy (e.g., resource metric constraint) t = length/duration of non-optimized pulse width. d = maximum allowable length/duration of pulse width (such that the optimized pulse width cannot exceed the maximum allowable pulse width length/duration).

D is the ratio of the energy barrier, additional details of which may be found in Khvalkovskiy et al. mentioned above.

[0070] Thus, by solving Equation III, an optimal pulse width, t * , may be obtained for a particular data bit that reduces or minimizes BER while satisfying the write energy constraint. Upon determining the optimal pulse width, t * , for a particular bit, the pulse width, t, in the equation below may be fixed as the optimal pulse width, t * , determined using Equation III, and then Equation II may be solved to determine an optimal write current value, i * , as follows: i * = argm

I in BER(t, t * ) = ^-^exp (— 2(t — 1) — subject to E(t, t * ) < £, 1 < i 8 \ t 0/

(Equation IV)

Where t = ^obtained from solving Equation III. [0071] Thus, by solving Equation III, an optimal write current, t * , may be obtained for a particular data bit that reduces or minimizes BER while satisfying the write energy constraint. Once the optimal write current value, i * , is determined, the write current value, i, in Equation III may be fixed as the optimal write current value, i * , and Equations III and IV may be solved again, as discussed above. The cycle of determining the optimal pulse width while fixing the write current to an optimal write current value from a previous cycle, and then determining the optimal current value while fixing the pulse width as the optimal pulse width from the same cycle is repeated until a stopping criterion is satisfied.

[0072] In some embodiments, the stopping criteria may be based upon a number of cycles (e.g., ten cycles) of solving Equations III and IV. In other embodiments, the stopping criteria may be the convergence of pulse width and write current values. In other embodiments, other stopping criteria may be used. When the stopping criteria is reached, the optimal pulse width determined from solving Equation III may be used as the optimal pulse width of the write pulse and the optimal write current determined from Equation IV may be used as the optimal write current of the write pulse. Upon applying a write pulse with the optimal write current value and the optimal pulse width from equations III and IV, respectively, the BER of a particular MRAM cell may be minimized and the write energy may be less than a maximum allowable write energy, £.

[0073] In some embodiments, instead of optimizing both the write current and the pulse width, either the write current or the pulse width may be optimized. For example, in some embodiments, an optimal write current may be determined using Equation IV. Specifically, to determine the optimal write current, the pulse width, t, in Equation IV may be fixed to a pre determined pulse width value and the resource metric (e.g., the write energy) may be defined. Then, by solving Equation IV, the optimal write current value may be obtained. Thus, the write current is optimized but the pulse width is not optimized in this case. In other embodiments, an optimal pulse width may be determined using Equation III. Specifically, to determine the optimal pulse width, the write current, i, in Equation III may be fixed to a pre-determined write current value and the resource metric (e.g., the write energy) may be defined. Then, by solving Equation III, the optimal pulse width value may be obtained. Thus, the pulse width is optimized but the write current is not optimized. In some embodiments, the optimal parameters may be i = 2 and t = £/4, obtained by optimizing the equations as discussed above. [0074] Thus, by optimizing the write current and/or the pulse width of the write pulse, the BER of a particular MRAM cell may be minimized while satisfying a desired resource metric (e.g., the write energy). BER is one example of a fidelity metric. In other embodiments, other fidelity metrics may be used. For example, a Mean Square Error (“MSE”) is another fidelity metric. While BER defines the error rate for each bit of a data, the MSE defines the cumulative error rate for all bits of the data combined. Peak Signal to Noise Ratio (“PSNR”) is another fidelity metric that may be used instead of BER and MSE. PSNR represents a measure of the peak error in a piece of data. Other fidelity metrics may be used as desired. Similarly, write energy is one resource metric. In other embodiments, other types of resource metrics may be used, such as write speed, etc.

[0075] If the fidelity metric for the B-bit word is MSE (where the fidelity metric for each bit of the B-bit word is BER), the MSE for the B-bit word may be defined as: (Equation V)

[0076] In the equation above, b represents the bit position, t b represents the pulse width for a write pulse for writing a bit having a particular bit position, b, and i b represents the write current for the write pulse for writing a bit having a particular bit position, b. Further, p(i b , t b ) represents the BER of each bit position and may be minimized by solving Equation II above. Thus, the MSE of the B-bit word is the total sum of the BER of each bit of the B-bit word. In Equation V, 4 b represents the differential importance of each position. In other words, the value of 4 b changes based upon the bit position. For example, for b = 0, 4 b = 1, while for b = 7, 4 b = 16384. Additional details of Equation V above may be found in Kim etal. , Generalized Water-Filling for Source-Aware Energy-Efficient SRAMS, IEEE Transactions on Communications, Vol. 66, No. 10, October 2018, the entirety of which is incorporated by reference herein.

[0077] Thus, based upon the value of 4 b , the MSE of the B-bit word varies. The above equations may be summarized as follows:

[0078] A convex optimization problem may be formulated to solve the above equations and determine the optimal pulse width and/or the optimal write current for each bit position of the B-bit word. In some embodiments, for a given write energy constraint, an optimal write current value and/or an optimal pulse width may be computed for each bit position of the B-bit word that minimizes the MSE. Specifically, in some embodiments, the write current and the pulse width may be alternately updated as discussed above with respect to BER in multiple cycles. For example, in some embodiments, in the first cycle, the write current may be fixed and an optimal pulse width, t * , may be computed as follows: t * = argmin MSE(i, t) subject to E(i, t) < £, 0 < t b < d (Equation VI) t

Where p(i b , t b ) = BER of bit position, b, and computed using Equation II, as discussed above.

£ = maximum allowable write energy (resource metric constraint). d = maximum allowable duration of pulse width or upper bound of pulse width.

[0079] Equation VI may be solved using the ACS algorithm or any other algorithm that is considered suitable. Upon computing the optimal pulse width, t * , using Equation VI, the pulse width, t, may be fixed as t * , and an optimal write current, G, may be computed as follows:

Fix t = t * , then solve: i * = argmin MSE(i,t * ) subject to E(i,t * ) < £, 1 + e < i b (Equation VII)

Where p(i b , t b ) = BER of bit position, b and computed using Equation II, as discussed above. £ = maximum allowable write energy (resource metric constraint)

[0080] The optimal write current value, G, obtained from Equation VII may then be fixed as the write current, i, value in Equation VI in cycle 2, and Equation VI may be solved again. The value of the optimal pulse width obtained by solving Equation VI in cycle 2 may then be fixed as the pulse width value in Equation VII, and Equation VII may be solved to obtain the optimal write current value. The cycles of solving Equations VI and VII may be repeated until a stopping criteria, as discussed above, is reached. The values of the optimal write current and the optimal pulse width from the final cycle minimize MSE while satisfying the write energy constraint. These final values may then be used to generate write pulses for each MRAM sub array of the plurality of MRAM sub-arrays 605A-605N.

[0081] Specifically, by solving Equations VI and VII as discussed above, B values of optimal write current and B values of optimal pulse width for a B-bit word may be generated, and the values vary based upon the bit position of a bit. For example, for an 8-bit word, by solving Equations VI and VII, eight values of the optimal write current and eight values of the optimal pulse width may be generated, with each value of the optimal write current and optimal pulse width being used to generate an optimal write pulse for one MRAM sub-array depending upon the bit position of the bit stored in that MRAM sub-array. In some embodiments, a write pulse generator 635 may be used to generate write pulses having the optimal write current and the optimal pulse width. For each MRAM sub-array, the write pulse generator 635 may generate a write pulse with the optimal write current value and the optimal pulse width determined for that MRAM sub-array. Thus, each of the plurality of MRAM sub-arrays 605 A-605N may have a different write pulse.

[0082] In some embodiments, instead of solving Equation VI in the first cycle, the first cycle may start by solving Equation VII first. In such cases, the pulse width, t, in Equation VII may be fixed to a pre-determined value, and Equation VII may be solved for an optimal write current value. When Equation VII is solved before Equation VI, multiple cycles are not needed. Thus, Equation VII may be solved to obtain the optimal current value, then Equation VI may be solved to obtain the optimal pulse width. No additional cycles are needed. By solving Equations VII and VI in this way, B values of optimal write current and B values of optimal pulse width may be obtained for a B-bit word. In other embodiments, an upper-bound may be placed on the pulse width. The upper bound on the pulse width may be used to achieve a desired write speed performance. Without an upper bound on the pulse width, the optimal pulse width may be very large, which may negatively impact write performance. Further, without an upper bound on the pulse width, the optimal write current may be identical for each of the bit positions (e.g., i = — = 2), which may be undesirable. By setting an upper bound

Ico for the pulse width, non-identical optimal write currents for the various positions may be obtained using Equations VI and VII, as discussed above.

[0083] In other embodiments, instead of determining an optimal write current value and an optimal pulse width for one or more bit positions, either the write current or the pulse width may be fixed and the other variable may be optimized. For example, in some embodiments, the write current may be fixed to a pre-determined value and the pulse width may be optimized using Equation VI. When only the pulse width is optimized, the same write current value may be applied to each bit position, but non-uniform optimal pulse widths, computed using Equation VI, may be applied to one or more bit positions. Similarly, in some embodiments, the pulse width may be fixed to a pre-determined value and the write current may be optimized using Equation VII. When only the write current is optimized, the same pulse width may be applied to each bit position and non-uniform optimal write current, as computed using Equation VII, may be applied to one or more bit positions.

[0084] Further, as indicated above, in some embodiments, PSNR may be used as a fidelity metric instead of MSE. PSNR is inversely proportional to MSE:

PSNR = 10 log lo ((2 B -1) 2 )/MSE

[0085] Therefore, if PSNR is desired as the fidelity metric, then MSE may be computed as discussed herein and the PSNR may be computed from the MSE using the formulae above.

[0086] Thus, the write pulse optimization system 630 determines optimal write current and/or optimal pulse width for one or more bits of a B-bit word to satisfy a given fidelity metric and resource metric. Further, the optimal write current and/or optimal pulse width for the one or more bit positions is based upon the relative importance of each bit position. In some embodiments, the MSB may be considered more important than the LSB. In such cases, the optimal write current may be higher and/or optimal pulse width of the MSB may be longer than the optimal write current and/or optimal pulse width of the LSB. In other embodiments, the LSB may be considered more important than the MSB. In these cases, the optimal write current may be higher and/or optimal pulse width of the LSB may be longer than that of the MSB. In yet other embodiments, bit positions other than the LSB and MSB may be considered more important. In these cases, these bit positions may have a greater optimal write current and/or longer optimal pulse width than the LSB and MSB. Thus, the optimal write current and/or optimal pulse width for one or more bit positions may be based upon a bit position’s relative importance in a B-bit word. By selectively increasing the magnitude of the write current and/or making the pulse width longer based upon the relative bit positions, the write energy for only the more important bit positions is increased, and the overall write energy for writing the B-bit word is decreased. By setting the write energy as the resource metric constraint, the increase in the write energy may be capped to the value set by the resource metric constraint. Additionally, the WER is reduced.

[0087] The write pulse optimization system 630 may be configured to determine the relative importance of one or more of the bit positions. In some embodiments, the relative importance may be based upon the application. For example and as indicated above, in machine learning and signal processing applications, MSB is more important than LSB. In some embodiments, other designated criteria may be used to determine the relative importance of each bit position. In some embodiments, memory controller 640 may provide an indication of the relative importance of each bit position to the write pulse optimization system 630. The write pulse optimization system 630, the interleaver 625, and the write pulse generator 635 may be part of or associated with the memory controller 640. In other embodiments, one or more of the write pulse optimization system 630, the interleaver 625, and the write pulse generator 635 may be separate from the memory controller 640, and operationally associated therewith. Further, in some embodiments, one or more of the write pulse optimization system 630, the interleaver 625, and the write pulse generator 635 may be integrated together into a single component, and the combined component may perform the functions of the individual components that have been combined.

[0088] One or more of the write pulse optimization system 630, the interleaver 625, and the write pulse generator 635 may be configured as software, firmware, hardware, or combinations thereof. Although not shown, one or more of the write pulse optimization system 630, the interleaver 625, and the write pulse generator 635 may have their own processing unit(s) and memory to store instructions that are executed by the respective processing unit(s). The memory controller 640 is analogous to the memory controller 135. [0089] Upon determining the optimal write current and/or optimal pulse width for one or more bit positions, the write pulse optimization system 630 may provide the optimal write current and/or optimal pulse width values to the write pulse generator 635. The write pulse generator 635 may then generate write pulses in accordance with the optimal write current and/or optimal pulse width values. Specifically, the write pulse generator 635 may apply a different optimal write current and/or optimal pulse width to each of the plurality of MRAM sub-arrays 605 A- 605N based upon the computed optimal write current and/or optimal pulse width for that bit position and the sub-array storing the bit corresponding to that bit position. For example and as shown in FIG. 6, if the optimal pulse widths computed for an eight-bit word are t = (tO, tl, t2, ... t7) where tO is the optimal pulse width for LSB and tl is the optimal pulse width for MSB, and the optimal write currents for the eight-bit word are i = (iO, i 1, i2, ... i7) where iO is the optimal write current for LSB and i7 for MSB, the write pulse generator 635 may generate a first write pulse for the MRAM sub-array 605A with the tO pulse width and the iO write current, a second write pulse 650 for the MRAM sub-array 605B with tl pulse width and il write current, and so on.

[0090] Therefore, based upon the relative importance of a bit position, the optimal write current and/or optimal pulse width may vary. Further, in some embodiments, the granularity of the number of optimal write current and/or optimal pulse width may be controlled. For example and as discussed above, for a B-bit word, an optimal write current and/or optimal pulse width is computed for a bit position. In some embodiments, a bit position may have a different value of the optimal write current and/or optimal pulse width relative to other bit positions, such that the granularity of the optimal write current and/or optimal pulse width for a B-bit word is B. In some embodiments, a lower granularity may be desired. For example, it may be desired that the first four bits of an eight-bit word may have a first optimal write current and/or a first optimal pulse width while the last four bits of the eight-bit word have a second optimal write current and/or a second optimal pulse width. Thus, two different values of the optimal write current and/or two different values of optimal pulse width may be used, leading to a granularity of two for each of the optimal write current and the optimal pulse width. Similarly, in some embodiments, a granularity of four may be used such that pairs of bits have the same optimal write current and/or optimal pulse width. If the same optimal write current and/or optimal pulse width is applied to each of the bit positions, then the granularity is one. In some embodiments, the granularity of the optimal write current may be same as the granularity of the optimal pulse width. In other embodiments, the granularities of the optimal write current and optimal pulse width may vary. Thus, the granularity of each of the optimal write current and optimal pulse width may vary between one and B for a B-bit word.

[0091] Additionally, regardless of the granularity that is used, the optimal write current and/or optimal pulse width that is computed for a bit position is still based upon the relative importance of the bit positions. For example, when a granularity of two is used such that half the bit positions have the first optimal write current and/or the first optimal pulse width and the other half have a second optimal write current and/or a second optimal pulse width, the values of the first optimal write current and/or the first optimal pulse width, as well as the second optimal write current and/or the second optimal pulse width are based upon the relative bit positions. Specifically, the bit positions that are towards the MSB may have a greater optimal write current and/or a longer optimal pulse width compared to the bit positions that are towards the LSB. Thus, in an eight-bit word having a granularity of two, the four bits closest to the MSB may have a greater optimal write current and/or a longer optimal pulse width than the four bits closest to the LSB.

[0092] In some embodiments, the optimal write current and/or optimal pulse width that are used for the write pulses may be selected based upon the granularity that is desired. For example, for a B-bit word, the optimal write current and/or optimal pulse width may be computed for a bit position as discussed above. From these computed optimal write current and/or optimal pulse width, certain values may be selected based on the desired granularity. For example, when the granularity is two, in some embodiments, the optimal write current and/or optimal pulse width for the LSB may be used for other bit positions as well that are closest to the LSB regardless of the optimal write current and/or optimal pulse width computed for those bit positions (e.g., if the computed optimal write current and/or optimal pulse width for those other bit positions varies from the optimal write current and/or optimal pulse width for the LSB, the optimal write current and/or optimal pulse width for the LSB may be used for those other bit positions as well). Similarly, the optimal write current and/or optimal pulse width for the MSB may be used for those half of the bit positions that are closest to the MSB regardless of the optimal write current and/or optimal pulse width computed for those other bit positions.

[0093] In some embodiments, optimal write current and/or optimal pulse width values for a bit position of a B-bit word may be computed before-hand for various combinations of fidelity metric, resource metric, and granularity, and stored in a look-up table of the write pulse optimization system 630. The inputs to the look-up table may be the desired fidelity metric, the desired resource metric, and/or the granularity, and the output may be the optimal write current and/or optimal pulse width for each bit position of a B-bit word. For example, to minimize MSE and achieve a desired write energy, in some embodiments, the desired write energy constraint may be used as an input to the look-up table. The minimum MSE from all records in the look-up table having the desired write energy constraint may be selected. The write current and pulse width corresponding to the minimum MSE may then give the optimal write current and/or optimal pulse width of one or more bit positions of a B-bit word. For an eight-bit word, the look-up table may output up to eight optimal refresh interval values, one for each of the eight bit positions. In other embodiments, the minimum MSE may be used as an input to the look-up table. From all records with the minimum MSE, the record corresponding to the desired write energy may be selected to output the optimal write current and/or optimal pulse width.

[0094] Similarly, in some embodiments, optimal write current and/or optimal pulse width may be obtained to minimize write energy and achieve a given MSE. An optimal write current and/or optimal write pulse width may then be obtained as follows:

Fix i, then solve t * = argmin E(i,t) subject to MSE(i, t) < 11, 0 < t b < d (Equation VIII) t

T L = maximum allowable MSE (fidelity metric constraint).

[0095] Equation VIII may be solved using the ACS algorithm as discussed above or using any other algorithm that is considered suitable. Upon computing the optimal pulse width, t * , using Equation VIII, the pulse width, t, may be fixed as t * , and an optimal write current, i * , may be computed as follows:

Fix t = t * , then solve: i * = argmin E(i, t * ) subject to MSE(i,t * ) < 'll, 1 + e £ i b (Equation IX)

[0096] Equations VIII and IX may be solved repeatedly in a loop multiple times until a stopping criterion is reached, as discussed above. By solving and optimizing Equations VIII and IX, an optimal write current and/or optimal pulse width may be obtained for a bit position. In some embodiments, Equation IX may be solved before Equation VIII. In such cases, a single cycle of solving Equations IX and VIII may be sufficient to provide an optimal write current and/or optimal pulse width.

[0097] Further, when a look-up table is used, the MSE may be used an input to the look-up table. If multiple records are found for the MSE in the look-up table, the record with the minimum write energy value may be selected. The write current and/or the pulse width corresponding to that minimum write energy may then provide the optimal write current and/or optimal pulse width for a bit position of the B-bit word. In other embodiments, the record(s) with the minimum write energy may be selected. From those record(s), the record with the desired MSE may be selected to output the optimal write current and/or optimal pulse width.

[0098] In some embodiments, the granularity of the optimal write current and/or optimal pulse width may also be used as an input to determine the optimal write current and/or optimal pulse width. Thus, the look-up table may be structured in a variety of ways. In other embodiments, mechanisms other than a look-up table may be used to determine the optimal write current and/or optimal pulse width for each bit position.

[0099] Referring to FIG. 7, an example flowchart outlining operations of a process 700 for generating write pulses based on relative importance of bit positions is shown, in accordance with some embodiments of the present disclosure. The process 700 may include additional or other operations depending upon the particular embodiment. The process 700 may be implemented by the write pulse optimization system 630, the interleaver 625, and the write pulse generator 635 of the memory controller 640. Upon starting at operation 705, the memory controller 640 receives an instruction (e.g., from the host device 105) to store a B-bit word in the MRAM array 600. The interleaver 625 stores each bit of the B-bit word in a separate one of the plurality of MRAM sub-arrays 605A-605N of the MRAM array 600. The interleaver 625 knows which MRAM sub-array is configured for storing which bit position. Thus, the interleaver 625 stores the MSB in the MRAM sub-array (e.g., the MRAM sub-array 605N) configured to store MSB, stores the LSB in the MRAM sub-array (e.g., the MRAM sub-array 605A) configured to store LSB, and stores the remaining bits in the MRAM sub-arrays configured to store the bit positions of the remaining bits.

[0100] At operation 710, the write pulse optimization system 630 receives a fidelity metric. As discussed above, the fidelity metric may be BER, MSE, PSNR, etc. that define or are associated with error rates of writing data. In some embodiments, the write pulse optimization system 630 may receive the fidelity metric from the memory controller 640, which in turn may have received the fidelity metric from the host device 105. In other embodiments, the write pulse optimization system 630 may receive the fidelity metric directly from the host device 105 or from another component of the computing device with which the write pulse optimization system is associated. At operation 715, the write pulse optimization system 630 receives a resource metric. As discussed above, the resource metric may be write energy, write speed, etc. The write pulse optimization system 630 may receive the resource metric in a similar way as the fidelity metric. In other words, the write pulse optimization system 630 may receive the resource metric from the memory controller 640, the host device 105, or any other component of the computing system with which the write pulse optimization system is associated.

[0101] At operation 720, the write pulse optimization system 630 receives a granularity defining the number of values to be used for the optimal write current and/or the optimal pulse width. As discussed above, in some embodiments, each bit position of the B-bit word may have a different optimal write current and/or optimal pulse width. In such cases, the granularity is “B” for a B-bit word. In other embodiments, a smaller granularity may be used such that the same optimal write current and/or optimal pulse width may be used for multiple bit positions of a B-bit word. The write pulse optimization system 630 may receive the granularity from the memory controller 640, the host device 105, or any other component of the computing system with which the write pulse optimization system is associated. Although the process 700 has been described as receiving the fidelity metric before the resource metric, which is described as being received before the granularity, it is to be understood that the fidelity metric, resource metric, and granularity may be received in any order.

[0102] At operation 725, the write pulse optimization system 630 computes an optimal write current and/or optimal pulse width for one or more bit positions of the B-bit word. In some embodiments, the write pulse optimization system 630 may compute an optimal write current and optimal pulse width for each bit position. In other embodiments, the write pulse optimization system 630 may compute the optimal write current and the optimal pulse width for a subset of the bit positions of the B-bit word. Further, in some embodiments, the write pulse optimization system 630 may first determine the relative importance of the various bit positions before computing their optimal write current and/or optimal pulse width. Further, the write pulse optimization system 630 determines an optimal write current and/or optimal pulse width for one or more bit positions of the B-bit word. In some embodiments, the write pulse optimization system 630 may determine both the optimal write current and the optimal pulse width for one or more bit positions of the B-bit word. In other embodiments, the write pulse optimization system 630 may determine either the optimal write current or the optimal pulse width for one or more bit positions of the B-bit word. For example, in some embodiments, the write pulse optimization system 630 may compute the optimal write current for one or more bit positions of the B-bit word and use a pre-determined non-optimized pulse width for those bit positions. Similarly, in some embodiments, the write pulse optimization system 630 may compute the optimal pulse width for one or more bit positions of the B-bit word and use a pre determined non-optimized write current for those bit positions. Thus, depending upon the embodiment, the write pulse optimization system 630 may optimize the write current, the pulse width, or both.

[0103] In some embodiments, upon receiving the fidelity metric, the resource metric, and the granularity, the write pulse optimization system 630 may use a look-up table to determine the optimal write current and/or optimal pulse width, as discussed above. The write pulse optimization system 630 may continue to use the optimized write current and/or the optimized pulse width for writing data until a new fidelity metric is received at operation 730. Thus, at the operation 730, the write pulse optimization system 630 determines if a new fidelity metric is received. The write pulse optimization system 630 may check for a new fidelity metric periodically or upon satisfying predetermined conditions.

[0104] The new fidelity metric of the operation 730 may be a different fidelity metric than the one received previously at the operation 710 or the new fidelity metric may be a different value of the same metric received at the operation 710. In other words, if the fidelity metric previously received at the operation 710 is MSE, the new fidelity metric received at the operation 730 may be PSNR or a different value of MSE. The new fidelity metric may be received in the same or similar way as the fidelity metric received at the operation 710. If a new fidelity metric is received at the operation 730, the process 700 loops back to the operation 710 and repeats the operations 710-725. If no new fidelity metric is received at the operation 730, in some embodiments, the write pulse optimization system 630 may determine if a new resource metric or granularity is received at operation 735. If no new resource metric and no new granularity is received at the operation 735, the write pulse optimization system 630 goes back to the operation 730 and continues to monitor for updates to the fidelity metric. If a new resource metric is received at the operation 735, the process 700 loops back to the operation 715, as shown in FIG. 7, and repeats the operation 715-725 using the fidelity metric that was previously received at the operation 710. If a new granularity is received at the operation 735, the process 700 loops back to the operation 720 (not shown in FIG. 7) and repeats the operation 725 using the fidelity metric previously received at the operation 710 and the resource metric previously received at the operation 715.

[0105] Thus, the process 700 provides a mechanism to dynamically, in substantially real-time, update the optimal write current and optimal pulse width values of each bit position of a B-bit word depending upon the relative importance of the bit positions, while achieving desired fidelity and resource metrics.

[0106] Referring to FIG. 8, an example graph 800 comparing MSE and normalized write energy is shown, in accordance with some embodiments of the present disclosure. A lower MSE and lower write energy consumption are desirable. The graph 800 plots normalized write energy on X-axis 805 against MSE on Y-axis 810. The graph 800 also includes a first curve 815 that corresponds to write energy for a particular bit position obtained using conventional mechanisms and a second curve 820 that corresponds to write energy for the particular bit position obtained using the present disclosure. The second curve 820 has a lower MSE and consumes lesser write energy compared to the first curve 815. For example, at an MSE of one, the write energy of the second curve 820 shows about a twenty one percent reduction compared to the write energy of the first curve 815. Thus, the optimally computed write pulses of the present disclosure reduce errors in the bit positions, while conserving write energy.

[0107] Turning to FIG. 9, an example graph 900 comparing PSNR and normalized write energy is shown, in accordance with some embodiments of the present disclosure. A higher PSNR and lower write energy consumption are desirable. The graph 900 plots normalized write energy on X-axis 905 against PSNR on Y-axis 910. The graph 900 also includes a first curve 915 that corresponds to write energy for a particular bit position obtained using conventional mechanisms and a second curve 920 that corresponds to write energy for the particular bit position obtained using the present disclosure. The second curve 920 has a higher PSNR and consumes lesser write energy compared to the first curve 915.

[0108] Turning now to FIG. 10, an example block diagram showing a wear-leveling operation 1000 is shown, in accordance with some embodiments of the present disclosure. As discussed above, each bit of a B-bit word is stored in a different sub-array of an MRAM module. As also discussed above, the MRAM sub-arrays that store bits with more important bit positions (e.g., MSB) have higher write energy (e.g., higher current and/or longer pulse width) than the MRAM sub-arrays that store bits with less important bit positions (e.g., LSB). The MRAM sub-arrays that use the higher write energy may suffer greater wear than the MRAM sub-arrays that use a lower write energy. To somewhat equalize wear on the MRAM sub-arrays, in some embodiments, the interleaver (e.g., the interleaver 625) may apply the wear-leveling operation 1000

[0109] In the wear-leveling operation 1000, the bit positions that are stored in MRAM sub arrays 1005A-1005N may be rotated such that each MRAM sub-array goes through periods of having a higher write energy (e.g., when storing MSB) and lower write energy (e.g., when storing LSB). Specifically, as shown in FIG. 10, in a first round 1010, the MRAM sub-array 1005 A may store the LSB and the sub-array 1005N may store the MSB. Thus, during the first round 1010, the MRAM sub-array 1005N has a higher write energy than the MRAM sub-array 1005 A. In a second round 1015, the bit positions may be shifted by one step such that the MRAM sub-array 1005 A now stores the MSB and the MRAM sub-array 1005B now stores the LSB, and so on. Thus, during the second round 1015, the MRAM sub-array 1005 A has a higher write energy than the MRAM sub-array 1205B and the sub-array 1205N. Although the shifting is shown to be one step to the right, in other embodiments, the shifting may be one step to the left or may shift multiple steps.

[0110] Thus, by performing the wear-leveling operation 1200, the wear on the sub-arrays 1205A-1205N may be equalized. The switching from the first round 1210 to the second round 1210 may occur when certain pre-determined conditions are satisfied. For example, in some embodiments, the switching of the rounds may occur after a designated number of writing operations have been performed. In other embodiments, the switching may occur after a pre determined time period has passed, etc.

[0111] Although the present disclosure focusses on MRAM, the systems and methods disclosed herein can be applicable to any memory that utilizes write pulses to write data to a memory cell. Further, in some embodiments, and particularly for memories that store more than one bit of information (e.g., are configured as multi-level cells), gray mapping may be used along with the optimal write current and optimal pulse widths discussed herein. Depending on the embodiment, certain acts, events, or functions of any of the processes or algorithms described herein can be performed in a different sequence, can be added, merged, or left out altogether (e.g., not all described operations or events are necessary for the practice of the algorithm). Moreover, in certain embodiments, operations or events can be performed concurrently, e.g., through multi-threaded processing, interrupt processing, or multiple processors or processor cores or on other parallel architectures, rather than sequentially. [0112] The various illustrative logical blocks, modules, routines, and algorithm steps described in connection with the embodiments disclosed herein can be implemented as electronic hardware, or combinations of electronic hardware and computer software. To clearly illustrate this interchangeability, various illustrative components, blocks, modules, and steps have been described above generally in terms of their functionality. Whether such functionality is implemented as hardware, or as software that runs on hardware, depends upon the particular application and design constraints imposed on the overall system. The described functionality can be implemented in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the disclosure.

[0113] Moreover, the various illustrative logical blocks and modules described in connection with the embodiments disclosed herein can be implemented or performed by a machine, such as a general purpose processor device, a digital signal processor (DSP), an application specific integrated circuit (ASIC), a field programmable gate array (FPGA) or other programmable logic device, discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein. A control processor can synthesize a model for an FPGA. For example, the control processor can synthesize a model for logical programmable gates to implement a tensor array and/or a pixel array. The control channel can synthesize a model to connect the tensor array and/or pixel array on an FPGA, a reconfigurable chip and/or die, and/or the like. A general purpose processor device can be a microprocessor, but in the alternative, the processor device can be a controller, microcontroller, or state machine, combinations of the same, or the like. A processor device can include electrical circuitry configured to process computer-executable instructions. In another embodiment, a processor device includes an FPGA or other programmable device that performs logic operations without processing computer-executable instructions. A processor device can also be implemented as a combination of computing devices, e.g., a combination of a DSP and a microprocessor, a plurality of microprocessors, one or more microprocessors in conjunction with a DSP core, or any other such configuration. Although described herein primarily with respect to digital technology, a processor device may also include primarily analog components. For example, some or all of the algorithms described herein may be implemented in analog circuitry or mixed analog and digital circuitry. A computing environment can include any type of computer system, including, but not limited to, a computer system based on a microprocessor, a mainframe computer, a digital signal processor, a portable computing device, a device controller, or a computational engine within an appliance, to name a few.

[0114] The elements of a method, process, routine, or algorithm described in connection with the embodiments disclosed herein can be embodied directly in hardware, in a software module executed by a processor device, or in a combination of the two. A software module can reside in RAM memory, flash memory, ROM memory, EPROM memory, EEPROM memory, registers, hard disk, a removable disk, a CD-ROM, or any other form of a non-transitory computer-readable storage medium. An exemplary storage medium can be coupled to the processor device such that the processor device can read information from, and write information to, the storage medium. In the alternative, the storage medium can be integral to the processor device. The processor device and the storage medium can reside in an ASIC. The ASIC can reside in a user terminal. In the alternative, the processor device and the storage medium can reside as discrete components in a user terminal.

[0115] Conditional language used herein, such as, among others, "can," "could," "might," "may," “e.g.,” and the like, unless specifically stated otherwise, or otherwise understood within the context as used, is generally intended to convey that certain embodiments include, while other embodiments do not include, certain features, elements and/or steps. Thus, such conditional language is not generally intended to imply that features, elements and/or steps are in any way required for one or more embodiments or that one or more embodiments necessarily include logic for deciding, with or without other input or prompting, whether these features, elements and/or steps are included or are to be performed in any particular embodiment. The terms “comprising,” “including,” “having,” and the like are synonymous and are used inclusively, in an open-ended fashion, and do not exclude additional elements, features, acts, operations, and so forth. Also, the term “or” is used in its inclusive sense (and not in its exclusive sense) so that when used, for example, to connect a list of elements, the term “or” means one, some, or all of the elements in the list.

[0116] While the above detailed description has shown, described, and pointed out novel features as applied to various embodiments, it can be understood that various omissions, substitutions, and changes in the form and details of the devices or algorithms illustrated can be made without departing from the spirit of the disclosure. As can be recognized, certain embodiments described herein can be embodied within a form that does not provide all of the features and benefits set forth herein, as some features can be used or practiced separately from others.

[0117] The herein described subject matter sometimes illustrates different components contained within, or connected with, different other components. It is to be understood that such depicted architectures are merely exemplary, and that in fact many other architectures can be implemented which achieve the same functionality. In a conceptual sense, any arrangement of components to achieve the same functionality is effectively "associated" such that the desired functionality is achieved. Hence, any two components herein combined to achieve a particular functionality can be seen as "associated with" each other such that the desired functionality is achieved, irrespective of architectures or intermedial components. Likewise, any two components so associated can also be viewed as being "operably connected," or "operably coupled," to each other to achieve the desired functionality, and any two components capable of being so associated can also be viewed as being "operably couplable," to each other to achieve the desired functionality. Specific examples of operably couplable include but are not limited to physically mateable and/or physically interacting components and/or wirelessly interactable and/or wirelessly interacting components and/or logically interacting and/or logically interactable components.

[0118] With respect to the use of substantially any plural and/or singular terms herein, those having skill in the art can translate from the plural to the singular and/or from the singular to the plural as is appropriate to the context and/or application. The various singular/plural permutations may be expressly set forth herein for sake of clarity.

[0119] It will be understood by those within the art that, in general, terms used herein, and especially in the appended claims (e.g., bodies of the appended claims) are generally intended as "open" terms (e.g., the term "including" should be interpreted as "including but not limited to," the term "having" should be interpreted as "having at least," the term "includes" should be interpreted as "includes but is not limited to," etc.). It will be further understood by those within the art that if a specific number of an introduced claim recitation is intended, such an intent will be explicitly recited in the claim, and in the absence of such recitation no such intent is present. For example, as an aid to understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed to imply that the introduction of a claim recitation by the indefinite articles "a" or "an" limits any particular claim containing such introduced claim recitation to inventions containing only one such recitation, even when the same claim includes the introductory phrases "one or more" or "at least one" and indefinite articles such as "a" or "an" (e.g., "a" and/or "an" should typically be interpreted to mean "at least one" or "one or more"); the same holds true for the use of definite articles used to introduce claim recitations. In addition, even if a specific number of an introduced claim recitation is explicitly recited, those skilled in the art will recognize that such recitation should typically be interpreted to mean at least the recited number (e.g., the bare recitation of "two recitations," without other modifiers, typically means at least two recitations, or two or more recitations). Furthermore, in those instances where a convention analogous to "at least one of A, B, and C, etc." is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., "a system having at least one of A, B, and C" would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). In those instances, where a convention analogous to "at least one of A, B, or C, etc." is used, in general such a construction is intended in the sense one having skill in the art would understand the convention (e.g., "a system having at least one of A, B, or C" would include but not be limited to systems that have A alone, B alone, C alone, A and B together, A and C together, B and C together, and/or A, B, and C together, etc.). It will be further understood by those within the art that virtually any disjunctive word and/or phrase presenting two or more alternative terms, whether in the description, claims, or drawings, should be understood to contemplate the possibilities of including one of the terms, either of the terms, or both terms. For example, the phrase "A or B" will be understood to include the possibilities of "A" or "B" or "A and B." Further, unless otherwise noted, the use of the words “approximate,” “about,” “around,” “substantially,” etc., mean plus or minus ten percent.

[0120] The foregoing description of illustrative embodiments has been presented for purposes of illustration and of description. It is not intended to be exhaustive or limiting with respect to the precise form disclosed, and modifications and variations are possible in light of the above teachings or may be acquired from practice of the disclosed embodiments. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.