Patent Description:
<CIT> describes an array of memory cells including resistive memory elements which are coupled to isolation transistors and which include a magnetic tunnel junction. A decoder decodes input address information to select a row of the array. A binarizer coupled to the memory array assigns binary weights to outputs of the memory array output through bit lines coupled to the memory cells. A summer sums the binary weighted outputs, and a quantizer generates an output digital code corresponding to data stored in a plurality of memory cells during a prior program cycle.

<CIT> describes a nonvolatile memory cross-bar array including: a number of junctions formed by a number of row lines intersecting a number of column lines; a first set of controls at a first set of the junctions coupling between a first set of the row lines and a first set of the column lines; a second set of controls at a second set of the junctions coupling between a second set of the row lines and a second set of the column lines; and a current collection line to collect currents from the controls of the first set and the second set through their respective column lines and output a result current corresponding to a sum of a first dot product and a second dot product.

<NPL>, describes the design of a variation tolerant multilevel CMOS/nano memristor memory.

<NPL> describes an RRAM-based SQL query unit with a process in memory structure.

<CIT> describes a device to process analog sensor data, the device including at least one analog sensor to generate a first set of analog voltage signals and a crossbar array including a plurality of memristors. The crossbar array is to receive an input vector of the first set of analog voltage signals, generate an output vector comprising a second set of analog voltage signals that is based upon a dot product of the input vector and a matrix comprising resistance values of the plurality of memristors, detect a pattern of the output vector, and activate a processor upon a detection of the pattern.

<CIT> describes a co-processor configured for performing vector matrix multiplication, VMM, to solve computational problems such as partial differential equations, PDEs. An analog Discrete Fourier Transform can be implemented by invoking VMM of input signals with Fourier basis functions using analog crossbar arrays. Linear and non-linear PDEs can be solved by implementing spectral PDE solution methods as an alternative to massively discretized finite difference methods, while exploiting inherent parallelism realized through the crossbar arrays. The analog crossbar array can be implemented in CMOS and memristors or a hybrid solution including a combination of CMOS and memristors.

The present invention is defined in the independent claims <NUM> and <NUM>.

Preferred features are recited in the dependent claims. In the following description, any embodiment referred to and not comprising all the features of the independent claims <NUM> and <NUM> is merely an example useful to the understanding of the invention.

The same reference numerals in different drawings represent the same element. Numbers provided in flow charts and processes are provided for clarity in illustrating steps and operations and do not necessarily indicate a particular order or sequence.

Furthermore, the described features, structures, or characteristics can be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of layouts, distances, network examples, etc., to convey a thorough understanding of various embodiments. One skilled in the relevant art will recognize, however, that such detailed embodiments do not limit the overall inventive concepts articulated herein, but are merely representative thereof.

As used in this written description, the singular forms "a," "an" and "the" include express support for plural referents unless the context clearly dictates otherwise. Thus, for example, reference to "a" includes a plurality of such.

Reference throughout this specification to "an example" means that a particular feature, structure, or characteristic described in connection with the example is included in one or more embodiments. Thus, appearances of the phrases "in an example" or "in an embodiment" in various places throughout this specification are not necessarily all referring to the same embodiment.

As used herein, a plurality of items, structural elements, compositional elements, and/or materials can be presented in a common list for convenience. In addition, various embodiments and examples can be referred to herein along with alternatives for the various components thereof. It is understood that such embodiments, examples, and alternatives are not to be construed as de facto equivalents of one another, but are to be considered as separate and autonomous representations under the present disclosure.

Furthermore, the described features, structures, or characteristics can be combined in any suitable manner in one or more embodiments. In the following description, numerous specific details are provided, such as examples of layouts, distances, network examples, etc., to provide a thorough understanding of embodiments. One skilled in the relevant art will recognize, however, that the technology can be practiced without one or more of the specific details, or with other methods, components, layouts, etc. In other instances, well-known structures, materials, or operations may not be shown or described in detail to avoid obscuring aspects of the disclosure.

In this disclosure, "comprises," "comprising," "containing" and "having" and the like can mean "includes," "including," and the like, and are generally interpreted to be open ended terms. The terms "consisting of" or "consists of" are closed terms, and include only the components, structures, steps, or the like specifically listed in conjunction with such terms. In particular, such terms are generally closed terms, with the exception of allowing inclusion of additional items, materials, components, steps, or elements, that do not materially affect the basic and novel characteristics or function of the item(s) used in connection therewith. For example, trace elements present in a composition, but not affecting the composition's nature or characteristics would be permissible if present under the "consisting essentially of" language, even though not expressly recited in a list of items following such terminology. When using an open-ended term in this written description, like "comprising" or "including," it is understood that direct support should be afforded also to "consisting essentially of" language as well as "consisting of" language as if stated explicitly and vice versa.

The terms "first," "second," "third," "fourth," and the like in the description and in the claims, if any, are used for distinguishing between similar elements and not necessarily for describing a particular sequential or chronological order. It is to be understood that any terms so used are interchangeable under appropriate circumstances such that the embodiments described herein are, for example, capable of operation in sequences other than those illustrated or otherwise described herein. Similarly, if a method is described herein as comprising a series of steps, the order of such steps as presented herein is not necessarily the only order in which such steps may be performed, and certain of the stated steps may possibly be omitted and/or certain other steps not described herein may possibly be added to the method.

As used herein, comparative terms such as "increased," "decreased," "better," "worse," "higher," "lower," "enhanced," and the like refer to a property of a device, component, or activity that is measurably different from other devices, components, or activities in a surrounding or adjacent area, in a single device or in multiple comparable devices, in a group or class, in multiple groups or classes, or as compared to the known state of the art. For example, a data region that has an "increased" risk of corruption can refer to a region of a memory device, which is more likely to have write errors to it than other regions in the same memory device. A number of factors can cause such increased risk, including location, fabrication process, number of program pulses applied to the region, etc..

The exact allowable degree of deviation from absolute completeness may in some cases, depend on the specific context. However, generally speaking, the nearness of completion will be so as to have the same overall result as if absolute and total completion were obtained. For example, a composition that is "substantially free of" particles would either completely lack particles, or so nearly completely lack particles that the effect would be the same as if it completely lacked particles. In other words, a composition that is "substantially free of" an ingredient or element may still actually contain such item as long as there is no measurable effect thereof.

As used herein, the term "about" is used to provide flexibility to a numerical range endpoint by providing that a given value may be "a little above" or "a little below" the endpoint. However, it is to be understood that even when the term "about" is used in the present specification in connection with a specific numerical value, that support for the exact numerical value recited apart from the "about" terminology is also provided.

Numerical amounts and data may be expressed or presented herein in a range format. It is to be understood, that such a range format is used merely for convenience and brevity, and thus should be interpreted flexibly to include not only the numerical values explicitly recited as the limits of the range, but also to include all the individual numerical values or sub-ranges encompassed within that range as if each numerical value and sub-range is explicitly recited. As an illustration, a numerical range of "about <NUM> to about <NUM>" should be interpreted to include not only the explicitly recited values of about <NUM> to about <NUM>, but also include individual values and sub-ranges within the indicated range. Thus, included in this numerical range are individual values such as <NUM>, <NUM>, and <NUM> and sub-ranges such as from <NUM>-<NUM>, from <NUM>-<NUM>, and from <NUM>-<NUM>, etc., as well as <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, <NUM>, and <NUM> individually.

This same principle applies to ranges reciting only one numerical value as a minimum or a maximum. Furthermore, such an interpretation should apply regardless of the breadth of the range or the characteristics being described.

As used herein, the term "circuitry" can refer to, be part of, or include an Application Specific Integrated Circuit (ASIC), an electronic circuit, a processor (shared, dedicated, or group), and/or memory (shared, dedicated, or group) that execute one or more software or firmware programs, a combinational logic circuit, and/or other suitable hardware components that provide the described functionality. In some aspects, the circuitry can be implemented in, or functions associated with the circuitry can be implemented by, one or more software or firmware modules. In some aspects, circuitry can include logic, at least partially operable in hardware.

Various techniques, or certain aspects or portions thereof, may take the form of program code (i.e., instructions) embodied in tangible media, such as compact disc-read-only memory (CD-ROMs), hard drives, transitory or non-transitory computer readable storage medium, or any other machine-readable storage medium wherein, when the program code is loaded into and executed by a machine, such as a computer, the machine becomes an apparatus for practicing the various techniques. A non-transitory computer readable storage medium can be a computer readable storage medium that does not include signal. In the case of program code execution on programmable computers, the computing device may include a processor, a storage medium readable by the processor (including volatile and non-volatile memory and/or storage elements), an input device, and an output device. The volatile and non-volatile memory and/or storage elements may be a random-access memory (RAM), erasable programmable read only memory (EPROM), flash drive, optical drive, magnetic hard drive, solid state drive, or other medium for storing electronic data. One or more programs that may implement or utilize the various techniques described herein may use an application programming interface (API), reusable controls, and the like. Such programs may be implemented in a high-level procedural or object-oriented programming language to communicate with a computer system. However, the program(s) may be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language, and combined with hardware implementations.

As used herein, the term "processor" can include a single processor or multiple processors, including single core processors and multi-core processors. A processor can include general purpose processors, specialized processors such as central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), microcontrollers (MCUs), embedded controller (ECs), embedded processors, field programmable gate arrays (FPGAs), network processors, hand-held or mobile processors, application-specific instruction set processors (ASIPs), application-specific integrated circuit processors (ASICs), co-processors, and the like. Additionally, a processor can be packaged in numerous configurations, which is not limiting. For example, a processor can be packaged in a common processor package, a multi-core processor package, a system-on-chip (SoC) package, a system-in-package (SiP) package, a system-on-package (SOP) package, and the like.

Reference throughout this specification to "an example" or "exemplary" means that a particular feature, structure, or characteristic described in connection with the example is included in one or more embodiments of the present technology. Thus, appearances of the phrases "in an example" or "in an embodiment" or the word "exemplary" in various places throughout this specification are not necessarily all referring to the same embodiment.

An initial overview of technology embodiments is provided below, and then specific technology embodiments are described in further detail later. The scope of protection of the present invention is defined by appended claims <NUM>-<NUM>.

Vector-Vector Dot-Products (VVDP) are commonly calculated in a variety of applications for a variety of purposes. In one nonlimiting example, VVDP are calculated in machine learning applications to learn useful features for solving problems. In one specific example, a reduction of VVDP can be determined in the analog domain in a computing device programmable media. The computing device programmable media includes a resistive element array, a plurality of bit line select elements and a sense circuit. The resistive element array includes a plurality of word lines, a plurality of bit lines, and a plurality of programmable resistive elements coupled between the plurality of word lines and the plurality of bit lines.

The resistive elements are programmed to any of a plurality of resistive values. Additionally, the plurality of bit line select elements are configured to couple one or more of the plurality of bit lines to a current summing node in response to one or more of a plurality of bit line sense signals. The sense circuit is configured to sense a parameter of the current summing node in response to a node sense signal.

The resistive element array is programmed based on values of a weight matrix. Voltages are applied to one or more of the plurality of word lines and/or bit lines based on values of a first vector. One or more of the plurality of bit lines of the resistive element array are selected based on values of a second vector. A reduction value based on the sum of the selected one or more of the plurality of bit lines is thereby determined.

<FIG> is a diagram illustrating a computing device programmable media in accordance with an example. The computing device programmable media may be a separate apparatus, such as an accelerator, or integral to another device or system, such as a Random-Access Memory (RAM). The computing device programmable media includes a resistive element array <NUM>-<NUM> and a reduction circuit <NUM>. The resistive element array includes a plurality of word lines <NUM>-<NUM>, a plurality of bit lines <NUM>-<NUM>, and a plurality of programmable resistive elements <NUM>-<NUM> coupled between the plurality of word lines <NUM>-<NUM> and the plurality of bit lines <NUM>-<NUM>.

In one implementation, the resistive element array can be a Single Level Cell (SLC) that can store one bit of data, or a Multi-Level Cell (MLC) that can store two or more bits of data. In one implementation, the resistive element array can be any type of byte-accessible memory capable of being used to calculate VVDP. Nonlimiting examples can include phase change memory (PCM), such as chalcogenide glass PCM, planar or 3D PCM, cross-point array memory, including 3D cross-point memory, non-volatile dual in-line memory module (NVDIMM)-based memory, such as persistent memory-based (NVDIMM-P) memory, 3D cross-point-based NVDIMM memory, resistive RAM (ReRAM), including metal-oxide- or oxygen vacancy-based ReRAM, such as HfO<NUM>-, Hf/HfOx-, Ti/HfO<NUM>-, TiOx-, and TaOx-based ReRAM, filament-based ReRAM, such as Ag/GeS<NUM>-, ZrTe/Al<NUM>O<NUM>-, and Ag-based ReRAM, programmable metallization cell (PMC) memory, such as conductive-bridging RAM (CBRAM), silicon-oxide-nitride-oxide-silicon (SONOS) memory, ferroelectric RAM (FeRAM), ferroelectric transistor RAM (Fe-TRAM), anti-ferroelectric memory, polymer memory (e.g., ferroelectric polymer memory), magnetoresistive RAM (MRAM), write-in-place non-volatile MRAM (NVMRAM), spin-transfer torque (STT) memory, spin-orbit torque (SOT) memory, nanowire memory, electrically erasable programmable read-only memory (EEPROM), nanotube RAM (NRAM), other memristor- and thyristor-based memory, spintronic magnetic junction-based memory, magnetic tunneling junction (MTJ)-based memory, domain wall (DW)-based memory, and the like.

The reduction circuit <NUM> is configured to select one or more of a plurality of bit lines in response to one or more node select sense signals <NUM>. The reduction circuit <NUM> is configured to output a reduction value <NUM> based on a sensed a sum of the selected one or more of the plurality of bit Outputting the reduction value includes saving the reduction value back to the resistive element array.

The computing device programmable media is utilized to computer reductions of Vector-Vector Dot-Products (VVDP). The resistive element array <NUM>-<NUM> is programmed with resistive values corresponding to an array of weight values. Drive voltages based on a first vector are applied to one or more of the plurality of word lines <NUM>-<NUM> or to one or more of the plurality of bit lines <NUM>-<NUM>. One or more node sense signals <NUM> select one or more of the bit lines <NUM>-<NUM> based on a second vector. A reduction <NUM> is determined based on a sensed sum of the selected one or more of the plurality of bit lines. Weights of a neural network are loaded into the resistive element array <NUM>-<NUM>. Drive voltages corresponding to a first input or intermediate Feature Map (FM) can then be applied to the word lines <NUM>-<NUM> and a second input or intermediate Feature Map (FM) can be applied to the one or more node sense signals <NUM> to select one or more of the plurality of bit lines <NUM>-<NUM>. A reduction <NUM> is determined based on a sensed sum of the selected one or more of the plurality of bit lines <NUM>-<NUM>. Accordingly, VVDPs are performed directly in the computing device programmable media without having to move data between memory and a processing unit of a computing system.

<FIG> is a diagram illustrating a computing device readable media in accordance with another example. Again, the computing device readable media may be a separate apparatus or integral to another device or system. The computing device readable media includes a resistive element array <NUM>-<NUM> and a reduction circuit <NUM>. The resistive element array includes a plurality of word lines <NUM>-<NUM>, a plurality of bit lines <NUM>-<NUM> and a plurality of programmable resistive elements <NUM>-<NUM> coupled between the plurality of word lines <NUM>-<NUM> and the plurality of bit lines <NUM>-<NUM>.

In one implementation, the resistive element array can be a Single Level Cell (SLC) that can store one bit of data, or a Multi-Level Cell (MLC) that can store two or more bits of data. In one implementation, the resistive element array can be a resistive cell array, a phase change cell array, a phase change cell array and stackable cross-gridded data access array, a magnetoresistive cell array, a spin torque magnetoresistive cell array, or the like.

The reduction circuit <NUM> includes a plurality of bit line select elements <NUM>-<NUM> and a sense circuit <NUM>. The plurality of bit line select elements are configured to couple one or more of the plurality of bit lines <NUM>-<NUM> to a current summing node <NUM> in response to one or more bit line select signals <NUM>-<NUM>. In one implementation, the plurality of bit line select elements <NUM>-<NUM> can include a plurality of Metal Oxide Semiconductor Field Effect Transistors (MOSFET), wherein the gates of the MOSFETs can be coupled to the plurality bit line sense signals <NUM>-<NUM>, and the sources and drains of the MOSFETs can be coupled between the plurality of bit lines <NUM>-<NUM> and the current summing node <NUM>. Each respective one of the plurality of MOSFETs can be configured to couple a respective one of the plurality of bit lines <NUM>-<NUM> to the current summing node <NUM> in response to a respective one of the plurality of bit line select signals <NUM>-<NUM>.

The sense circuit <NUM> is coupled to the current summing node <NUM> and configured to sense a parameter of the current summing node <NUM> in response to the one or more node sense signals <NUM>. The computing device programmable media is utilized to compute reductions of Vector-Vector Dot-Products (VVDP). The resistive element array <NUM>-<NUM> is programmed with resistive values corresponding to an array of weight values. Drive voltages based on a first vector are applied to one or more of the plurality of word lines <NUM>-<NUM>, and one or more node bit line select elements <NUM>-<NUM> select one or more of the bit lines <NUM>-<NUM> based on a second vector. A reduction <NUM> is determined as an output based on a sensed sum by the sense circuit <NUM> of the selected one or more of the plurality of bit lines <NUM>-<NUM>. Weights of a neural network are loaded into the resistive element array <NUM>-<NUM>. Drive voltages corresponding to a first input or intermediate Feature Map (FM) can then be applied to the word lines and a second input or intermediate Feature Map (FM) can be applied to the one or more sense signals to select one or more of the plurality of bit lines. For example, a drive voltage V<NUM> corresponding to a FM value X<NUM> can be applied to word lines WL2 and a drive voltage V<NUM> corresponding to a FM value X<NUM> can be applied to word line WL127, and bias voltages can be applied to bit line BL1 selected by select elements SEL1. A reduction is determined based on a sensed sum of the selected one or more of the plurality of bit lines. For example, the current flowing in bit line BL1 can be <MAT> wherein Gi-j is the conductance of the resistive element at row i and column j, and Wi-j is the inverse of the conductance. Accordingly, reductions of VVDPs are performed directly in the computing device programmable media without having to move data between memory and a processing unit of a computing system. In one aspect, multiple bit lines in the resistive element array <NUM>-<NUM> can be selected simultaneously to produce multiple VVDPs and by coupling the selected bit lines together, their currents add up to perform the reduction operation. The reductions can be used for normalization of VVDPs.

<FIG> is a diagram illustrating a computing device programmable media in accordance with another example. Again, the computing device programmable media may be a separate apparatus or integral to another device or system. In one implementation, the computing device programmable media can be implemented within a computing device readable memory, such as Random-Access Memory (RAM). In another implementation, the computing device programmable media can be implemented within a computing device accelerator, such as a Vector-Vector Dot-Product (VVDP) reduction accelerator. In another implementation, the computing device programmable media can be implemented as a separate subsystem for use in or by an accelerator, processor, graphics processor or other similar subsystem of a computing system.

The computing device readable media includes a resistive element array <NUM>-<NUM> and a reduction circuit <NUM>. The resistive element array includes a plurality of word lines <NUM>-<NUM>, a plurality of bit lines <NUM>-<NUM> and a plurality of programmable resistive elements <NUM>-<NUM> coupled between the plurality of word lines <NUM>-<NUM> and the plurality of bit lines <NUM>-<NUM>.

The reduction circuit <NUM> includes a plurality of bit line select elements <NUM>-<NUM>, and a sense circuit <NUM>-<NUM>. In various aspect, the sense circuit <NUM>-<NUM> can be a more detailed implementation of the sense circuit <NUM> from <FIG>. The sense circuit <NUM>-<NUM> is configured to output a reduction value <NUM> based on a sense parameter at a current summing node <NUM>. In one implementation, the sense circuit can include a voltage sense amplifier configured to measure a voltage proportional to the current flowing through the current summing node <NUM>. In another implementation, the sense circuit can include a current sense amplifier configured to measure the current flowing through the current summing node <NUM>. In another implementation, the sense circuit can include an Analog-to-Digital Converter (ADC) <NUM>, a resistive element <NUM> and a sense gate <NUM>. The resistive element <NUM> can be coupled between the current summing node <NUM> and a ground potential. The sense gate <NUM> can be coupled between the current summing node <NUM> and the ADC <NUM>. The sense gate <NUM> can be configured to couple the current summing node <NUM> to the ADC <NUM> in response to a node sense signal <NUM>. In one implementation, the sense gate <NUM> can include a MOSFET including a gate coupled to the node sense signal <NUM>, and a source and drain coupled between the current summing node <NUM> and the ADC <NUM>. The ADC <NUM> can be configured to sense an analog voltage value across the resistive element <NUM> which is proportional to the current flowing through the current summing node <NUM> and output a digital voltage value as the reduction value <NUM>.

The computing device programmable media is utilized to computer reductions of Vector-Vector Dot-Products (VVDP). The resistive element array <NUM>-<NUM> is programmed with resistive values corresponding to an array of weight values. Drive voltages based on a first vector are applied to one or more of the plurality of word lines <NUM>-<NUM>, and one or more node sense signals <NUM>-<NUM> select one or more of the bit lines <NUM>-<NUM> based on a second vector. A reduction is determined based on a sensed sum of the selected one or more of the plurality of bit lines <NUM>-<NUM>. For instance, weights of a neural network are loaded into the resistive element array <NUM>-<NUM>. Drive voltages corresponding to a first input or intermediate Feature Map (FM) can then be applied to the word lines <NUM>-<NUM> and a second input or intermediate FM can be applied to the one or more sense signals to select one or more of the plurality of bit lines <NUM>-<NUM>. For example, a drive voltage V<NUM> corresponding to a FM value X<NUM> can be applied to word lines WL1 and a drive voltage V<NUM> corresponding to a FM value X<NUM> can be applied to word line WL127, and bias voltages can be applied to bit lines BL1 and BL3 selected by select elements SEL1 SEL3. A reduction is determined based on a sensed sum of the selected one or more of the plurality of bit lines. For example, the current flowing in bit line BL1 can be the sum of I<NUM>-<NUM> and I<NUM>-<NUM>, where <MAT> and <MAT> therefore <MAT> Similarly <MAT> The current flowing through the sense node <NUM> can be I<NUM>+I<NUM>. , that in turn generates a voltage Vsense = Rdef × (I<NUM>+I<NUM>) across the resistive element <NUM>. The voltage across the resistive element <NUM> can be sampled by the ADC <NUM> in response to a node sense signal <NUM> at the sense gate <NUM>. The summed currents flowing through the sense node <NUM> represents the reduction of two VVDPs. The selection of even more bit lines <NUM>-<NUM> can be utilized to perform even wider reductions. Accordingly, reductions of one or more VVDPs can be performed directly in the computing device programmable media without having to move data between memory and a processing unit of a computing system. In one aspect, multiple bit lines in the resistive element array <NUM>-<NUM> can be selected simultaneously to produce multiple VVDPs and by coupling the selected bit lines together, their currents add up to perform the reduction operation. The reductions can be used for normalization of VVDPs.

<FIG> is a diagram illustrating a computing device programmable media in accordance with an example. Again, the computing device programmable media may be a separate apparatus such as an accelerator or integral to another device or system such as a Random-Access Memory (RAM). The computing device readable media can include a resistive element array <NUM>, a word line decoder driver circuit <NUM>, a bit line decoder driver circuit <NUM>, a voltage generator circuit <NUM>, a sense amplifier circuit <NUM>, a page buffer circuit <NUM>, a reduction circuit <NUM>, a reduction buffer circuit <NUM> and control logic circuit <NUM>.

The resistive element array <NUM> can include a plurality of word lines, a plurality of bit lines and a plurality of programmable resistive elements coupled between the plurality of word lines and the plurality of bit lines, as described above with respect to <FIG>.

The word line decoder driver circuit <NUM> and bit line decoder driver circuit <NUM> can, under control of the control logic <NUM>, decode an address and drive the appropriate word line and bit lines to program a state of resistive element memory cells. The voltage generator circuit <NUM> can provide appropriate voltage biases to the word line decoder driver circuit <NUM> and bit line decoder driver circuit <NUM> for programming cells in the resistive element array <NUM>. For example, the resistive element array <NUM> can be driven with appropriate voltages to program the resistive elements with values corresponding to an array of weight values, as described above with respect to <FIG>. Similarly, the word line decoder driver circuit <NUM> can drive select word lines based on a first vector, the bit line decoder driver circuit <NUM> can drive the bit lines, and the reduction circuit <NUM> can select one or more of the bit lines based on a second vector to determine a reduction, as described above with respect to <FIG>.

In one or more implementations, the resistive element array <NUM>, the word line decoder driver circuit <NUM>, the bit line decoder driver circuit <NUM>, the voltage generator circuit <NUM>, the sense amplifier circuit <NUM>, the page buffer circuit <NUM>, and the control logic circuit <NUM> can also operate in accordance with a conventional Resistive Random Access Memory (ReRAM), a Phase Change Memory (PCM), a phase change cell array and stackable cross-gridded data access array (3D XPoint), a Magnetoresistive Random Access Memory (MRAM), a Spin Torque Magnetoresistive Random Access Memory (ST-MRAM), or the like.

<FIG> is a diagram illustrating an accelerator in accordance with an example. The accelerator <NUM> can include a computing device programmable media <NUM>, a memory controller <NUM>, and a computation controller <NUM>. The accelerator <NUM> can be communicatively coupled to a host computing device <NUM>. The computing device programmable media <NUM> can operate to perform reductions of Vector-Vector Dot-Products (VVDP) as described above with respect to <FIG>.

In one aspect, the memory controller <NUM> can receive VVDP requests from the host device <NUM>. The memory controller <NUM> can be configured to manage the flow of data going to and from the computing device programmable media. The computation controller <NUM> can be configured to control a reduction circuit of the computing device programmable media <NUM> to select one or more of a plurality of bit lines and sense a sum of the selected one or more of the plurality of bit lines.

In one implementation, the accelerator <NUM> can be separate from the host device <NUM> as illustrated in <FIG>. In another implementation, one or more subsystems can be shared between the accelerator <NUM> and the host device <NUM>, as illustrated in <FIG>. In such case, one or more portions of the accelerator <NUM> may be implemented separate from the host device <NUM>, while one or more other portions of the accelerator <NUM> may be integral to the host device <NUM>. Likewise, one or more portions of the accelerator <NUM> may be implemented separately or integral to one or more other portions of the accelerator <NUM>. For example, the computation controller <NUM> can be integral to the memory controller <NUM> or computing device programmable media <NUM>, or the computation controller <NUM> can be implemented as a separate portion of the accelerator <NUM>. In addition, one or more sub-systems may be dedicated to implementing the accelerator <NUM>. In other cases, one or more sub-systems may be used in the implementation of the accelerator <NUM> and used in other sub-systems of the host device <NUM>. For example, the memory controller <NUM> of the host device <NUM> may be utilized to read and write data to memory, such as RAM, in the host device <NUM> and to also manage the flow of data going to and from the computing device programmable media <NUM> of the accelerator <NUM>. In yet another implementation, the accelerator <NUM> may be integral to the host device <NUM> as illustrated in <FIG>.

The host computing devices and accelerators of <FIG> are illustrative of exemplary embodiments, and are not intended to limit embodiments of the present technology. The accelerator devices and methods described herein can be readily applied to any number of conventional host computing devices, along with computing systems to be developed in the future.

Embodiments of the present technology are advantageously be utilized in machine learning applications to computer reductions of Vector-Vector Dot-Products (VVDP). Embodiments can be implemented as a dedicated accelerator, or may be implemented as a combination of an accelerator and computer memory. Embodiments advantageously provide a reduction circuit that selects one or more subarrays to produce one or more VVDPs that are summed in the analog domain to perform a reduction operation on the one or more VVDPs. In contrast, the conventional art converts individual VVDP from the analog to digital domain, by means of an analog-to-digital converter, and computing the reduction in the digital domain, by means of digital adders in a processing unit.

Claim 1:
An apparatus configured to calculate a reduction of a Vector-Vector Dot-Product (VVDP), comprising:
a resistive element array (<NUM>-<NUM>, <NUM>-<NUM>, <NUM>-<NUM>), including a plurality of word lines (<NUM>-<NUM>, <NUM>-<NUM>,<NUM>-<NUM>), a plurality of bit lines (<NUM>-<NUM>, <NUM>-<NUM>,<NUM>-<NUM>), and a plurality of programmable resistive elements (<NUM>-<NUM>, <NUM>-<NUM>, <NUM>-<NUM>) coupled between the plurality of word lines and the plurality of bit lines;
a bit line select circuit comprising a plurality of bit line select elements (<NUM>-<NUM>, <NUM>-<NUM>) configured to couple one or more of the plurality of bit lines to a current summing node (<NUM>, <NUM>) in response to one or more of a plurality bit line select signals (<NUM>, <NUM>-<NUM>, SEL1-SEL128);
a reduction circuit (<NUM>, <NUM>, <NUM>) comprising a sense circuit (<NUM>, <NUM>, <NUM>), the sense circuit coupled to the current summing node, wherein the sense circuit is configured to sense a parameter of the current summing node in response to a node sense signal (SEN/SEL, <NUM>, <NUM>); and
a word line drive circuit and a bit line driver circuit configured to set a state of the plurality of resistive elements according to a first plurality of values based on values of a weight matrix, wherein the word line drive circuit is further configured to drive a selected one or more of the plurality of word lines with a predetermined word line drive parameter according to a second plurality of values,
wherein the sense circuit is configured to output a reduction value (<NUM>, <NUM>, <NUM>) based on the sensed parameter, wherein outputting the reduction value includes saving the reduction value back to the resistive element array.