The technical field of the disclosure relates to magneto-resistive memory and more specifically, to read and write access to magneto-resistive memory elements within random access memory (RAM) arrays.
Magneto-resistive memory (hereinafter “resistive memory”) is considered a promising technology for next generation non-volatile memory, as potential features include fast switching, high switching cycle endurance, low power consumption, and extended unpowered archival storage.
A conventional resistive memory element includes a “fixed” magnetization layer and a “free” magnetization layer that is switchable between two mutually opposite, stable magnetization states—one being “parallel” (P) to the magnetization of the fixed layer, and the other being opposite, or anti-parallel” (AP), to the fixed magnetic layer. The resistive memory element has an electrical resistance in its P state lower than its resistance when in its AP state. The P-AP state of the resistive element can therefore be read by detecting its resistance. By assigning one of the P and AP states to represent a first binary value, e.g., a “0”, and the other to represent a second binary value, e.g., a “1” the resistive memory element can be a binary, i.e., one-bit storage.
Applications of resistive memory include random access memory (RAM) formed of arrays of individually addressable resistive memory elements. Such memory devices can be referred to a resistive memory RAM or “MRAM.”
One characteristic of resistive memory elements can be the write speed being significantly slower than the read speed. A general reason is that switching the free magnetization layer to a desired one of its P and AP states may require passing a write current through the resistive memory element that, in addition to having greater magnitude than the read current, must be maintained for a substantially longer duration.
In certain applications, for example, multiple-port cache memory differences between read and write speed can incur contention and delay costs, for example, wait time placed on read operations. Such delays can cause system degradation.
Exemplary embodiments provide, among other features and benefits, write-while-write, read-while-write, and read-while read enabling concurrent access of multiple sub-banks of a single-port multiple sub-bank MRAM. Among other features and benefits, read-while-write aspects of exemplary embodiments can avoid system delay due to write accesses being significantly longer in duration that read accesses. Among further features and benefits, read-while-read aspects of exemplary embodiments can provide a doubling, or further increase in read access rate, without necessitating costly techniques of reducing MRAM read access time.
One example environment for example methods according to one or more embodiments can include a memory having a first memory cell array, a second memory cell array, a data in port, a data out port, and a command/address port. Features of example methods, for read or read/write, can include receiving a clock, wherein the clock includes a first edge, a second edge and a third edge, spaced apart by a clock period, and receiving, in association with the first edge, a command at the command/address port to access a memory cell in the first memory cell array. Features of example methods can further include, in response to the command to access a memory cell in the first memory cell array, accessing the memory cell over a first interval, wherein the first interval begins prior to the second edge and extends past the second edge. In an aspect, features of example methods can include receiving, in association with the second edge, a command at the command/address port to access a memory cell in the second memory cell array. Further to that aspect, features of example methods can include, in response to the command to access a memory cell in the second memory cell array, accessing said memory cell over a second interval, wherein the second interval overlaps the first interval.
In an aspect, features of example methods according to one or more exemplary embodiments can further include, in association with the first edge, receiving a data in, and the command to access a memory cell in the first memory cell array can include a command to write the data in to the memory cell in the first memory cell array. In an aspect, features of example methods can further include writing the data in to the memory cell over the first interval and, according to one aspect, the first interval can be a write interval, and the write interval can extend past the third edge.
In an aspect, in one example operation of example methods according to one or more exemplary embodiments, the clock can further include a fourth edge spaced one clock period after the third edge. In a further aspect, features of example methods can also include receiving, in association with the third edge, another data in and a command to write the another data in to a memory cell in the second memory cell array. In an aspect, further features of example methods can include, in response to the command to write the another data in to a memory cell in the second memory cell array, writing the another data in to the memory cell over a third interval, and the third interval can overlap the first interval by more than one clock period.
Another environment for other example methods according to one or more embodiments can include a memory having a first memory cell array, a second memory cell array, a data in port, and an address port. Features of example methods can include receiving an address on the address port and, based on the address, transmitting an internal address, receiving the internal address by a first address latch and holding the internal address on the first address latch as a first array address, over a first interval. In an aspect, features of example methods can include accessing the first memory cell array, during the first interval, based on the first array address. In an aspect, features of example methods can also include receiving another address on the address port and, based on the another address, transmitting another internal address. Features of example methods can further include receiving the another internal address by a second address latch and holding the another internal address on the second address latch as a second array address, over a second interval. In an aspect, the second interval can overlap the first interval. Features of example methods according to one or more exemplary embodiments can include accessing the second memory cell array, during the second interval, based on the second array address.
In one example resistive memory cell device according to one or more exemplary embodiments, features can include an address bus and a control block configured to receive an externally generated address, a command and a clock and, in response, transmit an internal address on the address bus, and generate a first sub-bank address latch control and a second sub-bank address latch control. Example features can further include a first sub-bank having a first array of resistive memory cells and a first sub-bank latching address circuitry that can be configured to access a resistive memory cell in the first array of resistive memory cells according to a value of the internal address and maintain the access over a first interval based on the first sub-bank address latch control. Example features, according to one or more exemplary embodiments can further include a second sub-bank having a second array of resistive memory cells and a second latching array address circuitry that can be configured to access a resistive memory cell in the second array of resistive memory cells according to an updated value of the internal address and maintain said access over a second interval based on the second sub-bank address latch control. In an aspect, the control block can be configured to generate the first sub-bank address latch control and the second sub-bank address latch control so that the second interval overlaps the first interval.
In aspect, the first array of resistive memory cells can include a plurality of first array word lines and a plurality of first array bit lines, and resistive memory cells associated with intersections of the first array word lines and first array bit lines. In a further aspect, features of the first sub-bank latching access circuitry can include a first sub-bank address latch having an input coupled to the address bus, and a first sub-bank address latch output, a first array row decoder configured to receive a row field of the first sub-bank address latch output and, in response to a value of the row field, enable a corresponding one of the first array word lines, and a first array bit line selector configured to receive a bit field of the first sub-bank address latch output and, in response to a value of the bit field, enable a corresponding one of the first array bit lines.
The accompanying drawings found in the attachments are presented to aid in the description of embodiments of the invention and are provided solely for illustration of the embodiments and not limitation thereof.
Aspects of the invention are disclosed in the following description and related drawings directed to specific embodiments of the invention. Alternate embodiments may be devised without departing from the scope of the invention. Additionally, well-known elements of the invention will not be described in detail or will be omitted so as not to obscure the relevant details of the invention.
The word “exemplary” is used herein to mean “serving as an example, instance, or illustration.” Any embodiment described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments. Likewise, the term “embodiments of the invention” does not require that all embodiments of the invention include the discussed feature, advantage or mode of operation.
The terminology used herein is for describing particular embodiments only and is not intended to be limiting of embodiments of the invention. As used herein, the singular forms “a”, “an” and “the” are intended to include the plural forms as well, unless the context clearly indicates otherwise. It will be further understood that the terms “comprises”, “comprising,”, “includes” and/or “including”, when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Further, many embodiments are described in terms of sequences of actions to be performed by, for example, elements of a computing device. It will be recognized that various actions described herein can be performed by specific circuits (e.g., application specific integrated circuits (ASICs)), by program instructions being executed by one or more processors, or by a combination of both. Additionally, these sequence of actions described herein can be considered to be embodied entirely within any form of computer readable storage medium having stored therein a corresponding set of computer instructions that upon execution would cause an associated processor to perform the functionality described herein. Thus, the various aspects of the invention may be embodied in a number of different forms, all of which have been contemplated to be within the scope of the claimed subject matter. In addition, for each of the embodiments described herein, the corresponding form of any such embodiments may be described herein as, for example, “logic configured to” perform the described action.
Those of skill in the art will appreciate that information and signals may be represented using any of a variety of different technologies and techniques. For example, data, instructions, commands, information, signals, bits, symbols, and chips that may be referenced throughout the above description may be represented by voltages, currents, electromagnetic waves, magnetic fields or particles, optical fields, electron spins particles, electrospins, or any combination thereof.
Further, those of skill in the art will appreciate that the various illustrative logical blocks, modules, circuits, and algorithm steps described in connection with the embodiments disclosed herein may be implemented as electronic hardware, computer software, or combinations of both. In accordance with the interchangeability of hardware and software for implementing aspects, various illustrative components, blocks, modules, circuits, and steps are described generally in terms of their functionality. Whether such functionality is implemented as hardware or software depends upon the particular application and design constraints imposed on the overall system. Skilled artisans may implement the described functionality in varying ways for each particular application, but such implementation decisions should not be interpreted as causing a departure from the scope of the present invention.
Continuing to refer to
In like manner, the second sub-bank 112 has a second sub-bank decoder 118 that based, for example, on a row field (not explicitly labeled) of the ADDR selects among a plurality of (e.g., M) word lines, of which an exemplary one word line is shown and labeled WL_b1. The second sub-bank 112 has an associated second bank read/write bit line selector 120 (hereinafter “second sub-bank R/W BL selector” 120) that based, for example, on a column field “CF_1” of the ADDR, selects a bit line among a plurality of (e.g., N) bit lines (shown but not separately labeled). Bit line selection of the second sub-bank R/W BL selector 120 can be provided by, for example, a read multiplexer and a write multiplexer (shown but not separately numbed).
The read multiplexer of each of the first sub-bank R/W BL selector 116 and second sub-bank R/W BL selector 120, when operative, is an N:1 (N being the number of bit lines) switch. The N:1 switch operation selects one of the N bit lines of its corresponding sub-bank (i.e., first sub-bank 110 or second sub-bank 112) for input to that sub-bank's sense amplifier (S/A), i.e., the first sub-bank sense amplifier 122 (hereinafter “first sub-bank S/A amplifier 122”) or the second sub-bank sense amplifier 124 (hereinafter “second sub-bank S/A amplifier 124”). Only one of the first sub-bank S/A 122 and second sub-bank S/A 124 can be enabled at a time, since their respective outputs (not separately numbered) are connected together as the “gdout” signal that feeds the data output buffer 104. The selective enabling of the first sub-bank S/A 122 and second sub-bank S/A 124 can be provided by the “sen_b0” and “sen_b1” signals, described later in further detail.
Referring to
A sequence of two read accesses on the
Referring to
Continuing to refer to
For reasons including electrical characteristics of MC1, a settling time 208 is required for the read voltage to enable sufficient sensing accuracy by the second sub-bank S/A 124. Reasons for the settling time 208 are known to persons of ordinary skill in the art and, therefore, further detailed description is omitted. The sum of the time 206 and the settling time 208 may be referred to as a “read latency” (not separately labeled on
Continuing with the example read of MC1 that started at CKA0, at CKA2—two CLK cycles after CKA0—the read value dout(bk1) appears at the output of the data output buffer 104. Therefore, at CKA2, the internal access capabilities of SP/MB MRAM 100 are now freed. Accordingly, in this example, at CKA2 another read request, shown as RD 216 with read address “bk0” 218, can be presented to the control block 108. The SP/MB MRAM 100 can then perform another read operation, and generate a corresponding dout(bk0) at 220, which is at CKA4—two CK cycles after CKA2. Examples of succeeding, like-manner read operations are shown but not separately numbered.
As described, the read latency spans two CLK cycles, i.e., from CKA0 to CKA2. Since SP/MB MRAM 100 is a single port device, this read latency means that for two CLK cycles the device is not available as a memory resource to other operations, even if such operations are an access to the other, i.e., first sub-bank 110. Therefore, for SP/MB MRAM 100, the maximum read access rate is one-half the CLK frequency.
One potential solution to this read access rate limit of one-half the CLK frequency can include latency reduction methods, such as layout optimization, and/or tighter fabrication tolerances, to reduce the latency to less than one CLK cycle. However, conventional single-port, multiple sub-bank MRAM techniques can also have a write latency limitation. More particularly, according to conventional MRAM techniques, obtaining acceptable storage accuracy, e.g., bit error rate, may require a write current duration significantly longer than the duration for the read current. One example is later described in reference to
The above-identified write latency limitation of conventional single-port, multiple sub-bank access devices will be illustrated by an example sequence of write and read access on the
Referring to
Continuing with the example write access that started at CKB0, in accordance with conventional MRAM write techniques, to attain acceptable writing accuracy, e.g., bit error rate, the duration WDT of the write current WC (din) 270 is generally significantly longer than required for read current. The specific value of WDT can be application-specific, and may be determined by combinations of factors for which description is beyond the subject matter pertinent to understanding the embodiments. However, it may be significantly longer than the read duration. For illustrative purposes, the timing diagram 200B shows WDT greater than three CLK periods. As can be seen, a result is that the write MC0 that started at CKB0 prevents the
One example resistive memory cell device according to one or more exemplary embodiments can include an address bus, a controller configured to receive an external address, a command and a clock and, in response, transmit an internal address on the address bus, and generate a first sub-bank address latch control and a second sub-bank address latch control. In an aspect, one example memory device can include a first sub-bank and a second sub-bank. In one further aspect, the first sub-bank can have a first array of resistive memory cells and a first sub-bank latching access circuitry. In an aspect, the first sub-bank latching address circuitry can be configured to access a resistive memory cell in the first array of resistive memory cells according to a value of the internal address and maintain the access over a first interval based on the first sub-bank address latch control. In a related aspect, the second sub-bank can have a second array of resistive memory cells and a second latching array address circuitry. Further to this example, the second latching array access circuitry can be configured to access a resistive memory cell in the second array of resistive memory cells according to an updated value of the internal address and maintain that access over a second interval. In an aspect, the second interval can be based on the second sub-bank address latch control, and further to this aspect, the control block can be configured to generate the first sub-bank address latch control and the second sub-bank address latch control so that the second interval overlaps the first interval.
To avoid possible obfuscation of concepts by detailed description of new example blocks not necessarily specific to the embodiments, the example MCA MRAM 300 uses certain blocks from the
Referring to
Continuing to refer to
In an aspect, the first sub-bank ADDR latch 312 and the second sub-bank ADDR latch 314 may be implemented as transparent pulse latches. Implementation as transparent pulse latches can provide, for example, immediate pass through to the outputs of the first sub-bank ADDR latch 312 and the first sub-bank ADDR latch 314 without waiting for a CLK edge and, after latching, maintaining the latch output state irrespective of changes on the CAA bus. Various techniques for transparent pulse latches are known, and can be adapted to this disclosure by persons of ordinary skill in the art without undue experimentation. Detailed description of their implementation is therefore omitted. It will be understood that embodiments are not limited to transparent pulse latch implementation of the first sub-bank ADDR latch 312 and the second sub-bank ADDR latch 314. On the contrary, upon reading this disclosure persons of ordinary skill in the art can adapt the example operations to implementations with fully clocked, non-transparent multiple bank latches, without undue experimentation.
In an aspect, described in further detail in later sections, the CA control block 310 can be configured to dynamically control, according to various sequences of CMDs, the latching and the transparency state of the first sub-bank ADDR latch 312 and the second sub-bank ADDR latch 314. As will be appreciated from this disclosure, configurations of the CA control block 310 for controlling the latching and the transparency of the first sub-bank ADDR latch 312 and the second sub-bank ADDR latch 314 can provide the MCA MRAM 300 the capability, while accessing one of the first sub-bank 110 and the second sub-bank 112, of accessing the other.
The first sub-bank R/W BL selector 116, the second sub-bank R/W BL selector 120, the first sub-bank S/A 122 and the second sub-bank S/A 124 can be as previously described.
Circuitry according to the MCA MRAM 300 can provide one example implementation of a first sub-bank having a first array of resistive memory cells and a first sub-bank latching access circuitry, and a second sub-bank having a second array of resistive memory cells and a second sub-bank latching access circuitry. One example implementation of the first array of resistive memory cells can include the first sub-bank 110, and one example implementation of the second array of resistive memory cells can include second sub-bank 112. One example implementation of the first sub-bank latching address circuitry can include the first sub-bank ADDR latch 312, the first sub-bank decoder 114, and the first sub-bank R/W BL selector 116. One example implementation of the second sub-bank latching address circuitry can include the second sub-bank ADDR latch 314, the second sub-bank decoder 118, and the second sub-bank R/W BL selector 120.
Continuing to refer to
In an aspect, as described in further detail in later sections, the CA control block 310 may be configured to control the first sub-bank gdin latch 318 and the second sub-bank gdin latch 328 to selectively latch the gdin bus having the din received at the data-in port 304. Among other features and benefits, this aspect, in combination with the CA control block 310 selectively controlling the first sub-bank ADDR latch 312 and the second sub-bank ADDR latch 314, can provide the MCA MRAM 300 with various read-while-write or write-while-write capabilities. For example, in operations according to one aspect, the first sub-bank gdin latch 318 can latch a din as a “latched write data.” The latched write data output by the first sub-bank gdin latch can provide continued writing of that data to the first sub-bank 110, thereby freeing the gdin bus for another din for writing to the second sub-bank 112. Likewise, the second sub-bank gdin latch 324 can latch the gdin bus and provide continued writing of that now-latched din to the second sub-bank 110, freeing the gdin bus for another din for writing to the first sub-bank 110.
In an aspect, the first sub-bank gdin latch 318 and the second sub-bank gdin latch 324 may be implemented as transparent pulse latches. This can provide the previously described benefit of passing the latch input straight to the latch output without a CLK edge. After latching, the transparent pulse latch is in a latched mode, which maintains the latch output state irrespective of state changes on the gdin bus. As also previously described, various techniques for switchable transparency latches are known, and can be adapted to this disclosure by persons of ordinary skill in the art without undue experimentation. Detailed description of their implementation is therefore omitted. In one alternative embodiment, upon reading this disclosure, persons of ordinary skill in the art can implement the first sub-bank gdin latch 318 and the second sub-bank gdin latch 324 with fully clocked, non-transparent multiple bank latches, without undue experimentation.
Referring to
Example operations showing read/write while read/write according to one or more exemplary embodiments will be described in reference to the MCA MRAM 300. It will be understood, though, that exemplary embodiments are not limited to the MCA MRAM 300. Read while read operations of methods according to a general embodiment can be performed on other single port memories having a first and a second memory cell array, an address port or combination address/command port, an internal address bus and, for each of the first and second memory cell arrays, an address latch. Example operations of read while read in methods according to one general embodiment may include, receiving an address on the address port and, based on the address, transmitting an internal address that can be received by both a first address latch and a second address latch. The address may be a portion of a read command. A controller can be configured to control a transparency pass through, and latching of the internal address by the first address latch and the second address latch. Assuming, as one example, that the address received on the address port corresponds to a memory cell in the first memory cell array, the controller may control the first address latch, upon receiving the internal address to provide a holding the internal address on the first address latch as a first array address, over a first interval. In an aspect, operations can include accessing the first memory cell array, during the first interval, based on the first array address. In an aspect, operations can include receiving, during the first interval, another address on the address port and, based on the another address, transmitting another internal address. Assuming the another address received on the address port corresponds to a memory cell in the second memory cell array, the controller may control the second address latch, upon receiving the another internal address, to provide a holding the another internal address on the second address latch as a second array address, over a second interval. In methods according to one or more exemplary embodiments, the second interval overlaps the first interval. In an aspect, operations can include accessing the second memory cell array, during the second interval, based on the second array address.
In operations of methods according to one or more exemplary embodiments, in transmitting the internal address may include transmitting the internal address over an address bus to an input of the first address latch. In an aspect, both the first address latch and the second address latch can have their respective inputs coupled to the address bus. However, the control block can control the first address latch and the second address latch such that only one operates to pass through and latch the state of that address bus.
Operations of methods according to one or more exemplary embodiments can further include receiving a clock having a clock period, the clock including a first edge, a second edge and a third edge, in succession, respectively spaced by the clock period. In an aspect receiving the first address may be in association with the first edge and, in a further aspect, a holding of the internal address on the first address latch—as the first array address—can include latching the internal address on an output of the first address latch prior to the second edge. In an aspect, the receiving the second address can be in association with the second edge. In a related aspect, holding the another internal address on the second address latch includes latching the another internal address on an output of the second address latch prior to the third edge.
Referring to
One example of a latching the internal address corresponding to the first read address as a latched first internal address for a first interval may be, or may include, the first sub-bank ADDR latch 312 latching the state of the CAA bus, for an interval determined by the CA control block 310. Further to this example, one example accessing over the first interval a cell in the first memory cell array, based on the latched first internal address, can include the first sub-bank decoder selecting WL_b0 and the first sub-bank R/W BL selector 116 selecting BL_b0. Assuming the accessing is a read, an accessing over the first interval of a cell in the first memory cell array, based on the latched first internal address, can include the CA control block 310 generating sen_b0 for the first sub-bank read/write enable drivers 130 to enable the first sub-bank S/A 126. The read of MC0 is then output from the read data from the data out port 306. Another example of accessing a cell in the first memory cell array over the first interval can include driving a write current through MC0. This can be provided by the CA control block 310 controlling the first bank gdin latch 318 to capture a data in received through the data in bus 304, and generating bsel_b0 to enable the first sub-bank SE write driver S/A 126, combined with the write multiplexor of the first sub-bank R/W BL selector 116 selecting the BL_b0.
The above-described examples according to various exemplary embodiment include features of latching the internal access address, i.e., an address prior to decoding to the word line and bit line of the addressed resistive memory cell. One example alternative embodiment (not explicitly visible in the figures) is to latch the word line and the bit line. Referring to
It will be appreciated that circuitry according to example implementation above can be one implementation of one general example. The general example can comprise a first array of resistive memory cells having a plurality of first array word lines and a plurality of first array bit lines, and resistive memory cells associated with intersections of the first array word lines and first array bit lines. The first sub-bank latching access circuitry can comprise a first array row decoder configured to receive a row field of the internal address and, in response to a value of the row field, select a corresponding one of the first array word lines. The first array word line latch can be configured to latch the corresponding one of the first array word lines at an enabled state over the first interval. A first array bit line selector can be configured to receive a bit field of the internal address and, in response to a value of the bit field, select a corresponding one of the first array bit line. A first array bit line latch can be configured to latch the corresponding one of the first array bit lines at an enabled state over the first interval.
Referring to
Example operations relative to the timing diagram 500 are described assuming the first sub-bank ADDR latch 312, the second sub-bank ADDR latch 314, the first bank gdin latch 318, and the second gdin latch 324 (collectively, “concurrent access latches”) are transparent pulse latches. Accordingly, the timing diagram 500 assumes latch inputs can pass through to latch outputs without a CLK edge. The timing diagram also assumes conventional transparent pulse latch operation of latching the input state on a transition from the transparent mode to latched mode, where a change on the latch input will not change the latch output. It will be understood that description assuming transparent pulse latches is not intended to, and does not limit the scope of any exemplary embodiments. For example, upon reading this disclosure, persons of ordinary skill in the art can adapt the timing diagram 500 and example operations to implementations with fully clocked, non-transparent concurrent access latches, without undue experimentation.
The timing diagram 500 assumes the CA control block 310 is implemented by the
To illustrate certain aspects, the timing diagram 500 assumes the MCA MRAM 300 is configured and fabricated to have a one CLK read latency. This is only for illustration, and is not intended as limiting the scope of any exemplary embodiments of aspects of the same. On the contrary, examples of read-while-read access on an MCA MRAM implementation having a two CLK read latency are described in reference to
Referring to
Referring to
In an aspect, starting at some logic delay after the second edge CKC1, while the WR 502 write process to MC0 in the first sub-bank 110 is in progress, a read access of the second sub-bank 112 may be performed. One example according to this “read-while write” aspect will now be described.
At a time preceding the second edge CKC1 to meet set-up requirements, and while BL_b0 is maintaining WC(506) through MC0 as described above, a RD (read command) 516 with second sub-block address bk1518 may be received at the ADDR/CMD port 308.
In an aspect, the CA control block 310 may be configured to respond to this reception at the second edge CKC1 by: i) continuing, at 520, to generate bsel_b0 at the value corresponding to WR 502; and ii) controlling the first sub-bank ADDR latch 312 to latch RA(504) and the first bank gdin latch 318 to latch din 506. Referring to the timing diagram 500, controlling the first sub-bank ADDR latch 312 to latch RA (504) is shown as 522. Controlling the first bank gdin latch 318 to latch din 506 is reflected by the event 524 of the BL_b0 line continuing to carry the write current WC (506). In an aspect, the first sub-bank ADDR latch 312 and first bank gdin latch 318 may be configured, or controlled, or both, to be non-transparent after the above-described latching operations until a release (not explicitly visible in
Continuing with description of example accesses, in response to the RD 516 and corresponding bk1518, the CA control block 310 can pass to the CAA bus the internal address it generates in response to bk1518. As previously described, in one example, the internal address can be the entire bk1518. Both the first sub-bank ADDR latch 312 and the second sub-bank ADDR latch 314 receive the CAA bus but, in an aspect, the CA control block 310 maintains the latched state of the first sub-bank ADDR latch 312 and switches the second sub-bank ADDR latch 314 to a transparent state. The second sub-bank ADDR latch 314, being transparent (or in a transparent mode), passes the row or word line field of bk1518 to the second sub-bank decoder 118. The second sub-bank decoder 118, in turn, enables at 526 the WL_b1 word line to MC1.
As previously described, the timing diagram 500 assumes the MCA MRAM 300 is configured and fabricated to have a one CLK read latency. Therefore, at CKC2, one CLK edge after the second edge CKC1, the dout (RD 516) result of the RD 516 read of MC1 is output from the data-out port 306.
In an aspect, starting at CKC2, while the WR 502 write process to MC0 in the first sub-bank 110 remains in progress, write access of the second sub-bank 112 may also be performed. One example according to this “write-while write” aspect will now be described. It will be understood that the write-while-write may have commenced at the second edge CKC1 but, for this example, the above-described read while-write—initiated by RD 516—was performed.
Referring to
Concurrent, or approximately concurrent with the enabling at 540 of the AL_b1 line, the write multiplexer of the second sub-bank R/W BL selector 120 couples the output of the second sub-bank latching write driver 322 to the bit line, BL_b1 of the MC1 cell. It may be assumed that the latency of the write multiplexer of the second sub-bank R/W BL selector 120 is not significant and, therefore, it is omitted from
The above-described write-while-write may render both the first sub-bank 110 and the second sub-bank 112 not accessible for an interval. It will be understood that this not a limit of the exemplary embodiments and, instead, is an implementation-specific limitation due to the example quantity of sub-banks, namely two, being less than the example write latency of three. Persons of ordinary skill in the art, upon reading this disclosure in its entirety, can readily implement a four sub-bank variation of the MCA MRAM 300, in accordance with various exemplary embodiments, without undue experimentation.
Referring again to
As illustrated by the examples described in reference to
In an aspect, operations of example methods according to one or more exemplary embodiments, the clock further can include a fourth edge spaced one clock period after the third edge. In a further aspect, operations in example methods can include receiving, in association with the third edge, another data in and a command to write the another data in to a memory cell in the second memory cell array. Operations in example methods can include, in response to the command to write the another data in to a memory cell in the second memory cell array, writing the another data in to said memory cell over a third interval, wherein the third interval overlaps the first interval by more than one clock period.
Referring to
As previously described, the timing diagram 600 assumes MCA MRAM 300 is configured and/or fabricated to meet a slower, e.g., two-CLK read latency. Accordingly, it is assumed that at CKD1 the voltage (not explicitly visible on
In response to the RD 610 and corresponding bk0612, the CA control block 310 can distribute on the CAA bus an internal address corresponding to bk0612 and switch the first sub-bank ADDR latch 312 to a transparent mode. The first sub-bank ADDR latch 312 therefore passes to the input of the first sub-bank decoder 114 the row or word line field of the internal address corresponding to bk0612. The second sub-bank ADDR latch 314, though, is maintained at 608 in its latched state holding the CAA bus address corresponding to bk1604. The first sub-bank decoder 114, in turn, enables at 614 the WL_b0 word line to MC0, as shown by the label as “RA (bk0, 612).” Concurrent with the first sub-bank ADDR latch 312 passing the row or word line field of the internal address corresponding to bk0612 to the first sub-bank decoder, the first sub-bank ADDR latch 312 passes the column or bit line field of the internal address corresponding to bk0612 to the first sub-bank R/W BL selector 116. In response, the read multiplexer of the first sub-bank R/W BL selector 116 connects the MC0 bit line, BL_b0, to the input of the first sub-bank S/A 122. As described for the read corresponding to RD 602, a read current may pass through BL_b0 to establish voltage (not explicitly visible on
At 616, the CA control block 310 generates sen_b1, which enables the second bank S/A 124, causing at 618 the read result dout (bk1, 604) to output from the data-out port 306.
At a time (shown but not separately labeled) preceding the third edge CKD2 to meet set-up, an RD 620 and corresponding read address bk1622 are received at the ADDR/CMD port 308. In response to the RD 620 and corresponding bk1622, the CA control block 310 can distribute on the CAA bus an internal address corresponding to bk1622 and switch the second sub-bank ADDR latch 314 to a transparent mode. The second sub-bank ADDR latch 314 therefore passes to the input of the second sub-bank decoder 118 the row or word line field of the internal address corresponding to bk1622. The first sub-bank ADDR latch 312, though, is maintained at 624 in its latched state holding the CAA bus address corresponding to bk0612. The second sub-bank decoder 118, in turn, enables at 626 the WL_b1 word line to MC1, as shown by the label as “RA (bk1, 612).” Concurrent with the second sub-bank ADDR latch 314 passing the row or word line field of the internal address corresponding to bk1622 to the second sub-bank decoder 118, the second sub-bank ADDR latch 314 passes the column or bit line field of the internal address corresponding to bk1622 to the second sub-bank R/W BL selector 120. In response, the read multiplexer of the second sub-bank R/W BL selector 120 connects the MC1 bit line, BL_b1, to the input of the second sub-bank S/A 128. As described for the read corresponding to RD 602, a read current may pass through BL_b1 to establish voltage (not explicitly visible on
At 628, the CA control block 310 generates sen_b0, which enables the first sub-bank S/A 122, causing at 630 the read result dout (bk0, 612) to output from the data-out port 306.
At a time (shown but not separately labeled) preceding the fourth edge CKD3 to meet set-up, an RD 632 and corresponding read address bk0634 are received at the ADDR/CMD port 308. At CKD3, the CA control block 310 controls the first sub-bank ADDR latch 312 to latch, at 636, the RA (bk1, 622) and continue the read of MC1. In response to the RD 632 and corresponding bk0634, the CA control block 310 can distribute on the CAA bus an internal address corresponding to bk0634 and switch the first sub-bank ADDR latch 312 to a transparent mode. The first sub-bank ADDR latch 312 therefore passes to the input of the first sub-bank decoder 112 the row or word line field of the internal address corresponding to bk0634. The second sub-bank ADDR latch 314, though, is latched at 636 to hold on its output the CAA bus address corresponding to bk1622. The first sub-bank decoder 114, in response to receiving the row or word line field of the internal address corresponding to bk0634, enables at 638 the WL_b0 word line to MC0, as shown by the label as “RA (bk0, 634).” Concurrent with the first sub-bank ADDR latch 312 passing the row or word line field of the internal address corresponding to bk0634 to the first sub-bank decoder 114, the first sub-bank ADDR latch 312 passes the column or bit line field of the internal address corresponding to bk0634 to the first sub-bank R/W BL selector 116. In response, the read multiplexer of the first sub-bank R/W BL selector 116 connects the MC0 bit line, BL_b0, to the input of the first sub-bank S/A 126. As described for the read corresponding to RD 610, a read current may pass through BL_b0 to establish voltage (not explicitly visible on
At 640, the CA control block 310 generates sen_b1, which enables the second bank S/A 124, causing at 642 the read result dout (bk1, 622) to output from the data-out port 306.
Referring to
Referring to
In
The methods, sequences and/or algorithms described in connection with the embodiments disclosed herein may be embodied directly in hardware, in a software module executed by a processor, or in a combination of the two. A software module may 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 storage medium known in the art. An exemplary storage medium is coupled to the processor such that the processor can read information from, and write information to, the storage medium. In the alternative, the storage medium may be integral to the processor.
Accordingly, an embodiment of the invention can include a computer readable media embodying a method for implementation. Accordingly, the invention is not limited to illustrated examples and any means for performing the functionality described herein are included in embodiments of the invention.
The foregoing disclosed devices and functionalities may be designed and configured into computer files (e.g., RTL, GDSII, GERBER, etc.) stored on computer readable media. Some or all such files may be provided to fabrication handlers who fabricate devices based on such files. Resulting products include semiconductor wafers that are then cut into semiconductor die and packaged into a semiconductor chip. The chips are then employed in devices described above.
While the foregoing disclosure shows illustrative embodiments of the invention, it should be noted that various changes and modifications could be made herein without departing from the scope of the invention as defined by the appended claims. The functions, steps and/or actions of the method claims in accordance with the embodiments of the invention described herein need not be performed in any particular order. Furthermore, although elements of the invention may be described or claimed in the singular, the plural is contemplated unless limitation to the singular is explicitly stated.