WO2016153513A1 - Code comparators - Google Patents

Code comparators Download PDF

Info

Publication number
WO2016153513A1
WO2016153513A1 PCT/US2015/022666 US2015022666W WO2016153513A1 WO 2016153513 A1 WO2016153513 A1 WO 2016153513A1 US 2015022666 W US2015022666 W US 2015022666W WO 2016153513 A1 WO2016153513 A1 WO 2016153513A1
Authority
WO
WIPO (PCT)
Prior art keywords
voltage
memristors
row
column
code
Prior art date
Application number
PCT/US2015/022666
Other languages
French (fr)
Inventor
Ning GE
Jianhua Yang
Zhiyong Li
R. Stanley Williams
Original Assignee
Hewlett Packard Enterprise Development Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to PCT/US2015/022666 priority Critical patent/WO2016153513A1/en
Publication of WO2016153513A1 publication Critical patent/WO2016153513A1/en

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C27/00Electric analogue stores, e.g. for storing instantaneous values
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0023Address circuits or decoders
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/004Reading or sensing circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0097Erasing, e.g. resetting, circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C2213/00Indexing scheme relating to G11C13/00 for features not covered by this group
    • G11C2213/70Resistive array aspects
    • G11C2213/77Array wherein the memory element being directly connected to the bit lines and word lines without any access device being used
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C7/00Arrangements for writing information into, or reading information out from, a digital store
    • G11C7/10Input/output [I/O] data interface arrangements, e.g. I/O data control circuits, I/O data buffers
    • G11C7/1006Data managing, e.g. manipulating data before writing or reading out, data bus switches or control circuits therefor

Definitions

  • Memristors are passive two terminal devices that can be programmed to different resistive states by applying a programming energy, such as a voltage.
  • a programming energy such as a voltage.
  • Large crossbar arrays of memory devices can be used in a variety of applications, including random access memory, non-volatile solid state memory, programmable logic, signal processing control systems, pattern recognition, and other applications.
  • FIG. 1 A is a block diagram of an example code comparator
  • FIG. 1 B is a diagram of an example memristor array
  • FIG. 2 is a diagram of an example code comparator
  • FIG. 3 is a block diagram of an example system for comparing a first code with a second code
  • FIG. 4 is a flowchart of an example method for comparing a first code with a second code.
  • Digital signatures are a method for increasing security.
  • a digital signature is a mathematical scheme for demonstrating authenticity of a digital message or document.
  • Digital signatures and other security protocols may utilize frequent code checks to verify authenticable encryptions.
  • Memristors are devices that may be used as components in a wide range of electronic circuits, such as memories, switches, radio frequency circuits, and logic circuits and systems.
  • a crossbar array of memristors may be used to store bits of information, 1 or 0.
  • the resistance of a memristor may be changed by applying an electrical stimulus, such as a voltage or a current, through the memristor.
  • an electrical stimulus such as a voltage or a current
  • at least one channel may be formed that is capable of being switched between two states— one in which the channel forms an electrically conductive path ("ON") and one in which the channel forms a less conductive path ("OFF").
  • conductive paths represent "OFF” and less conductive paths represent "ON”.
  • memristors may be switched between at least two resistance states.
  • a code comparator may include a processor and a memristor array having a plurality of row lines, a plurality of column lines, and a plurality of memristors coupled between the row lines and the column lines.
  • the example code comparator assigns a row voltage value to the plurality of row lines corresponding to a first code.
  • the example code comparator assigns a column voltage value to the plurality of column lines according to a second code.
  • the example code comparator causes a voltage to be applied to row lines according to the row voltage values and a voltage to be applied to column lines according to the column voltage values.
  • the resistance state of a memristor of the array may change if there is a net voltage across it. Accordingly, the example code comparator may compare the first code with the second code based on the states of the memristors.
  • FIG. 1A depicts an example code comparator 100, which may include a processor 1 10 and a memristor array 120.
  • Processor 1 10 and memristor array 120 may communicate via a connection.
  • processor 1 10 and memristor array 120 may be attached to an integrated circuit, which provides a connection between the two components.
  • the code comparator depicted in FIG. 1A may include additional components and that some of the components described herein may be removed or modified without departing from the scope of code comparator 100.
  • Processor 1 10 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and/or other hardware devices suitable for executing instructions for comparing codes. As an alternative or in addition to retrieving and executing instructions, processor 1 10 may include one or more electronic circuits that include electronic components for performing the functionality described herein.
  • CPUs central processing units
  • semiconductor-based microprocessors and/or other hardware devices suitable for executing instructions for comparing codes.
  • processor 1 10 may include one or more electronic circuits that include electronic components for performing the functionality described herein.
  • Memristor array 120 may be a configuration of sets of parallel crossing lines with memristors and/or other components coupled between intersections of lines.
  • memristor array 120 may have a first plurality of parallel lines referred to as row lines intersecting another plurality of parallel lines referred to as column lines, where memristors serve as cross-points of the lines.
  • Each memristor of memristor array 120 may be coupled between a unique combination of a row line and a column line. In other words, no memristors share both a row line and a column line.
  • components may be coupled by forming an electrical connection between the components.
  • memristors may be coupled to lines by forming a direct, surface contact or by other forms of physical connection.
  • a memristor may be a device that may be programed to different resistive states by applying a voltage or current. Furthermore, a memristor may "memorize" its last resistance even if the applied voltage or current is removed. In such a manner, a memristor may store digital data. In some examples, a sufficiently high current compliance may be set on the memnstors to enable the resistance states of the memristors to be switched in response to the application of a voltage.
  • a memristor may be bipolar or unipolar.
  • Bipolar memristors may depend on the polarity of an applied voltage. Specifically, bipolar memristors may be switched from a first state to a second state by application of a voltage of a first polarity, while they may be switched from the second state to the first state by application of a voltage of a second polarity.
  • Unipolar memristors may depend on the amplitude of an applied voltage.
  • the memristors may have unipolar behavior.
  • memristors may have nonpolar switching behavior.
  • Nonpolar memristors may be unipolar memristors which may exhibit amplitude-based switching with both positive and negative voltages.
  • the positive voltage range and the negative voltage range that promote switching of a nonpolar memristor may be symmetrical with respective to each other.
  • processor 1 10 may assign a row voltage value to at least one of the plurality of row lines.
  • the row voltage may correspond to the first code, which for purposes of illustration may be the key code to which other codes are compared.
  • a digital code string may be assigned to the rows as two separate voltage values.
  • a row line corresponding to a digital "0" may be assigned a first row voltage
  • a row line corresponding to a digital "1 " may be assigned a second row voltage.
  • the first row voltage may be below the switching voltage of the memristor
  • the second row voltage may be above the switching voltage.
  • the first code may be an analog code.
  • analog values may allow increased security.
  • values in a bit string can be represented with more than two discrete voltage values as would be needed when using digital values.
  • the analog voltage for each value can be 15V, 0V, 10V, and 5V, while the digital form may normally be standardized voltage such as 5V, 0V, 5V, and 5V.
  • the difference between each voltage value may be larger than the switching voltage of the memristor.
  • the minimum difference between the voltage values provided in the above example is 5V, which may be larger than the switching voltage of the memristor.
  • Processor 1 10 may assign a column voltage value to at least one of the plurality of column lines.
  • the column voltage may correspond to the second code, which for purposes of illustration may be the code to be compared with the key code of the first code.
  • a digital code string may be assigned to the columns as two separate voltage values. For example, a column line corresponding to a digital "0" may be assigned a first column voltage, while a column line corresponding to a digital "1 " may be assigned a second row voltage.
  • the first column voltage may be below the switching voltage of the memristor, and the second column voltage may be above the switching voltage.
  • the second code may be an analog code.
  • processor 1 10 may cause a voltage to be applied to each line that is assigned a value. Specifically, processor 1 10 may cause a row voltage to be applied to each row according to the row voltage values assigned. Similarly, processor 1 10 may cause a column voltage to be applied to each column according to the column voltage values assigned.
  • the memristors When the row voltage value of a row line matches the column voltage value of the corresponding column line, the memristors will have no or minimum total voltage across it due to equipotential. Accordingly, the memristor will not be switched because the total voltage across it is below its switching voltage. However, if the voltages do not match, then the memristor may be switched. For example, if a row voltage of a memristor is 0V and the column voltage of the same memristor is 5V, the memristor will be switched. In such examples, a unipolar or nonpolar memristors may be used to allow switching regardless of the polarity of the voltage. A memristor being switched may indicate a mismatch between a bit of the first code and the corresponding bit of the second code.
  • processor 1 10 may compare the first code with the second code based on the states of the memristors of memristor array 120. For example, a state change of one or more memristors of the array 120 may indicate a code mismatch because the total current through memristor array 120 is changed from the total current through the array before the memristor state switch.
  • processor 120 is to cause a read voltage to be applied across memristor array 120 to determine the total current across the array resulting from the applied read voltage.
  • processor 1 10 may cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines. Application of the reset voltage may cause all of the memristors in the memristor array 120 to be in a common resistance state. In such examples, memristors of the memristor array 120 are recoverable and may be used multiple times for comparing codes.
  • the memristors of memristor array 120 are not resettable. For example, memristor in such instances may only be switched one time, and its resistance state may not be reset. This may provide further security features to the code comparator 100. For example, code comparator 100 may prevent brute force forgery attack, which may be useful in such high security applications, such as one time digital keys.
  • processor 1 10 may implement the memristor array 120 as an accelerator to accelerate comparing the first code with the second code. That is, the processor 100 may implement the memristor array 120 to compare the codes in a manner that is relatively faster and more efficient than if the processor 1 10 itself was to compare the codes itself.
  • the memristor array 120 may be implemented as an accelerator of the processor 1 10, in which the memristor array 120 is implemented solely in the comparing of the first code and the second code.
  • the code comparator 100 may include a memory, which may be, for instance, a volatile or non-volatile memory, such as dynamic random access memory (DRAM), electrically erasable programmable read-only memory (EEPROM), magnetoresistive random access memory (MRAM), or the like.
  • the machine readable instructions for instance, corresponding to the operations disclosed herein, may be stored in the memory.
  • the memory (not shown) is a second memristor array on which the processor is to store data.
  • the memristor array 120 which may operate solely as an accelerator, may be fabricated with the second memristor array, which may operate as a memory for the processor 120.
  • FIG. 1 B depicts an example memristor array 150.
  • Memristor array 150 may be a configuration of parallel and perpendicular lines with memristors and other components coupled between lines at cross-points.
  • Memristor array 150 may include a plurality of row lines 160, a plurality of column lines 170, and a plurality of memristors 180. Each memristor may be coupled between a unique combination of one row line and one column line. In other words, no memristor share both a row line and a column line.
  • Memristor array 150 may be used in a variety of applications, including in code comparators disclosed herein, such as code comparator 100 of FIG. 1A.
  • Row lines 160 may be electrically conducting lines that carry current throughout memristor array 150. In some examples, row lines 160 may be in parallel to each other, generally with equal spacing. Row lines 160 may sometimes be referred to as bit lines. Depending on orientation, row lines 160 may alternatively be referred to as word lines. Similarly, column lines 170 may be conducting lines that run nonparallel to row lines 160. Column lines 170 may be referred to as word lines in some conventions. In other orientations, column lines 170 may refer to bit lines.
  • Row lines 160 and column lines 170 may be made of conducting materials, such as platinum (Pt), tantalum (Ta), hafnium (Hf), zirconium (Zr), aluminum (Al), cobalt (Co), nickel (Ni), iron (Fe), niobium (Nb), molybdenum (Mo), tungsten (W), copper (Cu), titanium (Ti), tantalum nitrides (TaN x ), titanium nitrides (TiN x ), WN 2 , NbN, MoN, TiSi 2 , TiSi, Ti 5 Si 3 , TaSi 2 , WSi 2 , NbSi 2 , V 3 Si, electrically doped Si polycrystalline, electrically doped Ge polycrystalline, and combinations thereof. Row lines 160 and column lines 170 may serve as electrodes that deliver voltage and current to the memory cells 330.
  • conducting materials such as platinum (Pt), tantalum (Ta), hafnium (Hf), zircon
  • Memristors 180 may be coupled between row lines 160 and column lines 170.
  • a memristor 180 may have a resistance that changes with an applied voltage or current.
  • memristor 180 may "memorize" its last resistance. In this manner, each memristor 180 may be set to at least two states.
  • other components may be coupled with memristors 180.
  • each memristor may be coupled in series with a transistor and/or a selector.
  • FIG. 2 depicts an example code comparator 200. It should be understood that the code comparator 200 depicted in FIG. 2 may include additional components and that some of the components described herein may be removed and/or modified without departing from a scope of the code comparator 200.
  • code comparator 200 may include similar features as code comparator 100 depicted in FIG. 1A. Particularly, the code comparator 200 may include a processor 210 and a memristor array 220. The code comparator 200 is also depicted as including a voltage source 230 and a current reader 240 connected to the processor 1 10. In some examples, processor 210, memristor 220, voltage source 230, and current reader 240 may be provided and connected on a substrate.
  • the memristor array 220 may have a diagonal cross-bar architecture, which includes a plurality of row lines 222a-222n and a plurality column lines 224a-224n.
  • the variable "n" may represent an integer value greater than one.
  • Each of the row lines 222a-222n and the column lines 224a-224n may be an electrically conductive wire, an electrode, or the like.
  • the memristor array 220 is also depicted as having a plurality of memristors 226 electrically connected to pairs of row lines 222a-222n and column lines 224a-224n. That is, a first memristor 226 is depicted as being electrically connected to the first row line 222a and the first column line 224a, a second memristor 226 is depicted as being electrically connected to the second row line 222b and the second column line 224b, and an nth memristor 226 is depicted as being electrically connected to the nth row line 222n and the nth column line 224n.
  • memristors 226 may be provided at each of the junctions of the row lines 222a-222n and the column lines 224a-224n. In other examples, the memristor array 220 includes the memristors 226 as depicted in FIG. 2.
  • the voltage source 230 which may be connected to a power supply (not shown), is also depicted as being connected to each of the row lines 222a-222n and the column lines 224a-224n.
  • the connections between the voltage source 230 and the row inputs 222a-222n and the column inputs 224a-224n are shown as dotted lines to distinguish those lines from the row lines 222a-222n and the column lines 224a-224n.
  • Processor 210 may control or otherwise cause the voltage source 230 to apply voltages at multiple levels to row lines 222a-222n and column lines 224a-224n.
  • the multiple levels of voltages may include a resetting voltage, a read voltage, a voltage according to a row voltage value, and a voltage according to a column voltage value.
  • the processor 210 may control the voltage source 230 to supply different levels of voltages to row lines 222a-222n and column lines 224a-224n based upon the row voltage values and the column voltage values, respectively.
  • the row voltage values in turn are based on a first code
  • the column voltage values are based on a second code.
  • each of the memristors 226 may be a unipolar memristor. That is, switching of the memristors 226 may depend on the amplitude of an applied voltage.
  • the resistance states of the unipolar memristors 226 may be set and reset at the same polarity of the applied voltage.
  • states of the memristors 226 may be changed when there is a difference in potential across the memristors 226.
  • the different states of the memristors 226 correspond to different resistances in the memristors 226. That is, a memristor 226 in one state may have a different resistance as compared with a memristor 226 in another state.
  • the states of the memristors 226 may thus affect the total current across the memristor array 220.
  • processor 210 may cause voltage source 230 to apply a read voltage across memristor array 220. As the read voltage is applied, current reader 240 may determine the total current across the memristors 226 resulting from the applied read voltage.
  • Processor 120 may compare the first code with the second code based upon the determined total current. For example, of the total current across memristor array 220 is different than the total current across the array before the code comparison operations, then one of the memristors 226 may have been switched, indicating a code mismatch. In such a manner, the first code may be compared with the second code.
  • FIG. 3 depicts an example system 300 for comparing a first code with a second code.
  • System 300 may be, for example, a IC, a hardware accelerator, a cloud server, a local area network server, a web server, a mainframe, a mobile computing device, a notebook or desktop computer, any other suitable electronic device, or a combination of devices, such as ones connected by a cloud or internet network, that perform the functions described herein.
  • system 300 includes a processor 310, a non-transitory machine-readable storage medium 320 encoded with instructions to compare codes, and a memristor array 330.
  • Processor 310 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 320.
  • Processor 310 may fetch, decode, and execute instructions 321 , 322, 323, 324, 325, 326, and 327 to implement the procedures described herein.
  • processor 310 may include one or more electronic circuits that include electronic components for performing the functionality of one or more of instructions 321 , 322, 323, 324, 325, 326, and 327.
  • Memristor array 330 may be analogous to memristor array 120 of FIG. 1A, and may be a configuration of sets of parallel crossing lines with memristors coupled between intersections of lines. Memristors may be switched between resistance states and may be bipolar or unipolar.
  • Machine-readable storage medium 320 may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions.
  • machine-readable storage medium 320 may be, for example, Random Access Memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like.
  • Storage medium 320 may be a non-transitory storage medium, where the term "non-transitory" does not encompass transitory propagating signals.
  • machine-readable storage medium 320 may be encoded with row voltage value instructions 321 , column voltage value instructions 322, row line voltage instructions 323, column line voltage instructions 324, read voltage instruction 325, code comparison instructions 326, and reset voltage instructions 327.
  • Machine-readable storage medium 320 may include row voltage value instructions 321 .
  • Row voltage value instructions 321 may assign a row voltage value to at least one of the plurality of row lines. The row voltage value may correspond to the first code.
  • Machine-readable storage medium 320 may include column voltage value instructions 322.
  • Column voltage value instructions 322 may assign a column voltage value to at least one of the plurality of column lines. The column voltage value may correspond to the second code.
  • Machine-readable storage medium 320 may include row line voltage instructions 323.
  • Row line voltage instructions 323 may cause a voltage to be applied to each row line that is assigned a value. Specifically, Row line voltage instructions 323 may cause a row voltage to be applied to each row according to the row voltage values assigned by row voltage value instructions 321 .
  • Machine-readable storage medium 320 may include column line voltage instructions 324.
  • Column line voltage instructions 324 may cause a voltage to be applied to each column line that is assigned a value.
  • Column line voltage instructions 324 may cause a column voltage to be applied to each column according to the column voltage values assigned by column voltage value instructions 322.
  • Machine-readable storage medium 320 may include read voltage instructions 325.
  • Read voltage instructions 325 cause a read voltage to be applied across memristor array 330 to determine the total current across the array resulting from the applied read voltage.
  • Machine-readable storage medium 320 may also include code comparison instructions 326.
  • code comparison instructions 326 For example, a state change of one or more memristors of the array 330 may indicate a code mismatch because the total current through memristor array 330 is changed from before the memristor state switch.
  • Code comparison instructions 326 may compare the first code with the second code based on the total current across memristor array 330.
  • Machine-readable storage medium 320 may also include reset voltage instructions 327.
  • Reset voltage instructions 327 may cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines. Application of the reset voltage may cause all of the memristors in the memristor array 330 to be in a common resistance state.
  • FIG. 4 depicts an example method 400 for comparing a first code with a second code. Although execution of method 400 is described below with reference to code comparator 100 of FIG. 1A, other suitable components for execution of method 500 should be apparent.
  • processor 1 10 may cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines of memristor array 120. Application of the reset voltage may cause all of the memristors in the memristor array 120 to be in a common resistance state.
  • processor 1 10 may assign a row voltage value to at least one of the plurality of row lines.
  • the row voltage value may correspond to the first code.
  • processor 1 10 may assign a column voltage value to at least one of the plurality of column lines.
  • the row column value may correspond to the second code.
  • processor 1 10 may cause a voltage to be applied to each row line that is assigned a value. Specifically, processor 1 10 may cause a row voltage to be applied to each row according to the row voltage values assigned in operation 420.
  • processor 1 10 may cause a voltage to be applied to each column line that is assigned a value. Specifically, processor 1 10 may cause a column voltage to be applied to each column according to the column voltage values assigned in operation 430. [0057] Operation 440 and operation 450 may be operated simultaneously. In other words, processor 1 10 may simultaneously cause the row voltages to be applied to the row lines and the column voltages to be applied to the column lines. When the voltages are applied simultaneously, voltages of the same value may result in no net voltage due to equipotential. If the voltages are not applied simultaneously, one or more memristors may be erroneously switched.
  • processor 1 10 may cause a read voltage to be applied across memristor array 120 to determine the total current across the array resulting from the read voltage applied.
  • processor 1 10 may compare the first code with the second code based on the total current across memristor array 330.

Abstract

A code comparator has a processor and a memristor array having a plurality of row lines, a plurality of column lines, and a plurality of memristors. The processor is to assign a row voltage value to the row lines, where the row voltage value corresponds to a first code, and a column voltage value to the column lines, where the column voltage value corresponds to a second code. The processor is to cause a voltage to be applied to the row lines according to the row voltage values and a voltage to be applied to the column line that is according to the column voltage values. A state of the memristor changes when the voltage applied to the row line differs from the voltage applied to the column line. The processor is to compare the first code with the second code based on the states of the memristors.

Description

CODE COMPARATORS
BACKGROUND
[0001 ] Memristors are passive two terminal devices that can be programmed to different resistive states by applying a programming energy, such as a voltage. Large crossbar arrays of memory devices can be used in a variety of applications, including random access memory, non-volatile solid state memory, programmable logic, signal processing control systems, pattern recognition, and other applications.
BRIEF DESCRIPTION OF THE DRAWINGS
[0002] The following detailed description references the drawings, wherein:
[0003] FIG. 1 A is a block diagram of an example code comparator; [0004] FIG. 1 B is a diagram of an example memristor array; [0005] FIG. 2 is a diagram of an example code comparator;
[0006] FIG. 3 is a block diagram of an example system for comparing a first code with a second code; and
[0007] FIG. 4 is a flowchart of an example method for comparing a first code with a second code.
DETAILED DESCRIPTION
[0008] For simplicity and illustrative purposes, the present disclosure is described by referring mainly to examples thereof. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It should be apparent, however, that the present disclosure may be practiced without limitation to these specific details. In other instances, some methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure. As used herein, the terms "a" and "an" are intended to denote at least one of a particular element, the term "includes" means includes but not limited to, the term "including" means including but not limited to, and the term "based on" means based at least in part on.
[0009] With the rapid growth in electronic communication, encryption and security has become increasingly important particularly in the presence of third parties. Digital signatures are a method for increasing security. A digital signature is a mathematical scheme for demonstrating authenticity of a digital message or document. Digital signatures and other security protocols may utilize frequent code checks to verify authenticable encryptions.
[0010] Memristors are devices that may be used as components in a wide range of electronic circuits, such as memories, switches, radio frequency circuits, and logic circuits and systems. A crossbar array of memristors may be used to store bits of information, 1 or 0. The resistance of a memristor may be changed by applying an electrical stimulus, such as a voltage or a current, through the memristor. Generally, at least one channel may be formed that is capable of being switched between two states— one in which the channel forms an electrically conductive path ("ON") and one in which the channel forms a less conductive path ("OFF"). In some other cases, conductive paths represent "OFF" and less conductive paths represent "ON". In such a manner, memristors may be switched between at least two resistance states.
[001 1 ] Examples disclosed herein provide for code comparators for comparing a first code with a second code. In example implementations, a code comparator may include a processor and a memristor array having a plurality of row lines, a plurality of column lines, and a plurality of memristors coupled between the row lines and the column lines. The example code comparator assigns a row voltage value to the plurality of row lines corresponding to a first code. The example code comparator assigns a column voltage value to the plurality of column lines according to a second code. The example code comparator causes a voltage to be applied to row lines according to the row voltage values and a voltage to be applied to column lines according to the column voltage values. The resistance state of a memristor of the array may change if there is a net voltage across it. Accordingly, the example code comparator may compare the first code with the second code based on the states of the memristors.
[0012] Referring now to the drawings, FIG. 1A depicts an example code comparator 100, which may include a processor 1 10 and a memristor array 120. Processor 1 10 and memristor array 120 may communicate via a connection. For example, processor 1 10 and memristor array 120 may be attached to an integrated circuit, which provides a connection between the two components. It should be understood that the code comparator depicted in FIG. 1A may include additional components and that some of the components described herein may be removed or modified without departing from the scope of code comparator 100.
[0013] Processor 1 10 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and/or other hardware devices suitable for executing instructions for comparing codes. As an alternative or in addition to retrieving and executing instructions, processor 1 10 may include one or more electronic circuits that include electronic components for performing the functionality described herein.
[0014] Memristor array 120 may be a configuration of sets of parallel crossing lines with memristors and/or other components coupled between intersections of lines. For example, memristor array 120 may have a first plurality of parallel lines referred to as row lines intersecting another plurality of parallel lines referred to as column lines, where memristors serve as cross-points of the lines. Each memristor of memristor array 120 may be coupled between a unique combination of a row line and a column line. In other words, no memristors share both a row line and a column line. As used herein, components may be coupled by forming an electrical connection between the components. For example, memristors may be coupled to lines by forming a direct, surface contact or by other forms of physical connection.
[0015] A memristor may be a device that may be programed to different resistive states by applying a voltage or current. Furthermore, a memristor may "memorize" its last resistance even if the applied voltage or current is removed. In such a manner, a memristor may store digital data. In some examples, a sufficiently high current compliance may be set on the memnstors to enable the resistance states of the memristors to be switched in response to the application of a voltage.
[0016] A memristor may be bipolar or unipolar. Bipolar memristors may depend on the polarity of an applied voltage. Specifically, bipolar memristors may be switched from a first state to a second state by application of a voltage of a first polarity, while they may be switched from the second state to the first state by application of a voltage of a second polarity. Unipolar memristors, on the other hand, may depend on the amplitude of an applied voltage.
[0017] In the examples provided herein, the memristors may have unipolar behavior. In some implementations, memristors may have nonpolar switching behavior. Nonpolar memristors may be unipolar memristors which may exhibit amplitude-based switching with both positive and negative voltages. In some examples, the positive voltage range and the negative voltage range that promote switching of a nonpolar memristor may be symmetrical with respective to each other.
[0018] To compare a first code with a second code, processor 1 10 may assign a row voltage value to at least one of the plurality of row lines. The row voltage may correspond to the first code, which for purposes of illustration may be the key code to which other codes are compared. For example, a digital code string may be assigned to the rows as two separate voltage values. For example, a row line corresponding to a digital "0" may be assigned a first row voltage, while a row line corresponding to a digital "1 " may be assigned a second row voltage. In some examples, the first row voltage may be below the switching voltage of the memristor, and the second row voltage may be above the switching voltage.
[0019] In some examples, the first code may be an analog code. Using analog values may allow increased security. For example, values in a bit string can be represented with more than two discrete voltage values as would be needed when using digital values. For example, for a bit string with digital value of 101 1 , the analog voltage for each value can be 15V, 0V, 10V, and 5V, while the digital form may normally be standardized voltage such as 5V, 0V, 5V, and 5V. In such examples, the difference between each voltage value may be larger than the switching voltage of the memristor. For example, the minimum difference between the voltage values provided in the above example is 5V, which may be larger than the switching voltage of the memristor.
[0020] Processor 1 10 may assign a column voltage value to at least one of the plurality of column lines. The column voltage may correspond to the second code, which for purposes of illustration may be the code to be compared with the key code of the first code. A digital code string may be assigned to the columns as two separate voltage values. For example, a column line corresponding to a digital "0" may be assigned a first column voltage, while a column line corresponding to a digital "1 " may be assigned a second row voltage. In some examples, the first column voltage may be below the switching voltage of the memristor, and the second column voltage may be above the switching voltage. Similarly in some examples, the second code may be an analog code.
[0021 ] In response to the row lines and column lines having been assigned voltage values according to the first code and the second code, respectively, processor 1 10 may cause a voltage to be applied to each line that is assigned a value. Specifically, processor 1 10 may cause a row voltage to be applied to each row according to the row voltage values assigned. Similarly, processor 1 10 may cause a column voltage to be applied to each column according to the column voltage values assigned.
[0022] When the row voltage value of a row line matches the column voltage value of the corresponding column line, the memristors will have no or minimum total voltage across it due to equipotential. Accordingly, the memristor will not be switched because the total voltage across it is below its switching voltage. However, if the voltages do not match, then the memristor may be switched. For example, if a row voltage of a memristor is 0V and the column voltage of the same memristor is 5V, the memristor will be switched. In such examples, a unipolar or nonpolar memristors may be used to allow switching regardless of the polarity of the voltage. A memristor being switched may indicate a mismatch between a bit of the first code and the corresponding bit of the second code.
[0023] To compare the two codes, processor 1 10 may compare the first code with the second code based on the states of the memristors of memristor array 120. For example, a state change of one or more memristors of the array 120 may indicate a code mismatch because the total current through memristor array 120 is changed from the total current through the array before the memristor state switch. In some implementations, processor 120 is to cause a read voltage to be applied across memristor array 120 to determine the total current across the array resulting from the applied read voltage.
[0024] In some examples, processor 1 10 may cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines. Application of the reset voltage may cause all of the memristors in the memristor array 120 to be in a common resistance state. In such examples, memristors of the memristor array 120 are recoverable and may be used multiple times for comparing codes.
[0025] In some other examples, the memristors of memristor array 120 are not resettable. For example, memristor in such instances may only be switched one time, and its resistance state may not be reset. This may provide further security features to the code comparator 100. For example, code comparator 100 may prevent brute force forgery attack, which may be useful in such high security applications, such as one time digital keys.
[0026] In some examples, processor 1 10 may implement the memristor array 120 as an accelerator to accelerate comparing the first code with the second code. That is, the processor 100 may implement the memristor array 120 to compare the codes in a manner that is relatively faster and more efficient than if the processor 1 10 itself was to compare the codes itself. In this regard, the memristor array 120 may be implemented as an accelerator of the processor 1 10, in which the memristor array 120 is implemented solely in the comparing of the first code and the second code.
[0027] Although not shown in FIG. 1A, the code comparator 100 may include a memory, which may be, for instance, a volatile or non-volatile memory, such as dynamic random access memory (DRAM), electrically erasable programmable read-only memory (EEPROM), magnetoresistive random access memory (MRAM), or the like. In this example, the machine readable instructions, for instance, corresponding to the operations disclosed herein, may be stored in the memory. According to an example, the memory (not shown) is a second memristor array on which the processor is to store data. In this example, the memristor array 120, which may operate solely as an accelerator, may be fabricated with the second memristor array, which may operate as a memory for the processor 120.
[0028] FIG. 1 B depicts an example memristor array 150. Memristor array 150 may be a configuration of parallel and perpendicular lines with memristors and other components coupled between lines at cross-points. Memristor array 150 may include a plurality of row lines 160, a plurality of column lines 170, and a plurality of memristors 180. Each memristor may be coupled between a unique combination of one row line and one column line. In other words, no memristor share both a row line and a column line. Memristor array 150 may be used in a variety of applications, including in code comparators disclosed herein, such as code comparator 100 of FIG. 1A.
[0029] Row lines 160 may be electrically conducting lines that carry current throughout memristor array 150. In some examples, row lines 160 may be in parallel to each other, generally with equal spacing. Row lines 160 may sometimes be referred to as bit lines. Depending on orientation, row lines 160 may alternatively be referred to as word lines. Similarly, column lines 170 may be conducting lines that run nonparallel to row lines 160. Column lines 170 may be referred to as word lines in some conventions. In other orientations, column lines 170 may refer to bit lines. Row lines 160 and column lines 170 may be made of conducting materials, such as platinum (Pt), tantalum (Ta), hafnium (Hf), zirconium (Zr), aluminum (Al), cobalt (Co), nickel (Ni), iron (Fe), niobium (Nb), molybdenum (Mo), tungsten (W), copper (Cu), titanium (Ti), tantalum nitrides (TaNx), titanium nitrides (TiNx), WN2, NbN, MoN, TiSi2, TiSi, Ti5Si3, TaSi2, WSi2, NbSi2, V3Si, electrically doped Si polycrystalline, electrically doped Ge polycrystalline, and combinations thereof. Row lines 160 and column lines 170 may serve as electrodes that deliver voltage and current to the memory cells 330.
[0030] Memristors 180 may be coupled between row lines 160 and column lines 170. In some implementations, a memristor 180 may have a resistance that changes with an applied voltage or current. Furthermore, memristor 180 may "memorize" its last resistance. In this manner, each memristor 180 may be set to at least two states. Furthermore in some examples, other components may be coupled with memristors 180. For example, each memristor may be coupled in series with a transistor and/or a selector. [0031 ] FIG. 2 depicts an example code comparator 200. It should be understood that the code comparator 200 depicted in FIG. 2 may include additional components and that some of the components described herein may be removed and/or modified without departing from a scope of the code comparator 200.
[0032] As shown in FIG. 2, code comparator 200 may include similar features as code comparator 100 depicted in FIG. 1A. Particularly, the code comparator 200 may include a processor 210 and a memristor array 220. The code comparator 200 is also depicted as including a voltage source 230 and a current reader 240 connected to the processor 1 10. In some examples, processor 210, memristor 220, voltage source 230, and current reader 240 may be provided and connected on a substrate.
[0033] As also shown, the memristor array 220 may have a diagonal cross-bar architecture, which includes a plurality of row lines 222a-222n and a plurality column lines 224a-224n. The variable "n" may represent an integer value greater than one. Each of the row lines 222a-222n and the column lines 224a-224n may be an electrically conductive wire, an electrode, or the like.
[0034] The memristor array 220 is also depicted as having a plurality of memristors 226 electrically connected to pairs of row lines 222a-222n and column lines 224a-224n. That is, a first memristor 226 is depicted as being electrically connected to the first row line 222a and the first column line 224a, a second memristor 226 is depicted as being electrically connected to the second row line 222b and the second column line 224b, and an nth memristor 226 is depicted as being electrically connected to the nth row line 222n and the nth column line 224n. In some examples, memristors 226 may be provided at each of the junctions of the row lines 222a-222n and the column lines 224a-224n. In other examples, the memristor array 220 includes the memristors 226 as depicted in FIG. 2.
[0035] The voltage source 230, which may be connected to a power supply (not shown), is also depicted as being connected to each of the row lines 222a-222n and the column lines 224a-224n. The connections between the voltage source 230 and the row inputs 222a-222n and the column inputs 224a-224n are shown as dotted lines to distinguish those lines from the row lines 222a-222n and the column lines 224a-224n. Processor 210 may control or otherwise cause the voltage source 230 to apply voltages at multiple levels to row lines 222a-222n and column lines 224a-224n. The multiple levels of voltages may include a resetting voltage, a read voltage, a voltage according to a row voltage value, and a voltage according to a column voltage value.
[0036] The processor 210 may control the voltage source 230 to supply different levels of voltages to row lines 222a-222n and column lines 224a-224n based upon the row voltage values and the column voltage values, respectively. The row voltage values in turn are based on a first code, and the column voltage values are based on a second code.
[0037] In some examples, each of the memristors 226 may be a unipolar memristor. That is, switching of the memristors 226 may depend on the amplitude of an applied voltage. In addition, the resistance states of the unipolar memristors 226 may be set and reset at the same polarity of the applied voltage. Moreover, states of the memristors 226 may be changed when there is a difference in potential across the memristors 226. That is, if the same voltage is applied to the first row line 222a and the first column line 224a, there will be an equal potential across the memristor 226 that is connected to the first row line 222a and the first column line 222b and thus, no electrical field will be generated across the memristor 226. In this instance, the state of the memristor 226 will not be changed. However, if a first voltage is applied to the first row line 222a and a second voltage is applied to the first column line 224a, there will be a difference in potential across the memristor 226, and thus, the state of the memristor 226 may be changed.
[0038] As discussed above, the different states of the memristors 226 correspond to different resistances in the memristors 226. That is, a memristor 226 in one state may have a different resistance as compared with a memristor 226 in another state. The states of the memristors 226 may thus affect the total current across the memristor array 220. Following application of the row voltages and column voltages through the memristor array 220 to compare the first code and the second code, processor 210 may cause voltage source 230 to apply a read voltage across memristor array 220. As the read voltage is applied, current reader 240 may determine the total current across the memristors 226 resulting from the applied read voltage.
[0039] Processor 120 may compare the first code with the second code based upon the determined total current. For example, of the total current across memristor array 220 is different than the total current across the array before the code comparison operations, then one of the memristors 226 may have been switched, indicating a code mismatch. In such a manner, the first code may be compared with the second code.
[0040] FIG. 3 depicts an example system 300 for comparing a first code with a second code. System 300 may be, for example, a IC, a hardware accelerator, a cloud server, a local area network server, a web server, a mainframe, a mobile computing device, a notebook or desktop computer, any other suitable electronic device, or a combination of devices, such as ones connected by a cloud or internet network, that perform the functions described herein. In the example shown in FIG. 3, system 300 includes a processor 310, a non-transitory machine-readable storage medium 320 encoded with instructions to compare codes, and a memristor array 330.
[0041 ] Processor 310 may be one or more central processing units (CPUs), semiconductor-based microprocessors, and/or other hardware devices suitable for retrieval and execution of instructions stored in machine-readable storage medium 320. Processor 310 may fetch, decode, and execute instructions 321 , 322, 323, 324, 325, 326, and 327 to implement the procedures described herein. As an alternative or in addition to retrieving and executing instructions, processor 310 may include one or more electronic circuits that include electronic components for performing the functionality of one or more of instructions 321 , 322, 323, 324, 325, 326, and 327.
[0042] Memristor array 330 may be analogous to memristor array 120 of FIG. 1A, and may be a configuration of sets of parallel crossing lines with memristors coupled between intersections of lines. Memristors may be switched between resistance states and may be bipolar or unipolar.
[0043] Machine-readable storage medium 320 may be any electronic, magnetic, optical, or other physical storage device that contains or stores executable instructions. Thus, machine-readable storage medium 320 may be, for example, Random Access Memory (RAM), an Electrically Erasable Programmable Read-Only Memory (EEPROM), a storage device, an optical disc, and the like. Storage medium 320 may be a non-transitory storage medium, where the term "non-transitory" does not encompass transitory propagating signals. As described in detail below, machine-readable storage medium 320 may be encoded with row voltage value instructions 321 , column voltage value instructions 322, row line voltage instructions 323, column line voltage instructions 324, read voltage instruction 325, code comparison instructions 326, and reset voltage instructions 327.
[0044] Machine-readable storage medium 320 may include row voltage value instructions 321 . Row voltage value instructions 321 may assign a row voltage value to at least one of the plurality of row lines. The row voltage value may correspond to the first code.
[0045] Machine-readable storage medium 320 may include column voltage value instructions 322. Column voltage value instructions 322 may assign a column voltage value to at least one of the plurality of column lines. The column voltage value may correspond to the second code.
[0046] Machine-readable storage medium 320 may include row line voltage instructions 323. Row line voltage instructions 323 may cause a voltage to be applied to each row line that is assigned a value. Specifically, Row line voltage instructions 323 may cause a row voltage to be applied to each row according to the row voltage values assigned by row voltage value instructions 321 .
[0047] Machine-readable storage medium 320 may include column line voltage instructions 324. Column line voltage instructions 324 may cause a voltage to be applied to each column line that is assigned a value. Specifically, Column line voltage instructions 324 may cause a column voltage to be applied to each column according to the column voltage values assigned by column voltage value instructions 322.
[0048] Machine-readable storage medium 320 may include read voltage instructions 325. Read voltage instructions 325 cause a read voltage to be applied across memristor array 330 to determine the total current across the array resulting from the applied read voltage.
[0049] Machine-readable storage medium 320 may also include code comparison instructions 326. For example, a state change of one or more memristors of the array 330 may indicate a code mismatch because the total current through memristor array 330 is changed from before the memristor state switch. Code comparison instructions 326 may compare the first code with the second code based on the total current across memristor array 330.
[0050] Machine-readable storage medium 320 may also include reset voltage instructions 327. Reset voltage instructions 327 may cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines. Application of the reset voltage may cause all of the memristors in the memristor array 330 to be in a common resistance state.
[0051 ] FIG. 4 depicts an example method 400 for comparing a first code with a second code. Although execution of method 400 is described below with reference to code comparator 100 of FIG. 1A, other suitable components for execution of method 500 should be apparent.
[0052] In an operation 410, processor 1 10 may cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines of memristor array 120. Application of the reset voltage may cause all of the memristors in the memristor array 120 to be in a common resistance state.
[0053] In an operation 420, processor 1 10 may assign a row voltage value to at least one of the plurality of row lines. The row voltage value may correspond to the first code.
[0054] In an operation 430, processor 1 10 may assign a column voltage value to at least one of the plurality of column lines. The row column value may correspond to the second code.
[0055] In an operation 440, processor 1 10 may cause a voltage to be applied to each row line that is assigned a value. Specifically, processor 1 10 may cause a row voltage to be applied to each row according to the row voltage values assigned in operation 420.
[0056] In an operation 450, processor 1 10 may cause a voltage to be applied to each column line that is assigned a value. Specifically, processor 1 10 may cause a column voltage to be applied to each column according to the column voltage values assigned in operation 430. [0057] Operation 440 and operation 450 may be operated simultaneously. In other words, processor 1 10 may simultaneously cause the row voltages to be applied to the row lines and the column voltages to be applied to the column lines. When the voltages are applied simultaneously, voltages of the same value may result in no net voltage due to equipotential. If the voltages are not applied simultaneously, one or more memristors may be erroneously switched.
[0058] In an operation 460, processor 1 10 may cause a read voltage to be applied across memristor array 120 to determine the total current across the array resulting from the read voltage applied.
[0059] In an operation 470, processor 1 10 may compare the first code with the second code based on the total current across memristor array 330.

Claims

CLAIMS What is claimed is:
1 . A code comparator, comprising:
a first memristor array comprising a plurality of row lines, a plurality of column lines, and a plurality of memristors, wherein each of the memristors is coupled between a unique combination of a row line and a column line; and
a processor to:
assign a row voltage value to at least one of the plurality of row lines, wherein the row voltage value corresponds to a first code;
assign a column voltage value to at least one of the plurality of column lines, wherein the column voltage value corresponds to a second code;
cause a voltage to be applied to each row line that is assigned a row voltage value according to the row voltage values;
cause a voltage to be applied to each column line that is assigned a column voltage value according to the column voltage values, wherein the state of the memristor is changed when the voltage applied to a particular row line differs from the voltage applied to the connected column line; and
compare the first code with the second code based on the states of the memristors.
2. The code comparator of claim 1 , wherein the plurality of memristors comprises unipolar switching memristors arranged in a diagonal crossbar architecture.
3. The code comparator of claim 2, wherein the plurality of memristors comprises nonpolar switching memristors.
4. The code comparator of claim 1 , wherein the processor is to cause a read voltage to be applied across the plurality of memristors to determine a total current across the plurality of memristors resulting from the applied read voltage.
5. The code comparator of claim 1 , wherein the memristors of the plurality of memristors have sufficiently high current compliances to enable states of the memristors to be switched.
6. The code comparator of claim 1 , wherein the processor is further to cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines, wherein application of the reset voltage is to cause all of memristors to be in a common resistance state.
7. The code comparator of claim 1 , wherein the memristors of the plurality of memristors are not resettable.
8. The code comparator of claim 1 , further comprising a second memristor array, wherein the first memristor array functions as an accelerator for the processor to accelerate code comparisons and wherein the processor is to store data in the second memristor array.
9. A method for comparing a first code with a second code, comprising:
assigning a row voltage value to at least one of a plurality of row lines of a memristor array, wherein the row voltage value corresponds to a first code and wherein the memristor array comprises the plurality of row lines, a plurality of column lines, and a plurality of memristors, wherein each of the memristors is coupled between a unique combination of a row line and a column line;
assigning a column voltage value to at least one of the plurality of column lines, wherein the column voltage value corresponds to a second code;
causing a voltage to be applied to each row line that is assigned a row voltage value according to the row voltage values;
causing a voltage to be applied to each column line that is assigned a column voltage value according to the column voltage values, wherein the state of the memristor is changed when the voltage applied to a particular row line differs from the voltage applied to the connected column line; and
causing a read voltage to be applied across the plurality of memristors to determine a total current across the plurality of memristors resulting from the applied read voltage.
10. The method of claim 9, further comprising comparing the first code with the second code based on the total current across the plurality of memristors resulting from the applied read voltage.
1 1 . The method of claim 9, further comprising causing a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines, wherein application of the reset voltage is to cause all of memristors to be in a common resistance state.
12. The method of claim 9, wherein the memristors of the plurality of memristors are not resettable.
13. A system for comparing a first code with a second code, comprising:
a first memristor array comprising a plurality of row lines, a plurality of column lines, and a plurality of memristors, wherein each of the memristors is coupled between a unique combination of a row line and a column line; and
a processor to:
assign a row voltage value to at least one of the plurality of row lines, wherein the row voltage value corresponds to a first code;
assign a column voltage value to at least one of the plurality of column lines, wherein the column voltage value corresponds to a second code;
cause a voltage to be applied to each row line that is assigned a row voltage value according to the row voltage values;
cause a voltage to be applied to each column line that is assigned a column voltage value according to the column voltage values, wherein the state of the memristor is changed when the voltage applied to a particular row line differs from the voltage applied to the connected column line;
cause a read voltage to be applied across the plurality of memristors to determine a total current across the plurality of memristors resulting from the applied read voltage; and
compare the first code with the second code based on the total current across the plurality of memristors resulting from the applied read voltage.
14. The system of claim 14, wherein the processor is further to cause a reset voltage to be applied to one or both of the plurality of row lines and the plurality of column lines, wherein application of the reset voltage is to cause all of memristors to be in a common resistance state.
15. The system of claim 14, wherein the memristors of the plurality of memristors are not resettable.
PCT/US2015/022666 2015-03-26 2015-03-26 Code comparators WO2016153513A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2015/022666 WO2016153513A1 (en) 2015-03-26 2015-03-26 Code comparators

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2015/022666 WO2016153513A1 (en) 2015-03-26 2015-03-26 Code comparators

Publications (1)

Publication Number Publication Date
WO2016153513A1 true WO2016153513A1 (en) 2016-09-29

Family

ID=56977661

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2015/022666 WO2016153513A1 (en) 2015-03-26 2015-03-26 Code comparators

Country Status (1)

Country Link
WO (1) WO2016153513A1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018143943A1 (en) * 2017-01-31 2018-08-09 Hewlett-Packard Development Company, L.P. Memristor code comparator to compare wake up signals to reference signals
KR102251043B1 (en) * 2020-01-16 2021-05-12 국민대학교산학협력단 Memory device, operating method of the memory device, and memory system including the same

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222342A1 (en) * 2006-04-03 2008-09-11 Blaise Laurent Mouttet Crossbar comparator
US20130010521A1 (en) * 2010-03-25 2013-01-10 Richard Carter Systems and methods for row-wire voltage-loss compensation in crossbar arrays
US20130070534A1 (en) * 2010-04-30 2013-03-21 Richard J. Carter Programmable current-limited voltage buffer, integrated-circuit device and method for current-limiting a memory element
US20130250708A1 (en) * 2010-07-30 2013-09-26 Gadiel Seroussi Memory element and method for determining the data state of a memory element
US20140313816A1 (en) * 2011-10-12 2014-10-23 Gilberto M. Ribeiro Select device for cross point memory structures

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080222342A1 (en) * 2006-04-03 2008-09-11 Blaise Laurent Mouttet Crossbar comparator
US20130010521A1 (en) * 2010-03-25 2013-01-10 Richard Carter Systems and methods for row-wire voltage-loss compensation in crossbar arrays
US20130070534A1 (en) * 2010-04-30 2013-03-21 Richard J. Carter Programmable current-limited voltage buffer, integrated-circuit device and method for current-limiting a memory element
US20130250708A1 (en) * 2010-07-30 2013-09-26 Gadiel Seroussi Memory element and method for determining the data state of a memory element
US20140313816A1 (en) * 2011-10-12 2014-10-23 Gilberto M. Ribeiro Select device for cross point memory structures

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018143943A1 (en) * 2017-01-31 2018-08-09 Hewlett-Packard Development Company, L.P. Memristor code comparator to compare wake up signals to reference signals
US11304140B2 (en) 2017-01-31 2022-04-12 Hewlett-Packard Development Company, L.P. Memristor code comparator to compare wake up signals to reference signals
KR102251043B1 (en) * 2020-01-16 2021-05-12 국민대학교산학협력단 Memory device, operating method of the memory device, and memory system including the same

Similar Documents

Publication Publication Date Title
CN109522753B (en) Circuit structure and driving method thereof, chip and authentication method thereof, and electronic device
Lastras-Montano et al. Resistive random-access memory based on ratioed memristors
US11024378B2 (en) Memory systems and memory programming methods
US9997244B1 (en) RRAM-based authentication circuit
CN107533858B (en) Crossbar array, image processor and method for programming memory cell
CN109509495B (en) Operation method of resistive random access memory, operation device of resistive random access memory, chip and chip authentication method
KR101566949B1 (en) Reconfigurable physically unclonable function apparatus and operating method thereof
US9911490B2 (en) Memory controllers
US10090033B2 (en) PUF circuit and magnetoresistive device and control method thereof
US10056142B2 (en) Generating a representative logic indicator of grouped memristors
JP2023523233A (en) Secure Chip Identification Using Resistive Processing Units as Physically Hard-to-Replicate Functions
CN111339579B (en) Electronic device and operation method thereof
US9911789B2 (en) 1-Selector n-Resistor memristive devices
US9934854B2 (en) Memory controllers comparing a difference between measured voltages with a reference voltage difference
US9812196B2 (en) Geometry dependent voltage biases for asymmetric resistive memories
US9269428B2 (en) RRAM memory device and method thereof
WO2016153513A1 (en) Code comparators
CN110751968A (en) Circuit structure for PUF, method for acquiring PUF data and electronic device
US10049730B2 (en) Crossbar arrays with shared drivers
US10748614B2 (en) Semiconductor device and programming method therefor
US8405530B2 (en) Encoding data based on weight constraints
WO2016122525A1 (en) Hamming distance computation
WO2016167785A1 (en) Determining resistive state of memristors
US20230102410A1 (en) Regular expression filter for unicode transformation format strings
US11894061B2 (en) Non-volatile memory programming circuit and a method of programming non-volatile memory devices

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 15886668

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 15886668

Country of ref document: EP

Kind code of ref document: A1