EP4627483A1 - Méthode et circuit de réalisation d'opérations de multiplication et d'accumulation en mémoire - Google Patents

Méthode et circuit de réalisation d'opérations de multiplication et d'accumulation en mémoire

Info

Publication number
EP4627483A1
EP4627483A1 EP23814141.0A EP23814141A EP4627483A1 EP 4627483 A1 EP4627483 A1 EP 4627483A1 EP 23814141 A EP23814141 A EP 23814141A EP 4627483 A1 EP4627483 A1 EP 4627483A1
Authority
EP
European Patent Office
Prior art keywords
block
accumulation
line
vector
accumulation line
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
EP23814141.0A
Other languages
German (de)
English (en)
Inventor
Kévin HÉRISSÉ
Benoît LARRAS
Antoine FRAPPÉ
Andreas Kaiser
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Junia
Centre National de la Recherche Scientifique CNRS
Universite de Valenciennes et du Hainaut Cambresis
Universite de Lille
Original Assignee
Junia
Centre National de la Recherche Scientifique CNRS
Universite de Valenciennes et du Hainaut Cambresis
Universite de Lille
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 Junia, Centre National de la Recherche Scientifique CNRS, Universite de Valenciennes et du Hainaut Cambresis, Universite de Lille filed Critical Junia
Publication of EP4627483A1 publication Critical patent/EP4627483A1/fr
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization

Definitions

  • MAC multiplication and accumulation
  • the time masks are preferably generated in the form of pulses.
  • the time masks PX and PW can be generated by a time mask generator block located outside memory, that is to say outside the memory of the electronic chip where the operands are stored ⁇ ⁇ ⁇ and ⁇ ⁇ , ⁇ .
  • This scenario corresponds to the presence of a single control signal controlling a single current intensity value in absolute value, in loading or unloading the accumulation line, such as: ..., ⁇ .
  • a single control signal controlling a single current intensity value in absolute value in loading or unloading the accumulation line, such as: ..., ⁇ .
  • the voltage ⁇ ⁇ ⁇ across the accumulation line for a multiplication and accumulation operation can be equal to: C being the value of the capacity of the accumulation line and I the current intensity of the current source.
  • the capacitance of the accumulation line can be a parasitic and/or distributed capacitance.
  • the logic block includes NAND and/or NOR logic gates.
  • the logic block may include a first logic sub-block for the temporal masking of the bits ⁇ ⁇ and a second logic sub-block for the temporal masking of the weight bits ⁇ ⁇ , ⁇ ⁇ , these two sub-blocks being cascaded so that the outputs of the first sub-block are at the input of the second sub-block.
  • the first sub-block receiving as input the time masks PX and PW as well as the bits ⁇ ⁇ [0: ⁇ ⁇ ⁇ 2], can include two stages of logic gates: - a first stage comprising several levels of logic gates, the levels being connected in cascade so that the signal or signals output from one level are the signal or signals input to the next level until resulting in a single signal at output, first stage in which each bit ⁇ ⁇ [0: ⁇ ⁇ ⁇ 2] and the associated time mask PX are at the input of a first level logic gate, in particular a NAND or NOR gate; and - a second stage comprising at least one level of logic gates, in which the output signal from the first stage and each PW time mask are at the input of a logic gate of said level, in particular a NAND or NOR gate.
  • the second sub-block receiving as input the output signals of the first sub-block and the weight bits ⁇ ⁇ , ⁇ [0: ⁇ ⁇ ⁇ 2] , may include several levels of logic gates, the levels being connected in cascade so that the signal or signals output from a level are the input signal or signals of the next level until resulting in a single output signal corresponding to the control signal SC, each first level logic gate receiving as input an output signal from the first sub-block and the bit of weight ⁇ ⁇ , ⁇ [0: ⁇ ⁇ ⁇ 2] corresponding.
  • the second sub-block may include an XOR or XNOR gate receiving as input the sign bit ⁇ ⁇ [ ⁇ ⁇ ⁇ ⁇ ] of the bit vector ⁇ ⁇ ⁇ and the sign bit ⁇ ⁇ , ⁇ [ ⁇ ⁇ ⁇ ⁇ ] of the bit vector ⁇ ⁇ ⁇ , ⁇ .
  • an XOR gate can be used for the sign bits.
  • an XNOR gate can be used for the sign bits.
  • said at least one current source is created by current mirrors using CMOS transistors.
  • the current mirrors preferably comprise PMOS transistors for charging the accumulation line and NMOS transistors for discharging said line.
  • the current mirrors have a cascoded architecture. This makes it possible to increase the output impedance of the current mirrors and to have a more stable current value despite the variation in the voltage of the accumulation line.
  • the circuit comprises at least one electronic switch, being in particular a transmission gate, controlled by the control signal SC for the activation of said at least one current source.
  • the circuit may include at least one capacitor at the output of said at least one electronic switch to increase the capacity of the accumulation line.
  • the circuit preferably comprises a secondary accumulation line connected to the accumulation line via a follower amplifier. Such a secondary accumulation line is intended to control the current.
  • the circuit includes a follower amplifier connected between the accumulation line and the secondary accumulation line.
  • a follower amplifier connected between the accumulation line and the secondary accumulation line. This has the advantage of allowing each of the two accumulation lines to remain at the same voltage level in order to counteract the charge sharing effect when the switches open and close.
  • the circuit comprises an analog-digital converter connected either directly to the accumulation line in the absence of an accumulation line secondary, or to the secondary accumulation line in particular by means of a tracking amplifier.
  • the analog-digital converter can include: - two analog comparators, one comparing the value of the load of the accumulation line to which the analog-digital converter is connected to +LSB and the other to -LSB; - a counter configured to increment or decrement depending on the result of the comparison of the comparators, and whose output is that of the converter; - a charge injector block configured to return the charge of the accumulation line connected to the converter to its initial value in the case where the counter indicates that this line has been discharged; and - a discharger block configured to discharge the accumulation line connected to the converter and return it to its initial value in the case where the counter indicates that it has been charged.
  • the analog-digital converter may include a lookup table (LUT: “Look Up Table” in English) receiving the output of the meter as input and being configured to apply at the output a substitution value chosen during calibration and/or corresponding to an activation function.
  • LUT “Look Up Table” in English
  • the output of the LUT acts via a feedback loop on the values of the +LSB and -LSB reference inputs of the analog comparators and/or on the unit time and/or unit current.
  • the correspondence table can make it possible to correct the non-linearities of the circuit or to respect any other form of response. We can act on the unit time in the case where there is a single control signal controlling a current source.
  • the analog-digital converter comprises: - two analog comparators each configured to compare the voltage of the accumulation line to which the analog-digital converter is connected to a predefined threshold: a first comparator comparing said voltage to a threshold of high voltage V H , in particular +LSB, and configured to activate when the voltage of the accumulation line is greater than VH and a second comparator comparing said voltage of the accumulation line to a low voltage threshold V L , in particular at -LSB and configured to activate when the voltage of the accumulation line is lower than V L ; - a digital block configured to convert the results of the comparisons into two distinct output signals: a first signal signaling the activation of one of the two comparators and a second signal specifying which of the two comparators has been activated; - a counter configured to increment or decrement depending on the signals output from the digital block, and whose output is that of the converter; - a charge injector block connected to the outputs of the digital block and configured to return the charge of the accumulation line connected to the converter to its
  • the analog-digital converter comprises a timing circuit, being connected to the outputs of the digital block and configured to generate a pulse of a duration T necessary for charging or discharging the line, each of the injector blocks and discharger comprising at least one current source and an associated switch controlled by the timing circuit so as to close the switch associated with the injector block, and open the switch associated with the discharger block, during the time T to charge the discharge line accumulation until it returns to its initial value, in the case where the low threshold comparator is activated indicating that the line has been discharged creating a voltage drop corresponding to -1 LSB, or to close the switch associated with the discharger block and open the switch associated with the injector block, during the time T to discharge the accumulation line until it returns to its initial value, in the case where the high threshold comparator is activated indicating that the line has been loaded creating a voltage increase corresponding to + LSB.
  • the invention also relates, according to another of its aspects, to a method of injecting and removing charges from the accumulation line of the circuit according to the invention, comprising: - the connection of only one of the capacitors peripherals to the main capacitor, called the first peripheral capacitor, this first peripheral capacitor having been previously connected to V DD ; - when the voltage of the accumulation line reaches the high voltage threshold V H , the disconnection of the first peripheral capacitor from the main capacitor and the connection of a second peripheral capacitor having previously been connected to ground; and - when the voltage of the accumulation line reaches the low voltage threshold V L , disconnecting the second peripheral capacitor from the main capacitor and connecting a third peripheral capacitor having been previously connected to V DD .
  • the invention also relates, according to another of its aspects, to a method of initializing the accumulation line of the circuit according to the invention at the voltage V DD /2, in which opening and closing are alternated. switches so that only the peripheral capacitors of the same branch are connected to the main capacitor (310).
  • the circuit includes a temporal mask generator block located outside memory.
  • the circuit according to the invention preferably comprises a single current intensity value in absolute value, controlled by a single control signal SC.
  • the current sources will be activated during a unit reference time T weighted by the weights of the terms of the scalar product of Figure 5.
  • Figure 6 shows such a signal corresponding to the temporal evolution of the terms of the scalar product of Figure 5.
  • the accumulation line will be charged or discharged using the current sources.
  • the method according to the invention exploits the time required to charge an accumulation line for a long period with a low current, thanks to recent advanced CMOS technology. If we take a reference unit time T of 20 ns, the total time for a 5-bit MAC operation is 5 ⁇ s. For an accumulation line that can receive the result of 100 MACs, the throughput is 50 GOPS (Giga Operations Per Second).
  • Figure 7 represents the curve of the temporal evolution of the voltage at the level of an accumulation line during a calculation of 100 MAC.
  • the line is initialized at 0.5 V (half the dynamics of a circuit powered at 1 V) in order to be able to represent negative values.
  • an LG logic block receiving these vectors and time masks as input associated PX and PW is implemented.
  • Figure 8 illustrates a first example of temporal mask timing diagrams where the generation of these signals begins with the lowest weighting.
  • a time mask PX, PW is generated for each bit of the elements of the vector X and the weight matrix W.
  • the first stage 10 comprises 4 levels of logic gates, the levels being connected in cascade so that the signal or the output signals of one level are the input signal or signals of the next level until resulting in a single output signal 101.
  • Each bit X j [0], ..., X j [3] and the associated time mask PX(0), ..., PX(3) are at the input of a first level logic gate, in this case a NAND gate with 2 inputs.
  • the second stage 11 comprises in this example two levels of logic gates: a level of NAND gates with two inputs and a level of NOT gates.
  • the signal 101 at the output of the first stage and each time mask PW(0), ..., PW(3) are at the input of a logic gate of the NAND gate level.
  • the NOT gate level outputs four signals denoted XW(0), ..., XW(3) which will be injected at the input of the second logic sub-block.
  • Figure 11 schematically represents an example of a second LGW logic sub-block for the temporal masking of the 4-bit weight vector ⁇ ⁇ , ⁇ .
  • the second sub-block LGW receives as input the output signals of the first sub-block XW(0), ..., XW(3) and the weight bits W j,i [0], ..., W j ,i [3] and comprises several levels of logic gates, in this case 4 levels, these levels being connected in cascade so that the signal or signals output from a level are the signal or signals input to the level following until arriving at a single output signal corresponding to the control signal SC.
  • Each first level logic gate (a two-input NAND gate in this example) receives as input an output signal XW(0), ..., XW(3) from the first sub-block LGX and the weight bit W j ,i [0], ..., W j,i [3] corresponding.
  • the second LGW sub-block also includes an XNOR gate receiving as input the sign bit ⁇ ⁇ [ ⁇ ⁇ ⁇ ⁇ ] of the vector ⁇ ⁇ ( ⁇ ⁇ [4]) and the sign bit ⁇ ⁇ , ⁇ [ ⁇ ⁇ ⁇ ⁇ ⁇ ] of the vector ⁇ ⁇ , ⁇ ( ⁇ ⁇ , ⁇ [4]).
  • FIG. 12 shows the timing diagram of the control signal SC resulting from a simulation of the scalar product of the vectors ⁇ ⁇ and ⁇ ⁇ , ⁇ given as an example in Figures 10 to 12.
  • FIG. 14 schematically illustrates the architecture of a circuit 1 according to the invention.
  • This circuit includes a generator PG of time masks PX, PW, logic sub-blocks LGX, LGW, current sources CS, switches SW, accumulation lines AL and analog-to-digital converters ADC.
  • the generator PG is preferably located outside memory and generates time masks PX, PW for all the logical sub-blocks LGX associated with the vectors X 1 , ..., X a .
  • the outputs straight, W 1,n , ..., W m,n , the indices in the second position going from 1 to n corresponding to the columns of the matrix.
  • the values of the vectors energy like a SRAM memory.
  • Each bit is preferably stored individually to be used as input to the logic block.
  • each column of the matrix W is associated with an accumulation line AL and an analog-digital converter ADC.
  • the XW outputs are brought back to the input of the corresponding LGW logic sub-block, to obtain a control signal and a polarization signal (not shown in Figure 14).
  • the polarization signal makes it possible to control a switch SW which will activate the current source CS connected to it to charge or discharge the accumulation line AL in accordance with the temporal evolution of the control signal.
  • a first embodiment of current sources CS that can be used in the circuit of Figure 14 is illustrated in Figure 15.
  • the current sources CS are created using current mirrors.
  • a current mirror composed of PMOS transistors 14 charges the accumulation line AL and another mirror composed of NMOS transistors 15 discharges the accumulation line AL.
  • Figure 15 shows an accumulation line AL where the outputs of the current mirrors are connected to the accumulation line AL via switches SW.
  • the transistors used can be of standard type, but when the number of transistors in a current mirror increases, thick oxide transistors can be used to reduce gate leakage.
  • an electronic switch SW of the transmission gate type (“pass gate switch” in English) is preferentially used.
  • FIG 17 schematically represents an example of such an electronic switch SW comprising two transistors, an NMOS 17 and a PMOS 16, the drains of which are connected together and the sources too.
  • the signal applied to the gate of one of these transistors is the binary complement of that applied to the gate of the other.
  • This switch provides good performance along the dynamics.
  • the AL accumulation line includes a metal line. Its capacitance is that of the metal line and all the parasitic capacitances 18 of the electronic switches SW which are connected to the accumulation line, as shown schematically in Figure 18.
  • the value of the line is easily estimated in the simulations and the Current source value can be adjusted to match the capacity of the accumulation line.
  • the capacity of the accumulation line can be increased by adding additional capacitors to the output of the switches.
  • a secondary accumulation line DAL is added to control the current.
  • a follower operational amplifier 19 can be connected between the two accumulation lines AL and DAL so that each remains at the same voltage level in order to counteract the charge sharing effect when the switches SW open and close.
  • Figure 20 is similar to Figure 19 representing in addition switches connected to the accumulation lines.
  • the secondary accumulation line DAL can be manufactured with a lower capacity than the accumulation line AL, so that the loads are shared in proportion to the ratio between the capacities of the two lines.
  • the analog-digital converter ADC is connected either directly to the accumulation line AL in the absence of secondary accumulation line DAL, or to the secondary accumulation line DAL in particular by means of a follower operational amplifier 20 such as shown in Figure 19.
  • Figure 21 schematically represents a first embodiment of an analog-digital converter ADC which can be used in the circuit of Figure 14.
  • the analog-digital converter ADC comprises two analog comparators 22 and 23, one comparing to +LSB and the other to -LSB the value of the charge of the accumulation line 21 to which the analog-digital converter ADC is connected.
  • the analog-digital converter also includes a counter 24 configured to increment or decrement depending on the result of the comparison of the analog comparators 22 and 23, and whose output 30 is that of the converter.
  • the analog-digital converter ADC also includes a charge injector block 25 configured to return the charge of the accumulation line 21 connected to the converter to its initial value in the case where the counter indicates that this line has been discharged, and a block discharger 26 configured to discharge the accumulation line 21 connected to the converter and return it to its initial value in the case where the counter 24 indicates that it has been charged.
  • Figures 22 and 23 schematically illustrate two variants of the converter of Figure 21 in which the converter includes a feedback loop 32 for calibration purposes. Indeed, a feedback loop 32 can be introduced either to modify the value of an LSB as a function of the output value of the counter 24 (case illustrated in Figure 22), or to modify the unit time T in the generator of temporal masks PG (case illustrated in Figure 23).
  • the feedback loop 32 can be used to modify, instead of the unit time T, a unit current I of an elementary current source, as will be explained later in relation to Figures 25 to 27.
  • the analog-digital converter ADC comprises a correspondence table LUT receiving as input the output 30 of the counter 24 and being configured to apply at the output a substitution value corresponding to an activation function or a correction for calibration purposes.
  • a feedback loop 32 applies the output of the LUT to the values of the +LSB and -LSB reference inputs of the analog comparators 22 and 23 and/or is used to adjust the unit time and/or the unit current.
  • the feedback loop 32 applies the output of the LUT correspondence table to the +LSB and -LSB reference inputs of comparators 22 and 23.
  • said loop 32 applies the output of the LUT correspondence table to the time mask generator PG to modify the unit time T or to the reference current source to modify the reference current I.
  • the correspondence table can thus make it possible to calibrate the circuit by correcting the non-linearities or to obtain a predefined non-linear response which can correspond to a artificial intelligence activation function.
  • Figure 30 schematically illustrates a fourth embodiment of an analog-digital converter that can be used in the circuit of Figure 14. This converter is called level crossing, and is connected to a accumulation line whose voltage Vm is representative of the result of multiplication and accumulation operations.
  • this ADC converter comprises: - two analog comparators 222, 233, each configured to compare the voltage of the accumulation line 21 to which the analog-digital converter is connected to a predefined threshold: a first comparator 222 comparing said voltage to a high voltage threshold V H , in particular +LSB, and configured to activate when the voltage of the accumulation line 21 is greater than V H and a second comparator 233 comparing said voltage of the accumulation line 21 at a low voltage threshold V L , in particular at -LSB and configured to activate when the voltage of the accumulation line 21 is less than V L ; - a digital block 243 configured to convert the results of the comparisons into two distinct output signals: a first signal signaling the activation of one of the two comparators and a second signal specifying which of the two comparators has been activated; - a counter 244 configured to increment or decrement depending on the signals output from the digital block, and the output 30 of which is that of the converter; - a charge injector block 25 connected to the output
  • the injector 25 and discharger 26 blocks can be implemented in different ways, two of which are described below: a first method consisting of using current sources to charge/discharge the accumulation line and a second method consisting of using a network of capacitors.
  • Figure 31 represents an example of implementation of the converter illustrated in Figure 30 according to the first method, with current sources.
  • the analog-digital converter ADC comprises a timing circuit 270, being connected to the outputs of the digital block 243 and configured to generate a pulse of a duration T necessary for charging or discharging the line.
  • Each of the injector 25 and discharger 26 blocks comprises at least one current source 250; 260 and an associated switch 251; 261 controlled by the timing circuit 270 so as to close the switch associated with the injector block, and open the switch associated with the discharger block, during the time T to charge the accumulation line until it returns to its initial value , in the case where the low threshold comparator is activated indicating that the line has been discharged creating a voltage drop corresponding to -1 LSB, or to close the switch associated with the discharger block and open the switch associated with the injector block, during the time T to discharge the accumulation line until bringing it back to its initial value, in the case where the high threshold comparator is activated indicating that the line has been charged creating a voltage increase corresponding to + LSB.
  • Figure 32 represents an example of implementation of the converter illustrated in Figure 30 according to the second method, with a network of capacitors.
  • the analog-digital converter ADC comprises a network of capacitors 300, a finite state machine 280 and blocks for generating non-overlapping clocks NOC (“Non-overlapping Clocks” in English).
  • the network of capacitors 300 includes a main capacitor 310 directly connected to the accumulation line 21 and to ground, peripheral capacitors 320 and switches 330.
  • the peripheral capacitors 320 and the switches 330 form two branches of which the ends are connected to the reference voltages, namely VDD and ground.
  • the switches 330 are each placed between each peripheral capacitor 320 and the main capacitor 310 or between each peripheral capacitor 320 and one of the reference voltages.
  • Each pair of switches directly connected to the same peripheral capacitor is controlled by two complementary signals, for example ⁇ h1 and ⁇ h 1 .
  • the asynchronous finite state machine 280 connected to the outputs of the digital block 243 and configured to control the switches 330 based on the comparison results.
  • the non-overlapping clock generation blocks NOC are at the output of the state machine 280.
  • Each NOC block is configured to generate a pair of complementary signals for controlling the switches 330, for example ⁇ ⁇ 2 and ⁇ ⁇ 2 , ensuring that the switches do not create a short circuit between one of the reference voltages and the accumulation line.
  • Figure 33 is a timing diagram of the voltages associated with the second example of Figure 32. This timing diagram shows the order of operation for resetting the accumulation line 21. First there is one of the capacities ⁇ ⁇ ⁇ located on a first branch which is connected to ⁇ (all peripheral capacities having the same value). In this example, the first connected capacitor is that associated with the switch controlled by the signal ⁇ h1 . The current ⁇ ⁇ h ⁇ ⁇ ⁇ charges the capacitive line 21.
  • the operating principle of the circuit in Figure 34 is as follows. Suppose that the voltage ⁇ ⁇ ⁇ ⁇ of line 21 is initialized to . As the line charges, the voltage ⁇ ⁇ ⁇ ⁇ increases until it reaches ⁇ ⁇ .
  • FIG. 36 schematically represents two instances of the network of capacitors 300 of Figure 34 to illustrate an alternation of opening and closing of the switches 330 forming part of said network. In fact, we alternate the opening and closing of the switches so that only the peripheral capacitors 320 of the same branch are connected to the main capacitor 310.
  • the 4 bits are distributed unequally between the 2 sources, so that the control signals are such that: 20 Figure 29 is similar to Figure 27 representing a set of circuits according to the invention, with the current weighting variant, in the case of a 4-bit multiplication with unequal distribution of the bits between the 2 current sources .
  • the transistors of the higher weighting current sources have a ratio of 8W/L. Indeed, as the second current source is only controlled by the bit ⁇ ⁇ , ⁇ [3] and PW(3) is equivalent to PW(0), the current carries weighting 2 3 . It is therefore necessary to modify the size of the transistor by the same factor.
  • the invention is not limited to the exemplary embodiments described above.
  • the logic block can be implemented with different logic gates, typically NOR gates instead of NAND gates.
  • the frequency of the time mask generator block can be varied to meet the needs of the target application.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Analysis (AREA)
  • Computational Mathematics (AREA)
  • Software Systems (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computing Systems (AREA)
  • Biophysics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Neurology (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Memory System (AREA)
  • Analogue/Digital Conversion (AREA)

Abstract

Méthode de réalisation d'opérations de multiplication et d'accumulation en mémoire dans laquelle on détermine le résultat du produit matriciel O d'un vecteur X = [X1 X2... Xm] ayant m éléments représentés chacun sur (nx — 1) bits et d'une matrice (I) composée de m x n éléments représentés chacun sur (nw — 1) bits, chaque élément du produit matriciel étant la somme de produits scalaires (II), lesdites opérations conduisant au produit scalaire en appliquant à des portes logiques les valeurs desdits vecteurs et celles de masques temporels associés PX et PW de sorte à générer au moins un signal de commande SC d'au moins une source de courant, le signal de commande SC activant ladite au moins une source de courant de façon à accumuler des charges capacitives dans une ligne d'accumulation.

Description

Description Titre : Méthode et circuit de réalisation d’opérations de multiplication et d’accumulation en mémoire Domaine technique La présente invention concerne le domaine du calcul en mémoire, et concerne plus particulièrement une méthode de réalisation de multiplication et d’accumulation en mémoire et un circuit associé, notamment pour un réseau de neurones où l’opération de base pour un perceptron est la multiplication et l’accumulation (MAC). Technique antérieure L'émergence de l'internet des objets crée une demande croissante de solutions informatiques à ultra-basse consommation pour apporter de l'intelligence artificielle à de tels appareils. Le surcoût de consommation empêchant l'apprentissage automatique sur les systèmes embarqués provient de la consommation due aux mouvements de données. Dans une architecture « Von Neumann » classique, il faut déplacer les données stockées de la mémoire au processeur pour les calculer pas à pas. Dans l’exemple donné à la publication Boris Murmann “Mixed-Signal Processing Opportunities for AI”, pour réaliser une opération MAC (une multiplication et une addition), il faut récupérer les données de la mémoire quatre fois. En prenant le coût d'accès aux seules données et en estimant cet accès à 50fJ/octet, la consommation globale est de 200fJ/MAC, plafonnant l’efficacité à 10 TOPS/W. Une façon d'alléger cette contrainte, que l'on appelle le mur de la mémoire (« memory wall » en anglais) ou le « goulot d'étranglement de Von Neumann », est d'amener les éléments de traitement (« processing elements » en anglais) à l'intérieur de la mémoire afin d’éviter une perte d'énergie en accédant aux données. Le calcul en mémoire (« in-memory computing » en anglais) est une technique consistant à exécuter des calculs informatiques entièrement dans la mémoire de l'ordinateur. Le traitement en mémoire est une méthode pour résoudre les inconvénients, notamment en termes de performances et de coût énergétique, causés par le déplacement des données entre le processeur et la mémoire. La figure 1 présente le principe du calcul en mémoire d’opérations MAC dans l’art antérieur. Un vecteur numérique [X1, ..., Xm] est diffusé sur plusieurs lignes. La multiplication de ce vecteur par des éléments d’une matrice de poids W s’effectue à l'intérieur de la mémoire où la matrice de poids W est stockée. L'accumulation, dans le domaine du courant ou de la tension, s’effectue au niveau de chaque colonne dans une ligne capacitive, également appelée ligne d'accumulation AL. Cette méthode à signaux mixtes produit le résultat des opérations MAC en analogique, un convertisseur analogique-numérique A/D au bout de chaque ligne d'accumulation AL convertissant le résultat en numérique, représenté par le vecteur [O1, ..., On], afin que ce résultat soit réutilisable. Chaque ligne d'accumulation AL est l’équivalent d’un perceptron sans la fonction d'activation. Il existe différentes approches dans l’art antérieur pour effectuer un tel calcul en mémoire. Dans une approche résistive illustrée à la figure 2 et faisant l’objet de l’article Q. Liu et al. « A Fully Integrated Analog ReRAM Based 78.4 TOPS/W Compute-In-Memory Chip with Fully Parallel MAC Computing », des memristors sont utilisés pour effectuer la multiplication. Le vecteur X est envoyé sous forme de tension analogique sur toutes les lignes. Les poids W sont stockés en tant que valeurs de conductance des memristors, modulant le courant à travers chaque ligne d’accumulation AL. Cependant, cette approche nécessite des convertisseurs numérique-analogique avec des courants en sortie d’intensité importante et un comparateur de courant. Il est possible d'effectuer des opérations multi-bits avec cette approche en utilisant jusqu'à 16 états de conductance, selon l’article susmentionné. Les variations de processus empêchent d'atteindre un nombre de bits supérieur. De plus, en termes de dissipation d'énergie, l'écriture nécessite des pics de courant importants (de l'ordre de 6μA dans la publication Nguyen Cong Dao et al. “Memristor-based Reconfigurable Circuits: Challenges in Implementation”). Il est à noter qu'un compromis existe entre la consommation d'énergie et la variabilité. Dans une approche capacitive illustrée à la figure 3 et faisant l’objet de la publication D. Bankman et al. « An 8-bit, 16 input, 3.2 pJ/op switched-capacitor dot product circuit in 28- nm FDSOI CMOS », la multiplication est basée sur le partage de charges ou de courants sur une ligne capacitive, en utilisant généralement des portes XNOR pour la multiplication binaire. Les condensateurs unitaires sont chargés en fonction de chaque multiplication binaire et les charges sont redistribuées sur tous les condensateurs au niveau d'une ligne d’accumulation AL, ce qui donne une tension à convertir par le convertisseur analogique- numérique. Pour effectuer une opération multi-bits avec des condensateurs commutés, l’article Boris Murmann “Mixed-Signal Computing for Deep Neural Network Inference” montre une topologie similaire à un multiplicateur numérique utilisant une ligne d’accumulation pour chaque bit. Cependant, cette méthode nécessite des circuits supplémentaires pour combiner tous les résultats de la ligne, ce qui est suffisant pour un nombre réduit de lignes (< 5) mais augmente la consommation d'énergie pour un nombre de bits plus élevé. Exposé de l’invention Il existe donc un besoin pour perfectionner les techniques de multiplication et d’accumulation (MAC) en mémoire, notamment en termes de consommation énergétique. Méthode de réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire L’invention vise à répondre à cet objectif et a pour objet, selon l’un de ses aspects, une méthode de réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire, notamment pour un réseau de neurones, dans laquelle on détermine le résultat du produit matriciel ^^^^ d’un vecteur ^^^^ = ^^^^2 … ^^^^ ^^^^ ] composé de ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − 1) bits et d’une matrice W composée de ^^^^ × ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − 1) bits : chaque élément du produit matriciel ^^^^ étant la somme de produits scalaires ^^^^ ^^^^ = vecteur de bits ^^^^ ^^^^ = [ ^^^^ ^^^^[0], … , ^^^^ ^^^^[ ^^^^ ^^^^ − 2]] et le vecteur de bits de poids ^^^^ ^^^^, ^^^^ = [ ^^^^ ^^^^, ^^^^[0], … , ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ − 2]], les opérations de multiplication et d’accumulation conduisant au produit scalaire ^^^^ ^^^^, ^^^^ en appliquant à un ensemble de portes logiques les valeurs des vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ et celles de masques temporels associés, les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^ et les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^, ^^^^, de sorte à générer au moins un signal de commande SC d’au moins une source de courant, le signal de commande SC activant ladite au moins une source de courant de façon à accumuler des charges capacitives dans une ligne d’accumulation, notamment de manière proportionnelle au produit scalaire ^^^^ ^^^^, ^^^^. Par « la réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire », on entend l’exécution de ces opérations dans une mémoire de la puce électronique où sont stockées les opérandes ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^. Par « activer la source de courant », on entend permettre à ladite source de débiter un courant circulant dans la ligne d’accumulation. L’invention fournit une nouvelle méthode de calcul d’opérations MAC en mémoire en réduisant la puissance consommée. De préférence, l’un au moins des deux vecteurs est signé, ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur ^^^^ ^^^^ et/ou ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur de bits de poids ^^^^ ^^^^, ^^^^, l’ensemble de portes logiques générant un signal de polarité SP = ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] × ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] chargeant ou déchargeant la ligne d’accumulation. Les masques temporels sont préférentiellement générés sous forme d’impulsions. Les masques temporels PX et PW peuvent être générés par un bloc générateur de masques temporels situé hors mémoire, c’est-à-dire à l’extérieur de la mémoire de la puce électronique où sont stockées les opérandes ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^. Dans un mode de réalisation, les masques temporels ^^^^ ^^^^( ^^^^) sont générés de manière à s’activer successivement pendant une durée ^^^^ ^^^^ sensiblement égale à 2 ^^^^ ∗ (∑ ^^^^ ^^^^−2 ^^^^ ^^^^=0 2 ∗ ^^^^), T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible, les masques temporels ^^^^ ^^^^( ^^^^) étant générés de manière à s’activer successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T. Ce cas de figure correspond à la présence d’un seul signal de commande commandant une seule valeur d’intensité de courant en valeur absolue, en chargeant ou déchargeant la ligne d’accumulation, tel que : ..., ^^^^}. Il y a ici une pondération par le temps d’activation de la source de courant. Dans ce cas de figure, la tension ^^^^ ^^^^ ^^^^ aux bornes de la ligne d’accumulation pour une opération de multiplication et d’accumulation peut être égale à : C étant la valeur de la capacité de la ligne d’accumulation et I l’intensité du courant de la source de courant. Notons que la capacité de la ligne d’accumulation peut être une capacité parasite et/ou distribuée. Dans le cas où au moins deux sources de courant sont présentes, chacune étant commandée par un signal de commande SC respectif, les masques temporels PW(d) peuvent être générés de manière à s’activer successivement pendant une durée ^^^^ sensiblement égal ^^^^ ^^^^ e à Td = 2 ∗ (∑ ^^^^ ^^^^−2 ^^^^=0 2 ^^^^ ∗ ^^^^), avec d ∈ {0, ..., max ( ^^^^ ^^^^ − ^^^^ ^^^^)}, les ( ^^^^ ^^^^ − 1) bits de PW étant répartis en k intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^], k étant le nombre de sources de courant ou de signaux de commande, avec l ∈ {0, ..., ^^^^ − 1}, ^^^^ ^^^^ ≥ ^^^^ ^^^^, { ^^^^ ^^^^, ^^^^ ^^^^} ∈ [0, ( ^^^^ ^^^^ − 2)], ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ étant choisis de telle sorte que l’ensemble des intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^ ] représente une partition de l’intervalle [0 , ^^^^ ^^^^ − 2], l’intervalle le plus long étant [0 , max( ^^^^ ^^^^ − ^^^^ ^^^^ )] , T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible, les masques temporels ^^^^ ^^^^( ^^^^) étant générés de manière à s’activer successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T. Ce cas de figure correspond à la présence de plusieurs signaux de commande ^^^^ ^^^^ ^^^^, ^^^^, ^^^^ commandant k sources de courant, ^^^^ ≥ 2, en chargeant ou déchargeant la ligne d’accumulation, tels que : Il y a ici une pondération par le courant, en ayant plusieurs sources de courant, pondérées par une puissance de deux et commandées par des signaux de commande représentatifs des valeurs des bits associés à cette pondération. Cela augmente avantageusement la vitesse de calcul en réduisant la durée des signaux de commande. Dans ce cas, la tension ^^^^ ^^^^ ^^^^ aux bornes de la ligne d’accumulation pour une opération de multiplication et d’accumulation peut être égale à : C étant la valeur de la capacité de la ligne d’accumulation et I l’intensité du courant de la source de courant de poids le plus faible (i.e. pour ^^^^ ^^^^=0). Par exemple, dans le cas où ( ^^^^ ^^^^ − 1) = 4 et ^^^^ = 2, il est possible de répartir les 4 bits équitablement entre les deux sources : Circuit de réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire L’invention a encore pour objet, selon un autre de ses aspects, un circuit de réalisation d’opérations de multiplication et d’accumulation en mémoire, notamment pour un réseau de neurones, configuré pour déterminer le résultat du produit matriciel ^^^^ d’un vecteur ^^^^ = [ ^^^^1 ^^^^2 … ^^^^ ^^^^] composé de ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − 1) bits et d’une matrice 1, ^^^^� composée de ^^^^ × ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − 1) ^^^^ ^^^^, ^^^^ bits : chaque élément du produit matriciel ^^^^ étant la somme de produits scalaires ^^^^ ^^^^ = vecteur de bits ^^^^ ^^^^ = [ ^^^^ ^^^^[0], … , ^^^^ ^^^^[ ^^^^ ^^^^ − 2]] et le vecteur de bits de poids ^^^^ ^^^^, ^^^^ = [ ^^^^ ^^^^, ^^^^[0], … , ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ − 2]], le circuit comportant : - un bloc logique comportant des portes logiques auxquelles sont appliquées les valeurs des vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ et celles de masques temporels associés, les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^ et les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^, ^^^^, le bloc logique étant configuré pour générer en sortie au moins un signal de commande SC destiné à activer au moins une source de courant, et - ladite au moins une source de courant configurée pour être activée par le signal de commande SC de sorte à accumuler des charges capacitives dans une ligne d’accumulation. De préférence, l’un au moins des deux vecteurs est signé, ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur ^^^^ ^^^^ et/ou ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur de bits de poids ^^^^ ^^^^, ^^^^, ladite ligne d’accumulation étant configurée pour être chargée ou déchargée en fonction d’un signal de polarité SP = ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] × ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] ce signal SP étant notamment obtenu en sortie d’une porte logique XOR ou XNOR recevant en entrée le bit de signe ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] et le bit de signe [ ^^^^ ^^^^ ^^^^ ^^^^]. Dans un mode de réalisation, le bloc logique comporte des portes logiques NAND et/ou NOR. Le bloc logique peut comporter un premier sous-bloc logique pour le masquage temporel des bits ^^^^ ^^^^ et un deuxième sous-bloc logique pour le masquage temporel des bits de poids ^^^^ ^^^^, ^^^^, ces deux sous-blocs étant mis en cascade de sorte que les sorties du premier sous-bloc soient en entrée du deuxième sous-bloc. Le premier sous-bloc, recevant en entrée les masques temporels PX et PW ainsi que les bits ^^^^ ^^^^[0: ^^^^ ^^^^ − 2], peut comporter deux étages de portes logiques : - un premier étage comportant plusieurs niveaux de portes logiques, les niveaux étant connectés en cascade de sorte que le signal ou les signaux en sortie d’un niveau soient le signal ou les signaux en entrée du niveau suivant jusqu’à aboutir à un seul signal en sortie, premier étage dans lequel chaque bit ^^^^ ^^^^[0: ^^^^ ^^^^ − 2] et le masque temporel PX associé sont en entrée d’une porte logique de premier niveau, notamment une porte NAND ou NOR ; et - un deuxième étage comportant au moins un niveau de portes logiques, dans lequel le signal en sortie du premier étage et chaque masque temporel PW sont en entrée d’une porte logique dudit niveau, notamment une porte NAND ou NOR. Le deuxième sous-bloc, recevant en entrée les signaux en sortie du premier sous-bloc et les bits de poids ^^^^ ^^^^, ^^^^[0: ^^^^ ^^^^ − 2], peut comporter plusieurs niveaux de portes logiques, les niveaux étant connectés en cascade de sorte que le signal ou les signaux en sortie d’un niveau soient le signal ou les signaux en entrée du niveau suivant jusqu’à aboutir à un seul signal en sortie correspondant au signal de commande SC, chaque porte logique de premier niveau recevant en entrée un signal en sortie du premier sous-bloc et le bit de poids ^^^^ ^^^^, ^^^^[0: ^^^^ ^^^^ − 2] correspondant. Le deuxième sous-bloc peut comporter une porte XOR ou XNOR recevant en entrée le bit de signe ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] du vecteur de bits ^^^^ ^^^^ et le bit de signe ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] du vecteur de bit ^^^^ ^^^^, ^^^^. Si le signe positif est interprété comme un ‘0’ binaire et le signe négatif comme un ‘1’ binaire, une porte XOR peut être utilisée pour les bits de signe. Si le signe positif est interprété comme un ‘1’ binaire et le signe négatif comme un ‘0’ binaire, une porte XNOR peut être utilisée pour les bits de signe. Dans un mode de réalisation, ladite au moins une source de courant est créée par des miroirs de courant utilisant des transistors CMOS. Les miroirs de courant comprennent préférentiellement des transistors PMOS pour charger la ligne d’accumulation et des transistors NMOS pour décharger ladite ligne. De préférence, les miroirs de courant ont une architecture cascodée. Ceci permet d’augmenter l’impédance de sortie des miroirs de courant et d’avoir une valeur de courant plus stable en dépit de la variation de la tension de la ligne d’accumulation. Dans un mode de réalisation, le circuit comporte au moins un interrupteur électronique, étant notamment une porte de transmission, commandé par le signal de commande SC pour l’activation de ladite au moins une source de courant. Le circuit peut comporter au moins un condensateur en sortie dudit au moins un interrupteur électronique pour augmenter la capacité de la ligne d’accumulation. Le circuit comporte préférentiellement une ligne d’accumulation secondaire connectée à la ligne d’accumulation par l’intermédiaire d’un amplificateur suiveur. Une telle ligne d’accumulation secondaire est destinée à piloter le courant. De préférence, le circuit comporte un amplificateur suiveur connecté entre la ligne d’accumulation et la ligne d’accumulation secondaire. Ceci a pour avantage de permettre que chacune des deux lignes d’accumulation reste au même niveau de tension dans le but de contrecarrer l'effet de partage de charges lorsque les interrupteurs s'ouvrent et se ferment. Dans un mode de réalisation, le circuit comporte un convertisseur analogique-numérique connecté soit directement à la ligne d’accumulation en l’absence de ligne d’accumulation secondaire, soit à la ligne d’accumulation secondaire notamment par le biais d’un amplificateur suiveur. Le convertisseur analogique-numérique peut comporter : - deux comparateurs analogiques, l’un comparant à +LSB et l’autre à -LSB la valeur de la charge de la ligne d’accumulation à laquelle le convertisseur analogique-numérique est connecté ; - un compteur configuré pour s’incrémenter ou décrémenter en fonction du résultat de la comparaison des comparateurs, et dont la sortie est celle du convertisseur ; - un bloc injecteur de charges configuré pour ramener la charge de la ligne d’accumulation connectée au convertisseur à sa valeur initiale dans le cas où le compteur indique que cette ligne a été déchargée ; et - un bloc déchargeur configuré pour décharger la ligne d’accumulation connectée au convertisseur et la ramener à sa valeur initiale dans le cas où le compteur indique qu’elle a été chargée. Le convertisseur analogique-numérique peut comporter une table de correspondance (LUT : « Look Up Table » en anglais) recevant en entrée la sortie du compteur et étant configurée pour appliquer en sortie une valeur de substitution choisie lors de l’étalonnage et/ou correspondant à une fonction d’activation. Dans le cas notamment où les valeurs de la table LUT sont choisies lors de l’étalonnage, la sortie de la LUT agit via une boucle de rétroaction sur les valeurs des entrées de référence +LSB et -LSB des comparateurs analogiques et/ou sur le temps unitaire et/ou sur le courant unitaire. La table de correspondance peut permettre de corriger les non-linéarités du circuit ou de respecter toute autre forme de réponse. On peut agir sur le temps unitaire dans le cas où il existe un seul signal de commande contrôlant une source de courant. On peut agir sur le courant unitaire dans le cas où il existe plusieurs signaux de commande contrôlant plusieurs sources de courant générant un multiple de ce courant. On peut agir sur les valeurs des entrées de référence +LSB et -LSB dans l’un ou l’autre des cas susmentionnés. Cet étalonnage peut être effectué au moins une fois pour mesurer les non-linéarités du circuit, le calibrer et réduire l’erreur de sortie. Il est aussi possible, en choisissant des valeurs appropriées pour la LUT, d'imiter une fonction d'activation en intelligence artificielle, en ajustant la valeur d’un paramètre de la génération du signal de commande. Une fonction d'activation sert à modifier de manière non linéaire les données. Cela peut être une sigmoïde, ou Tanh, ou ReLU, etc. Elle représente notamment la réponse non linéaire prédéfinie que l’on cherche à obtenir. En variante, le convertisseur analogique-numérique comporte : - deux comparateurs analogiques configurés chacun pour comparer la tension de la ligne d’accumulation à laquelle le convertisseur analogique-numérique est connecté à un seuil prédéfini : un premier comparateur comparant ladite tension à un seuil de tension haut VH, notamment +LSB, et configuré pour s’activer lorsque la tension de la ligne d’accumulation est supérieure à VH et un deuxième comparateur comparant ladite la tension de la ligne d’accumulation à un seuil de tension bas VL, notamment à -LSB et configuré pour s’activer lorsque la tension de la ligne d’accumulation est inférieure à VL; - un bloc numérique configuré pour convertir les résultats des comparaisons en deux signaux de sortie distincts : un premier signal signalant l'activation de l'un des deux comparateurs et un deuxième signal spécifiant lequel des deux comparateurs s’est activé ; - un compteur configuré pour s’incrémenter ou se décrémenter en fonction des signaux en sortie du bloc numérique, et dont la sortie est celle du convertisseur ; - un bloc injecteur de charges connecté aux sorties du bloc numérique et configuré pour ramener la charge de la ligne d’accumulation connectée au convertisseur à sa valeur initiale dans le cas où le bloc numérique indique que cette ligne a été déchargée ; et - un bloc déchargeur connecté aux sorties du bloc numérique et configuré pour décharger la ligne d’accumulation connectée au convertisseur et la ramener à sa valeur initiale dans le cas où le bloc numérique indique que cette ligne a été chargée. Dans un mode de réalisation, le convertisseur analogique-numérique comporte un circuit de temporisation, étant connecté aux sorties du bloc numérique et configuré pour générer une impulsion d’une durée T nécessaire pour la charge ou décharge de la ligne, chacun des blocs injecteur et déchargeur comprenant au moins une source de courant et un interrupteur associé commandé par le circuit de temporisation de sorte à fermer l’interrupteur associé au bloc injecteur, et ouvrir l’interrupteur associé au bloc déchargeur, pendant le temps T pour charger la ligne d’accumulation jusqu’à la ramener à sa valeur initiale, dans le cas où le comparateur du seuil bas est activé indiquant que la ligne a été déchargée créant une chute de tension correspondant à -1 LSB, ou à fermer l’interrupteur associé au bloc déchargeur et ouvrir l’interrupteur associé au bloc injecteur, pendant le temps T pour décharger la ligne d’accumulation jusqu’à la ramener à sa valeur initiale, dans le cas où le comparateur du seuil haut est activé indiquant que la ligne a été chargée créant une hausse de tension correspondant à + LSB. Dans un autre mode de réalisation, le convertisseur analogique-numérique comporte : - un réseau de condensateurs comprenant un condensateur principal directement relié à la ligne d’accumulation et à la masse, des condensateurs périphériques et des interrupteurs, la capacité de chaque condensateur périphérique étant proportionnelle à la capacité du condensateur principal d’un facteur α correspondant aux charges nécessaires pour compenser +/- 1 LSB, de préférence α = ^^^^ ^^^^− ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ , les condensateurs périphériques et les interrupteurs formant deux branches dont les extrémités sont connectées aux tensions de référence, à savoir VDD et la masse, les interrupteurs étant chacun placés entre chaque condensateur périphérique et le condensateur principal ou entre chaque condensateur périphérique et l’une des tensions de référence, chaque paire d’interrupteurs directement connectés à un même condensateur périphérique étant commandée par deux signaux complémentaires ; - une machine à états finis asynchrone reliée aux sorties du bloc numérique et configurée pour contrôler les interrupteurs en fonction des résultats de comparaison ; et - des blocs de génération d’horloges non recouvrantes NOC (« Non overlapping Clocks » en anglais) en sortie de la machine à états, chaque bloc étant configuré pour générer une paire de signaux complémentaires de commande des interrupteurs, assurant que les interrupteurs ne créent pas de court-circuit entre l’une des tensions de référence et la ligne d’accumulation. L’invention a encore pour objet, selon un autre de ses aspects, un procédé de d’injection et de prélèvement de charges de la ligne d’accumulation du circuit selon l’invention, comportant : - la connexion d’un seul des condensateurs périphériques au condensateur principal, dit premier condensateur périphérique, ce premier condensateur périphérique ayant été préalablement connecté à VDD ; - lorsque la tension de la ligne d’accumulation atteint le seuil de tension haut VH, la déconnexion du premier condensateur périphérique du condensateur principal et la connexion d’un deuxième condensateur périphérique ayant été préalablement connecté à la masse ; et - lorsque la tension de la ligne d’accumulation atteint le seuil de tension bas VL, la déconnexion du deuxième condensateur périphérique du condensateur principal et la connexion d’un troisième condensateur périphérique ayant été préalablement connecté à VDD. L’invention a également pour objet, selon un autre de ses aspects, un procédé d’initialisation de la ligne d’accumulation du circuit selon l’invention à la tension VDD/2, dans lequel on alterne l’ouverture et la fermeture des interrupteurs de sorte que seulement les condensateurs périphériques d’une même branche soient reliés au condensateur principal (310). Dans un mode de réalisation, le circuit comporte un bloc générateur de masques temporels situé hors mémoire. Dans un mode de réalisation, le bloc générateur est configuré pour générer les masques temporels de sorte que les masques temporels PW(d) soient activés successivement pendant une durée ^^^^ ^^^^ sensiblement égale à 2 ^^^^ ∗ (∑ ^^^^ ^^^^−2 ^^^^ ^^^^=0 2 ∗ ^^^^), et que les masques temporels PX(c) soient activés successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T, T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible. Dans ce cas de figure, le circuit selon l’invention comporte préférentiellement une seule valeur d’intensité de courant en valeur absolue, commandée par un seul signal de commande SC. Dans un autre mode de réalisation, le circuit selon l’invention comporte au moins deux sources de courant, chacune étant commandée par un signal de commande SC respectif, le bloc générateur étant configuré pour générer les masques temporels de sorte que les masques temporels PW(d) soient activés successivement pendant une durée Td sensiblement égale à avec d ∈ {0, ..., max ( ^^^^ ^^^^ − ^^^^ ^^^^)}, les ( ^^^^ ^^^^ − 1) bits de PW étant répartis en k intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^ ], k étant le nombre de sources de courant ou de signaux de commande, avec l ∈ {0, ..., ^^^^ − 1}, ^^^^ ^^^^ ≥ ^^^^ ^^^^, { ^^^^ ^^^^, ^^^^ ^^^^} ∈ [ 0, ( ^^^^ ^^^^ − 2 )] , ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ étant choisis de telle sorte que l’ensemble des intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^] représente une partition de l’intervalle [0 , ^^^^ ^^^^ − 2], l’intervalle le plus long étant [0 , max( ^^^^ ^^^^ − ^^^^ ^^^^)] , T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible, et que les masques temporels PX(c) soient activés successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T. L’invention a également pour objet, selon un autre de ses aspects, un ensemble de circuits de réalisation d’opérations de multiplication et d’accumulation MAC en mémoire, notamment pour un réseau de neurones, configuré pour déterminer le résultat du produit matriciel d’un vecteur ^^^^ = [ ^^^^1 ^^^^2 … ^^^^ ^^^^ ] par une matrice de poids comportant une pluralité de circuits selon l’invention mis en parallèle les uns avec les autres et partageant un seul bloc générateur de masques temporels situé hors mémoire. Brève description des dessins L’invention pourra être mieux comprise à la lecture de la description détaillée qui va suivre, d’exemples non limitatifs de mise en œuvre de celle-ci, et à l’examen du dessin annexé, sur lequel : [Fig 1] la figure 1 illustre schématiquement le principe du calcul en mémoire d’opérations MAC dans l’art antérieur ; [Fig 2] la figure 2 représente schématiquement un exemple de calcul en mémoire d’opérations MAC selon une approche résistive dans l’art antérieur ; [Fig 3] la figure 3 illustre schématiquement un exemple de calcul en mémoire d’opérations MAC selon une approche capacitive dans l’art antérieur ; [Fig 4] la figure 4 est une vue d’un circuit représentant schématiquement le principe du calcul en mémoire d’une opération MAC selon l’invention ; [Fig 5] la figure 5 rappelle l’équation du produit scalaire de deux vecteurs de 4 bits chacun ; [Fig 6] la figure 6 montre l’évolution temporelle des termes du produit scalaire de la figure 5 ; [Fig 7] la figure 7 représente la courbe de l’évolution temporelle de la tension au niveau d’une ligne d’accumulation pendant un calcul de 100 MAC ; [Fig 8] la figure 8 illustre un premier exemple de chronogrammes de masques temporels ; [Fig 9] la figure 9 représente un deuxième exemple de chronogrammes de masques temporels ; [Fig 10] la figure 10 illustre schématiquement un exemple de premier sous-bloc logique pour le masquage temporel d’un vecteur binaire ^^^^ ^^^^ à 4 bits ; [Fig 11] la figure 11 représente schématiquement un exemple de deuxième sous-bloc logique pour le masquage temporel d’un vecteur binaire ^^^^ ^^^^, ^^^^ à 4 bits ; [Fig 12] la figure 12 est analogue à la figure 8 et montre les détails d’une partie du produit scalaire desdits vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ à partir des masques temporels ; [Fig 13] la figure 13 montre le chronogramme du signal de commande résultant d’une simulation du produit scalaire des vecteurs X et W donnée en exemple aux figures 10 à 12 ; [Fig 14] la figure 14 illustre schématiquement l’architecture d’un circuit selon l’invention ; [Fig 15] la figure 15 représente schématiquement un premier mode de réalisation de sources de courant pouvant être utilisées dans le circuit de la figure 14 ; [Fig 16] la figure 16 illustre schématiquement un deuxième mode de réalisation de sources de courant pouvant être utilisées dans le circuit de la figure 14 ; [Fig 17] la figure 17 représente schématiquement un exemple d’un interrupteur pouvant être utilisé dans le circuit de la figure 14 ; [Fig 18] la figure 18 illustre schématiquement une ligne d’accumulation pouvant être utilisée dans le circuit de la figure 14 ; [Fig 19] la figure 19 représente schématiquement une ligne d’accumulation et une ligne d’accumulation secondaire pouvant être utilisées dans le circuit de la figure 14 ; [Fig 20] la figure 20 est similaire à la figure 19 représentant en plus des interrupteurs connectés aux lignes d’accumulation ; [Fig 21] la figure 21 représente schématiquement un premier mode de réalisation d’un convertisseur analogique-numérique pouvant être utilisé dans le circuit de la figure 14 ; [Fig 22] la figure 22 illustre schématiquement un deuxième mode de réalisation d’un convertisseur analogique-numérique pouvant être utilisé dans le circuit de la figure 14 ; [Fig 23] la figure 23 représente schématiquement un troisième mode de réalisation d’un convertisseur analogique-numérique pouvant être utilisé dans le circuit de la figure 14 ; [Fig 24] la figure 24 illustre schématiquement un exemple d’architecture d’un ensemble de circuits selon l’invention avec l’approche de pondération temporelle ; [Fig 25] la figure 25 représente schématiquement un exemple de circuit selon l’invention fonctionnant selon l’approche de pondération par le courant ; [Fig 26] la figure 26 illustre un premier exemple de chronogrammes de masques temporels pouvant être utilisés pour le circuit de la figure 25 ; [Fig 27] la figure 27 représente schématiquement un premier exemple d’architecture d’un ensemble de circuits selon l’invention avec l’approche de pondération par le courant ; [Fig 28] la figure 28 illustre un deuxième exemple de chronogrammes de masques temporels pouvant être utilisés pour le circuit de la figure 25 ; [Fig 29] la figure 29 représente schématiquement un deuxième exemple d’architecture d’un ensemble de circuits selon l’invention avec l’approche de pondération par le courant ; [Fig 30] la figure 30 illustre schématiquement un quatrième mode de réalisation d’un convertisseur analogique-numérique pouvant être utilisé dans le circuit de la figure 14 ; [Fig 31] la figure 31 représente un premier exemple d’implémentation du convertisseur illustré à la figure 30 ; [Fig 32] la figure 32 représente un deuxième exemple d’implémentation du convertisseur illustré à la figure 30 ; [Fig 33] la figure 33 est un chronogramme des tensions associées au deuxième exemple de la figure 32 ; [Fig 34] la figure 34 représente schématiquement un réseau de condensateurs avec des interrupteurs, pouvant être utilisé dans le deuxième exemple de la figure 32 ; [Fig 35] la figure 35 est analogue à la figure 34, après commutation des interrupteurs ; et [Fig 36] la figure 36 représente schématiquement deux instances du réseau de condensateurs de la figure 34 pour illustrer une alternance d’ouverture et fermeture d’interrupteurs faisant partie dudit réseau lors de la phase d’initialisation. Description détaillée Les figures 1 à 3 se réfèrent à des exemples de l’art antérieur et ont été décrites plus haut. On a illustré schématiquement à la figure 4 un circuit illustrant le principe du calcul en mémoire d’une opération MAC selon l’invention. Ce principe repose sur l’accumulation de charges sur une ligne capacitive AL par le biais de sources de courant CS. L’exemple illustré se rapporte à une multiplication ternaire d’un bit X par un bit de poids W en tenant compte des bits de signes respectifs auxquels ils sont associés. Une telle multiplication ternaire est implémentée dans un bloc logique LG dont la sortie est un signal de commande qui, selon le signe du résultat de la multiplication ternaire, active un interrupteur SW qui permet à une source de courant CS soit de charger ou de décharger la ligne capacitive AL. Le résultat est ensuite numérisé par un convertisseur analogique-numérique ADC. Ce principe d’accumulation de charges sur une ligne d’accumulation sera extrapolé à une multiplication multi bit. La figure 5 rappelle l’équation du produit scalaire de deux vecteurs, un vecteur X et un vecteur de poids W, de 4 bits chacun. ^^^^ ^^^^ ∗ ^^^^ ^^^^, ^^^^ = ∑ ^^^^ ^^^^−2 ^^^^=0 2 ^^^^ ^^^^ ^^^^, ^^^^[ ^^^^])(∑ ^^^^ ^^^^−2 ^^^^ ^^^^=0 2 ^^^^ ^^^^) , avec ^^^^ ^^^^ = 4 et ^^^^ ^^^^ = 4, les vecteurs n’ayant pas de bit de signe dans cet exemple. Un signal de commande, représentant ce produit scalaire, sera utilisé pour contrôler des sources de courant. A cet effet, les sources de courant seront activées pendant un temps unitaire de référence T pondéré par les poids des termes du produit scalaire de la figure 5. La figure 6 montre un tel signal correspondant à l’évolution temporelle des termes du produit scalaire de la figure 5. Selon le signe du produit scalaire, la ligne d’accumulation sera chargée ou déchargée en utilisant les sources de courant. La méthode selon l’invention exploite le temps nécessaire pour charger une ligne d’accumulation pendant une longue période avec un faible courant, grâce à la récente technologie avancée CMOS. Si on prend un temps unitaire de référence T de 20 ns, le temps total pour une opération MAC de 5 bits est de 5 μs. Pour une ligne d'accumulation pouvant recevoir le résultat de 100 MAC, le débit est de 50 GOPS (Giga Opérations Par Seconde). Ce débit est suffisamment élevé pour de nombreuses applications telles que les applications audio, notamment l’identification de mots clés ou « Key Word Spotting » (KWS) en anglais où une nouvelle donnée entre toutes les 10 ms. La figure 7 représente la courbe de l’évolution temporelle de la tension au niveau d’une ligne d’accumulation pendant un calcul de 100 MAC. La ligne est initialisée à 0.5 V (la moitié de la dynamique d'un circuit alimenté à 1 V) afin de pouvoir représenter des valeurs négatives. Pour obtenir le signal de commande représentant le produit scalaire des vecteurs multi bit ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^, un bloc logique LG recevant en entrée ces vecteurs et des masques temporels associés PX et PW est implémenté. La figure 8 illustre un premier exemple de chronogrammes de masques temporels où la génération de ces signaux commence par la pondération la plus faible. Un masque temporel PX, PW est généré pour chaque bit des éléments du vecteur X et de la matrice de poids W. Dans le cas d’une multiplication 4 bits, il y a besoin de 4 masques temporels. Il y a donc 8 masques temporels au total : PX=[PX(0), ..., PX(3)] associés aux bits des éléments du vecteur X et PW=[PW(0), ..., PW(3)] associés aux bits des éléments de la matrice de poids W. Les masques temporels PW(d) sont de préférence générés de manière à s’activer successivement pendant une durée ^^^^ ^^^^ sensiblement égale à 2 ^^^^ ∗ (∑3 ^^^^=02 ^^^^ ∗ ^^^^), T étant le temps unitaire de référence correspondant à la durée d’activation du masque temporel associé au bit ^^^^ ^^^^ de poids le plus faible, les masques temporels PX(c) étant générés de manière à s’activer successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à Il est également possible que la génération des signaux PX et PW commence par la pondération la plus forte, comme illustré sur l’exemple de la figure 9, ou dans n'importe quel ordre, tant que les masques temporels PX et PW sont synchronisés. Le bloc logique LG recevant en entrée les vecteurs X et W et les masques temporels associés PX et PW comprend préférentiellement un premier sous-bloc logique pour le masquage temporel des bits X et un deuxième sous-bloc logique pour le masquage temporel des bits de poids W, ces deux sous-blocs étant mis en cascade de sorte que les sorties du premier sous-bloc soient en entrée du deuxième sous-bloc. La figure 10 illustre schématiquement un exemple de premier sous-bloc logique LGX pour le masquage temporel d’un vecteur binaire ^^^^ ^^^^ à 4 bits. Le premier sous-bloc logique LGX comporte deux étages de portes logiques : un premier étage 10 et un deuxième étage 11. Dans cet exemple, le premier étage 10 comporte 4 niveaux de portes logiques, les niveaux étant connectés en cascade de sorte que le signal ou les signaux en sortie d’un niveau soient le signal ou les signaux en entrée du niveau suivant jusqu’à aboutir à un seul signal en sortie 101. Chaque bit Xj[0], ..., Xj[3] et le masque temporel PX(0), ..., PX(3) associé sont en entrée d’une porte logique de premier niveau, en l’occurrence une porte NAND à 2 entrées. Le signal 101 en sortie du premier étage représente donc la valeur suivante : ∑3 ^^^^=0 ^^^^ ^^^^( ^^^^) ∗ ^^^^ ^^^^[ ^^^^]. Le deuxième étage 11 comporte dans cet exemple deux niveaux de portes logiques : un niveau de portes NAND à deux entrées et un niveau de portes NOT. Le signal 101 en sortie du premier étage et chaque masque temporel PW(0), ..., PW(3) sont en entrée d’une porte logique du niveau de portes NAND. Le niveau de portes NOT donne en sortie quatre signaux notés XW(0), ..., XW(3) qui vont être injectés en entrée du deuxième sous-bloc logique. La figure 11 représente schématiquement un exemple de deuxième sous-bloc logique LGW pour le masquage temporel du vecteur de poids ^^^^ ^^^^, ^^^^ à 4 bits. Le deuxième sous-bloc LGW reçoit en entrée les signaux en sortie du premier sous-bloc XW(0), ..., XW(3) et les bits de poids Wj,i[0], ..., Wj,i[3] et comporte plusieurs niveaux de portes logiques, en l’occurrence 4 niveaux, ces niveaux étant connectés en cascade de sorte que le signal ou les signaux en sortie d’un niveau soient le signal ou les signaux en entrée du niveau suivant jusqu’à aboutir à un seul signal en sortie correspondant au signal de commande SC. Chaque porte logique de premier niveau (une porte NAND à deux entrées dans cet exemple) reçoit en entrée un signal en sortie XW(0), ..., XW(3) du premier sous- bloc LGX et le bit de poids Wj,i[0], ..., Wj,i[3] correspondant. Le signal SC représente donc la valeur suivante Le deuxième sous-bloc LGW comporte également une porte XNOR recevant en entrée le bit de signe ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] du vecteur ^^^^ ^^^^ ( ^^^^ ^^^^[4]) et le bit de signe ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] du vecteur ^^^^ ^^^^, ^^^^ ( ^^^^ ^^^^, ^^^^[4]). La sortie de la porte XNOR donne un signal de polarité SP = ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^]* ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^]. En fonction de sa valeur (+ ou -) représentative du signe du produit scalaire des vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^, SP active un des interrupteurs SW pour charger ou décharger la ligne d’accumulation AL. La figure 12 reprend les chronogrammes de la figure 8 en montrant les détails d’une partie du produit scalaire desdits vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ à partir des masques temporels associés. La figure 13 montre le chronogramme du signal de commande SC résultant d’une simulation du produit scalaire des vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ donnée en exemple aux figures 10 à 12. Les vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ sont les suivants : ^^^^ ^^^^=[11010] et ^^^^ ^^^^, ^^^^=[10110], le bit de signe étant celui tout à droite. Les petits pics qu’on voit sur le signal SC de la figure 13 indiquent simplement une transition vers le même état, mais cela ne se produit pas dans la réalité. La figure 14 illustre schématiquement l’architecture d’un circuit 1 selon l’invention. Ce circuit comprend un générateur PG de masques temporels PX, PW, des sous-blocs logiques LGX, LGW, des sources de courant CS, des interrupteurs SW, des lignes d’accumulation AL et des convertisseurs analogique-numérique ADC. Le générateur PG est préférentiellement situé hors mémoire et génère des masques temporels PX, PW pour tous les sous-blocs logiques LGX associés aux vecteurs X1, ..., Xa. Les sorties XW des sous-blocs logiques LGX sont diffusées sur plusieurs lignes d’une matrice de poids W : W1,1, ..., Wm,1, W1,2, ..., Wm,2, (...), W1,n, ..., Wm,n, les indices en deuxième position allant de 1 à n correspondant aux colonnes de la matrice. Les valeurs des vecteurs X et de la matrice W sont préférentiellement stockées à proximité des blocs logiques afin de réduire le coût d'accès aux données, en utilisant des registres Flip- Flop ou tout autre mémoire capable de stocker une valeur sans consommer trop d'énergie, comme une mémoire SRAM. Chaque bit est de préférence stocké individuellement pour être utilisé en entrée du bloc logique. Dans cet exemple, à chaque colonne de la matrice W, sont associés une ligne d’accumulation AL et un convertisseur analogique-numérique ADC. A chaque ligne de la matrice de poids, les sorties XW sont ramenées en entrée du sous-bloc logique LGW correspondant, pour obtenir un signal de commande et un signal de polarisation (non représentés sur la figure 14). Comme expliqué ci-avant, le signal de polarisation permet de contrôler un interrupteur SW qui activera la source de courant CS qui lui est connectée pour charger ou décharger la ligne d’accumulation AL conformément à l’évolution temporelle du signal de commande. Un premier mode de réalisation de sources de courant CS pouvant être utilisées dans le circuit de la figure 14 est illustré à la figure 15. Les sources de courant CS sont créées à l'aide de miroirs de courant. Un miroir de courant composé de transistors PMOS 14 charge la ligne d'accumulation AL et un autre miroir composé de transistors NMOS 15 décharge la ligne d'accumulation AL. La figure 15 représente une ligne d'accumulation AL où les sorties des miroirs de courant sont connectées à la ligne d'accumulation AL via des interrupteurs SW. Les transistors utilisés peuvent être de type standard, mais lorsque le nombre de transistors d’un miroir de courant augmente, des transistors à oxyde épais (« thick oxide transistors » en anglais) peuvent être utilisés pour réduire les fuites de grille. Comme la tension de la ligne d'accumulation AL peut varier, il est possible d'augmenter l'impédance de sortie des miroirs de courant en utilisant une architecture cascodée comme illustré sur la figure 16. Une telle architecture permet d'avoir une valeur de courant plus stable sur toute la dynamique [Vdd – 0], Vdd étant la tension d’alimentation du circuit. Comme une source de courant doit être activée et désactivée à plusieurs niveaux de tension de la ligne d'accumulation, un interrupteur électronique SW de type porte de transmission (« pass gate switch » en anglais) est préférentiellement utilisé. La figure 17 représente schématiquement un exemple d’un tel interrupteur électronique SW comprenant deux transistors, un NMOS 17 et un PMOS 16, dont les drains sont connectés ensemble et les sources aussi. Le signal appliqué à la grille de l’un de ces transistors est le complémentaire binaire de celui appliqué à la grille de l’autre. Cet interrupteur permet d'obtenir de bonnes performances le long de la dynamique. La ligne d’accumulation AL comprend une ligne métallique. Sa capacité est celle de la ligne métallique et de toutes les capacités parasites 18 des interrupteurs électroniques SW qui sont connectés à la ligne d’accumulation, comme illustré schématiquement sur la figure 18. La valeur de la ligne est facilement estimée dans les simulations et la valeur de la source de courant peut être réglée pour correspondre à la capacité de la ligne d'accumulation. La capacité de la ligne d'accumulation peut être augmentée en ajoutant des condensateurs supplémentaires à la sortie des interrupteurs. Dans un mode de réalisation illustré à la figure 19, une ligne d'accumulation secondaire DAL est ajoutée pour effectuer le pilotage du courant. Un amplificateur opérationnel suiveur 19 peut être connecté entre les deux lignes d’accumulation AL et DAL pour que chacune reste au même niveau de tension dans le but de contrecarrer l'effet de partage de charges lorsque les interrupteurs SW s'ouvrent et se ferment. La figure 20 est similaire à la figure 19 représentant en plus des interrupteurs connectés aux lignes d’accumulation. Pour réduire le partage des charges, la ligne d'accumulation secondaire DAL peut être fabriquée avec une capacité inférieure à celle de la ligne d'accumulation AL, de sorte que les charges sont partagées proportionnellement au rapport entre les capacités des deux lignes. Le convertisseur analogique-numérique ADC est connecté soit directement à la ligne d’accumulation AL en l’absence de ligne d’accumulation secondaire DAL, soit à la ligne d’accumulation secondaire DAL notamment par le biais d’un amplificateur opérationnel suiveur 20 tel qu’illustré sur la figure 19. La figure 21 représente schématiquement un premier mode de réalisation d’un convertisseur analogique-numérique ADC pouvant être utilisé dans le circuit de la figure 14. Dans cet exemple, le convertisseur analogique-numérique ADC comporte deux comparateurs analogiques 22 et 23, l’un comparant à +LSB et l’autre à -LSB la valeur de la charge de la ligne d’accumulation 21 à laquelle le convertisseur analogique-numérique ADC est connecté. Le convertisseur analogique-numérique comporte également un compteur 24 configuré pour s’incrémenter ou décrémenter en fonction du résultat de la comparaison des comparateurs analogiques 22 et 23, et dont la sortie 30 est celle du convertisseur. Le convertisseur analogique-numérique ADC comprend aussi un bloc injecteur de charges 25 configuré pour ramener la charge de la ligne d’accumulation 21 connectée au convertisseur à sa valeur initiale dans le cas où le compteur indique que cette ligne a été déchargée, et un bloc déchargeur 26 configuré pour décharger la ligne d’accumulation 21 connectée au convertisseur et la ramener à sa valeur initiale dans le cas où le compteur 24 indique qu’elle a été chargée. Les figures 22 et 23 illustrent schématiquement deux variantes du convertisseur de la figure 21 dans lesquelles le convertisseur comporte une boucle de rétroaction 32 à des fins d’étalonnage. En effet, une boucle de rétroaction 32 peut être introduite soit pour modifier la valeur d'un LSB en fonction de la valeur en sortie du compteur 24 (cas de figure illustré à la figure 22), soit pour modifier le temps unitaire T dans le générateur de masques temporels PG (cas de figure illustré à la figure 23). Dans le cas de la figure 23, la boucle de rétroaction 32 peut servir à modifier, au lieu du temps unitaire T, un courant unitaire I d’une source de courant élémentaire, comme il sera expliqué plus loin en rapport avec les figures 25 à 27. Dans les variantes des figures 22 et 23, le convertisseur analogique-numérique ADC comporte une table de correspondance LUT recevant en entrée la sortie 30 du compteur 24 et étant configurée pour appliquer en sortie une valeur de substitution correspondant à une fonction d’activation ou une correction à des fins d’étalonnage. Une boucle de rétroaction 32 applique la sortie de la LUT sur les valeurs des entrées de référence +LSB et -LSB des comparateurs analogiques 22 et 23 et/ou est utilisée pour ajuster le temps unitaire et/ou le courant unitaire. Dans l’exemple illustré à la figure 22, la boucle de rétroaction 32 applique la sortie de la table de correspondance LUT aux entrées de référence +LSB et -LSB des comparateurs 22 et 23. Dans l’exemple illustré à la figure 23, ladite boucle 32 applique la sortie de la table de correspondance LUT au générateur de masques temporels PG pour modifier le temps unitaire T ou à la source de courant de référence pour modifier le courant de référence I. La table de correspondance peut permettre ainsi de calibrer le circuit en corrigeant les non- linéarités ou d’obtenir une réponse non linéaire prédéfinie qui peut correspondre à une fonction d’activation en intelligence artificielle. La figure 30 illustre schématiquement un quatrième mode de réalisation d’un convertisseur analogique-numérique pouvant être utilisé dans le circuit de la figure 14. Ce convertisseur est dit à croisement de niveaux (« Level crossing » en anglais), et est connecté à une ligne d’accumulation dont la tension Vm est représentative du résultat d’opérations de multiplication et d’accumulations. Dans l’exemple de la figure 30, ce convertisseur ADC comporte : - deux comparateurs analogiques 222, 233, configurés chacun pour comparer la tension de la ligne d’accumulation 21 à laquelle le convertisseur analogique-numérique est connecté à un seuil prédéfini : un premier comparateur 222 comparant ladite tension à un seuil de tension haut VH, notamment +LSB, et configuré pour s’activer lorsque la tension de la ligne d’accumulation 21 est supérieure à VH et un deuxième comparateur 233 comparant ladite la tension de la ligne d’accumulation 21 à un seuil de tension bas VL, notamment à -LSB et configuré pour s’activer lorsque la tension de la ligne d’accumulation 21 est inférieure à VL ; - un bloc numérique 243 configuré pour convertir les résultats des comparaisons en deux signaux de sortie distincts : un premier signal signalant l'activation de l'un des deux comparateurs et un deuxième signal spécifiant lequel des deux comparateurs s’est activé ;- un compteur 244 configuré pour s’incrémenter ou se décrémenter en fonction des signaux en sortie du bloc numérique, et dont la sortie 30 étant celle du convertisseur ; - un bloc injecteur de charges 25 connecté aux sorties du bloc numérique et configuré pour ramener la charge de la ligne d’accumulation 21 connectée au convertisseur à sa valeur initiale dans le cas où le bloc numérique 243 indique que cette ligne 21 a été déchargée ; et - un bloc déchargeur 26 connecté aux sorties du bloc numérique et configuré pour décharger la ligne d’accumulation 21 connectée au convertisseur et la ramener à sa valeur initiale dans le cas où le bloc numérique 243 indique que cette ligne 21 a été chargée. Les blocs injecteur 25 et déchargeur 26 peuvent être implémentés de différentes façons dont deux sont décrites ci-dessous : une première méthode consistant à utiliser des sources de courant pour charger / décharger la ligne d’accumulation et une deuxième méthode consistant à utiliser un réseau de condensateurs. La figure 31 représente un exemple d’implémentation du convertisseur illustré à la figure 30 selon la première méthode, avec des sources de courant. Dans cet exemple, le convertisseur analogique-numérique ADC comporte un circuit de temporisation 270, étant connecté aux sorties du bloc numérique 243 et configuré pour générer une impulsion d’une durée T nécessaire pour la charge ou décharge de la ligne. Chacun des blocs injecteur 25 et déchargeur 26 comprend au moins une source de courant 250 ; 260 et un interrupteur associé 251 ; 261 commandé par le circuit de temporisation 270 de sorte à fermer l’interrupteur associé au bloc injecteur, et ouvrir l’interrupteur associé au bloc déchargeur, pendant le temps T pour charger la ligne d’accumulation jusqu’à la ramener à sa valeur initiale, dans le cas où le comparateur du seuil bas est activé indiquant que la ligne a été déchargée créant une chute de tension correspondant à -1 LSB, ou à fermer l’interrupteur associé au bloc déchargeur et ouvrir l’interrupteur associé au bloc injecteur, pendant le temps T pour décharger la ligne d’accumulation jusqu’à la ramener à sa valeur initiale, dans le cas où le comparateur du seuil haut est activé indiquant que la ligne a été chargée créant une hausse de tension correspondant à + LSB. La figure 32 représente un exemple d’implémentation du convertisseur illustré à la figure 30 selon la deuxième méthode, avec un réseau de condensateurs. Dans cet exemple, le convertisseur analogique-numérique ADC comporte un réseau de condensateurs 300, une machine à états finis 280 et des blocs de génération d’horloges non recouvrantes NOC (« Non overlapping Clocks » en anglais). Le réseau de condensateurs 300 comprend un condensateur principal 310 directement relié à la ligne d’accumulation 21 et à la masse, des condensateurs périphériques 320 et des interrupteurs 330. La capacité ^^^^ ^^^^ de chaque condensateur périphérique 320 est proportionnelle à la capacité C du condensateur principal 310 d’un facteur α correspondant aux charges nécessaires pour compenser +/- 1 LSB, i.e. ^^^^ ^^^^ = α C. Les condensateurs périphériques 320 et les interrupteurs 330 forment deux branches dont les extrémités sont connectées aux tensions de référence, à savoir VDD et la masse. Les interrupteurs 330 sont chacun placés entre chaque condensateur périphérique 320 et le condensateur principal 310 ou entre chaque condensateur périphérique 320 et l’une des tensions de référence. Chaque paire d’interrupteurs directement connectés à un même condensateur périphérique est commandée par deux signaux complémentaires, par exemple φℎ1 et φ���1�. La machine à états finis 280 asynchrone reliée aux sorties du bloc numérique 243 et configurée pour contrôler les interrupteurs 330 en fonction des résultats de comparaison. Les blocs de génération d’horloges non recouvrantes NOC sont en sortie de la machine à états 280. Chaque bloc NOC est configuré pour générer une paire de signaux complémentaires de commande des interrupteurs 330, par exemple φ ^^^^2 et φ��� ^^^^2�, assurant que les interrupteurs ne créent pas de court-circuit entre l’une des tensions de référence et la ligne d’accumulation. La figure 33 est un chronogramme des tensions associées au deuxième exemple de la figure 32. Ce chronogramme montre l'ordre d'opération pour réinitialiser la ligne d’accumulation 21. Il y a d'abord une des capacités ^^^^ ^^^^ située sur une première branche qui est connectée à ^^^^ (toutes les capacités périphériques ayant la même valeur). Dans cet exemple, la première capacité connectée est celle associée à l’interrupteur commandé par le signal φℎ1 . Le courant ^^^^ ^^^^ℎ ^^^^ ^^^^ ^^^^ ^^^^ charge la ligne capacitive 21. Lorsque la tension de la ligne ^^^ ^^^^^ atteint ^^^^ ^^^^, une capacité opposée (située sur la deuxième branche et initialement reliée à la masse) est alors connectée à ^^^^, réinitialisant la ligne à ^^^ ^^^^^, ici le signal de commande ^^^^ ^^^^2 de l’interrupteur associé est à 1. Le signal ^^^^ℎ1 est alors à zéro et le calcul continue jusqu'au prochain déclenchement de l'un des deux comparateurs. En effet, lorsque la ligne 21 se décharge à nouveau et la tension de la ligne ^^^ ^^^^^ atteint ^^^^ ^^^^, une capacité opposée (située sur la première branche et initialement reliée à VDD) est alors connectée à ^^^^, réinitialisant la ligne à ^^^ ^^^^^, ici le signal de commande ^^^^ℎ2 de l’interrupteur associé est à 1. Le signal ^^^^ ^^^^2 est alors à zéro. Le schéma de la figure 34 présente un exemple de réseau de condensateurs 300 pouvant être utilisé dans le deuxième exemple de la figure 32, composé d’un condensateur principal 310 de capacité ^^^^, qui correspond à la capacité de la ligne d’accumulation 21, et des condensateurs périphériques 320 ayant pour capacités ^^^^ℎ1, ^^^^ℎ2, ^^^^ ^^^^1 et ^^^^ ^^^^2 toutes de même valeurs égales à ^^^^ ^^^^ = α. C. Le principe de fonctionnement du circuit de la Figure 34 est le suivant. Supposons que la tension ^^^ ^^^^^ de la ligne 21 est initialisée à . Lorsque la ligne se charge, la tension ^^^ ^^^^^ augmente jusqu’à atteindre ^^^^ ^^^^. Les charges sont les suivantes : ^^^^ℎ1 = ^^^^ℎ1 ^^^^ ^^^^, ^^^^ ^^^^ = ^^^^ ^^^^ ^^^^ et ^^^^ ^^^^1 = 0 l’interrupteur commandé par ^^^^ ^^^^1 se ferme et celui commandé par ^^^^ℎ1 s’ouvre, comme montré sur la figure 35 qui est analogue à la figure 34, après commutation des interrupteurs. Les charges sont désormais : ^^^^ ^^^^ = ^^^^ ^^^ ^^^^^ and ^^^^ ^^^^1 = ^^^^ ^^^^1 ^^^ ^^^^^. Nous avons donc : ^^^^ ^^^^ ^^^^ = ^^^ ^^^^^( ^^^^ + ^^^^ ^^^^1) Maintenant, si nous faisons le même calcul avec ^^^ ^^^^^ atteignant ^^^^ ^^^^ au lieu de ^^^^ ^^^^, l’interrupteur commandé par ^^^^ℎ2 va se fermer et celui commandé par ^^^^ℎ1 va s’ouvrir. Les charges avant la commutation sont ^^^^ℎ2 = ^^^^ℎ2 ^^^^ ^^^^ ^^^^, ^^^^ ^^^^ = ^^^^ ^^^^ ^^^^ et ^^^^ℎ1 = ^^^^ℎ1 ^^^^ ^^^^. Après commutation, les charges sont : ^^^^ℎ2 = ^^^^ℎ2 ^^^ ^^^^^ et ^^^^ ^^^^ = ^^^^ ^^^ ^^^^^. Nous avons donc : ^^^^ℎ2 ^^^^ ^^^^ ^^^^ + ^^^^ ^^^^ ^^^^ = ^^^ ^^^^^( ^^^^ℎ2 + ^^^^) Maintenant, supposons ^^^^ ^^^^1 = ^^^^ ^^^^2 = ^^^^ℎ1 = ^^^^ℎ2 = ^^^^ ^^^^ ≠ ^^^^ la valeur de ^^^ ^^^^^ doit être la même dans les deux configurations décrites précédemment. Nous avons : Nous connaissons désormais la valeur de ^^^^ ^^^^ en fonction de C, de la tension d’alimentation ^^^^ ^^^^ ^^^^ et des valeurs de LSB données par ^^^^ ^^^^ et ^^^^ ^^^^ . L’échelon de tension possible est donc ± ^^^^ ^^^^− ^^^^ ^^^^ 2 . Il est ainsi possible d’injecter/retirer des charges dans la ligne 21 en commutant les capacités, le saut de tension créé étant égal à ± ^^^^ ^^^^− ^^^^ ^^^^ 2 . Pour initialiser la ligne 21 à la tension ^^^ ^^^^ ^^^^ ^^^^ ^^^^^ = , il est possible d’alterner la connexion et déconnexion des paires ^^^^ℎ1 et ^^^^ ^^^^1 et des paires ^^^^ℎ2 et ^^^^ ^^^^2. La figure 36 représente schématiquement deux instances du réseau de condensateurs 300 de la figure 34 pour illustrer une alternance d’ouverture et fermeture des interrupteurs 330 faisant partie dudit réseau. En effet, on alterne l’ouverture et la fermeture des interrupteurs de sorte que seulement les condensateurs périphériques 320 d’une même branche soient reliés au condensateur principal 310. Supposons que la tension initiale soit ^^^ ^^^^^ ^^^^−1. Dans un premier temps, les charges sont ^^^^ ^^^^ = ^^^ ^^^^^ ^^^^−1 ^^^^, ^^^^ℎ1 = ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ et ^^^^ ^^^^1 = 0. On vient ensuite fermer les interrupteurs commandés par ^^^^ℎ1 et ^^^^ ^^^^1. Dans ce cas, les charges sont les suivantes ^^^^ ^^^^ = ^^^ ^^^^^ ^^^^ ^^^^, ^^^^ℎ1 = ^^^^ ^^^^ ^^^ ^^^^^ ^^^^ et ^^^^ ^^^^1 = la loi de conservation des charges implique que : En prenant en compte que ^^^^ ^^^^ = ^^^^ ^^^^ on obtient alors : Lorsque l’on va commuter ensuite les interrupteurs commandés par ^^^^ℎ2 et ^^^^ ^^^^2 alors en appliquant également la loi de conservation des charges, on obtient : ^^^^ ^^^ ^^^^^ ^^^^ + ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^+1 = 1 + 2 ^^^^ Si on substitue ^^^ ^^^^^ ^^^^ par obtient : En réalisant ^^^^ commutations, l’erreur devient donc avec ^^^^0 l’erreur initiale, et ^^^^ ^^^^ tend vers 0 ce qui implique que Vm converge vers La figure 24 illustre schématiquement l’architecture d’un ensemble de circuits pour la réalisation d’opérations de multiplication et d’accumulation MAC en mémoire, notamment pour un réseau de neurones, configuré pour déterminer le résultat du produit matriciel d’un vecteur [X1, ..., Xm] par une matrice de poids ([W1,1, ..., Wm,1], ..., [W1,n, ..., Wm,n]), comportant une pluralité de circuits selon l’invention mis en parallèle les uns avec les autres et partageant un seul bloc générateur de masques temporels PG, situé hors mémoire, et fonctionnant par exemple à 50 MHz. La figure 25 représente schématiquement un circuit selon l’invention fonctionnant selon l’approche de pondération par le courant. En rapport avec les figures précédentes, on a vu qu’il était possible d’utiliser une source de courant CS en pondérant le temps de charge/décharge de la ligne d’accumulation AL. La tension aux bornes de la ligne d’accumulation AL pour une opération de multiplication et d’accumulation (MAC) est égale à : C étant la valeur de la capacité de la ligne d’accumulation et I l’intensité du courant de la source de courant CS. Il est possible d’obtenir le même résultat R de produit scalaire en pondérant le courant et en réduisant le temps de charge/décharge. Selon l’approche de pondération par le courant, il existe plusieurs sources de courant (k étant le nombre de sources de courant), pondérées par une puissance de deux et commandées par des signaux de commande SC représentatifs des valeurs des bits associés à cette pondération. Cela augmente avantageusement la vitesse de calcul en réduisant la durée des signaux de commande. Dans l’exemple illustré à la figure 25, il y a deux signaux de commande SC0,j,i et SC1,j,i activant respectivement les sources de courant d’intensités I et 2l*I, I étant le courant élémentaire de référence associé aux bits de poids faible d’indice 0 à (k-1). Dans cet exemple, k=2, puisqu’il n’y a que deux signaux de commande. La génération des masques temporels PX est la même que dans le cas de la pondération temporelle vue précédemment, mais la génération des masques temporels PW diffère. En effet, si l’on prend l’exemple d’une multiplication à 4 bits (sans le bit de signe), les masques temporels PX et PW sont représentés à la figure 26. Le calcul prend deux fois moins de temps que s’il s’agissait d’une pondération temporelle, les signaux de PW(0) et PW(2) sont identiques, ainsi que PW(1) et PW(3). En effet, les mêmes signaux sont utilisés, mais sur des sources de courant différentes. Dans l’exemple des chronogrammes représentés à la figure 26, les 4 bits sont répartis équitablement entre les deux sources, de sorte que les signaux de commande sont tels que : 5 La figure 27 est analogue à la figure 24 représentant un ensemble de circuits selon l’invention, avec la variante de pondération par le courant, dans le cas d’une multiplication à 4 bits avec répartition équitable des bits entre les 2 sources de courant. Le courant de référence pour la charge est noté Iref_P et le courant de référence pour la décharge est noté Iref_N, avec Iref_P = Iref_N. Les transistors des sources de courant 10 correspondantes sont dimensionnés de sorte à fournir une telle intensité de courant. Le rapport W/L est lié à la transconductance gm qui est définie comme le rapport entre la variation du courant de drain et la variation de la tension grille-source. Ainsi, pour une tension grille-source donnée, un rapport W/L plus élevé entraîne un courant plus élevé, W étant la largeur du canal conducteur et L sa longueur. Les transistors des sources de courant 15 de pondération supérieure ont un rapport 4W/L. La figure 28 illustre un deuxième exemple de chronogrammes de masques temporels pouvant être utilisés pour le circuit de la figure 25. Dans cet exemple, les 4 bits sont répartis d’une façon non équitable entre les 2 sources, de sorte que les signaux de commande sont tels que : 20 La figure 29 est analogue à la figure 27 représentant un ensemble de circuits selon l’invention, avec la variante de pondération par le courant, dans le cas d’une multiplication à 4 bits avec répartition non équitable des bits entre les 2 sources de courant. 25 Les transistors des sources de courant de pondération supérieure ont un rapport 8W/L. En effet, comme la deuxième source de courant n’est commandée que par le bit ^^^^ ^^^^, ^^^^[3] et que PW(3) est équivalent à PW(0), le courant porte la pondération 23. Il est donc nécessaire de modifier la taille du transistor du même facteur. Parmi les applications de l’invention, on peut citer l’optimisation des calculs dans les 30 préprocesseurs, les perceptrons et les classifieurs. L’invention n’est pas limitée aux exemples de réalisation décrits ci-dessus. Par exemple, le bloc logique peut être implémenté avec des portes logiques différentes, typiquement des portes NOR à la place des portes NAND. La fréquence du bloc générateur de masques temporels peut être modifiée pour répondre aux besoins de l’application cible.

Claims

Revendications 1. Méthode de réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire, notamment pour un réseau de neurones, dans laquelle on détermine le résultat du produit matriciel ^^^^ d’un vecteur ^^^^ = [ ^^^^1 ^^^^2 … ^^^^ ^^^^ ] composé de ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − 1) bits et d’une matrice W composée de ^^^^ × ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − 1) chaque élément du produit matriciel ^^^^ étant la somme de produits scalaires ^^^^ ^^^^ = ∑ ^^^^ ^^^^=1 ^^^^ ^^^^, ^^^^ avec ^^^^ ^^^^, ^^^^ = ( ∑ ^^^^ ^^^^−2 ^^^^=0 2 ^^^^ ^^^^ ^^^^[ ^^^^])( ∑ ^^^^ ^^^^−2 ^^^^=0 2 ^^^^ ^^^^ ^^^^, ^^^^[ ^^^^]) , i ∈ {1, ..., ^^^^}, j ∈ {1, ..., ^^^^}, avec le vecteur de bits ^^^^ ^^^^ = [ ^^^^ ^^^^ [ 0 ] , … , ^^^^ ^^^^ [ ^^^^ ^^^^ − 2 ] ] et le vecteur de bits de poids ^^^^ ^^^^, ^^^^ = [ ^^^^ ^^^^, ^^^^[0], … , ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ − 2]], les opérations de multiplication et d’accumulation conduisant au produit scalaire ^^^^ ^^^^, ^^^^ en appliquant à un ensemble de portes logiques les valeurs des vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ et celles de masques temporels associés, les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^ et les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^, ^^^^, de sorte à générer au moins un signal de commande SC d’au moins une source de courant, le signal de commande SC activant ladite au moins une source de courant de façon à accumuler des charges capacitives dans une ligne d’accumulation, notamment de manière proportionnelle au produit scalaire ^^^^ ^^^^, ^^^^. 2. Méthode selon la revendication précédente, l’un au moins des deux vecteurs est signé, ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur ^^^^ ^^^^ et/ou ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur de bits de poids ^^^^ ^^^^, ^^^^, l’ensemble de portes logiques générant un signal de polarité SP = ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] × ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] chargeant ou déchargeant la ligne d’accumulation (AL). 3. Méthode selon l'une des deux revendications précédentes, les masques temporels PX et PW étant générés sous forme d’impulsions. 4. Méthode selon l'une quelconque des revendications précédentes, les masques temporels PX et PW étant générés par un bloc générateur de masques temporels situé hors mémoire. 5. Méthode selon l'une quelconque des revendications précédentes, les masques temporels ^^^^ ^^^^( ^^^^) étant générés de manière à s’activer successivement pendant une durée ^^^^ ^^^^ sensiblement égale à 2 ^^^^ ∗ (∑ ^^^^ ^^^^−2 ^^^^=0 2 ^^^^ ∗ ^^^^), T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible, les masques temporels ^^^^ ^^^^( ^^^^) étant générés de manière à s’activer successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T. 6. Méthode selon la revendication précédente, le signal de commande SC commandant une seule valeur d’intensité de courant en valeur absolue, en chargeant ou déchargeant la ligne d’accumulation, tel que : ^^^^ ^^^^ = ^^^^ ^^^^ ^^^^ ^^^^, ^^^^ = ( ∑ ^^^^−2 ^^^^ −2 ^^^^=0 ^^^^ ^^^^ ( ^^^^ ) ∗ ^^^^ ^^^^, ^^^^[ ^^^^]) ( ∑ ^^^^ ^^^^=0 ^^^^ ^^^^ ( ^^^^ ) ∗ ^^^^ ^^^^[ ^^^^]) , avec i ∈ {1, ..., ^^^^}, j ∈ {1, ..., ^^^^}. 7. Méthode selon l'une quelconque des revendications 1 à 4, au moins deux sources de courant (CS) étant présentes, chacune étant commandée par un signal de commande SC respectif, les masques temporels ^^^^ ^^^^( ^^^^) étant générés de manière à s’activer successivement pendant une durée ^^^^ ^^^^ sensiblement égale à Td = 2 ^^^^ ∗ (∑ ^^^^ ^^^^−2 ^^^^ ^^^^=0 2 ∗ ^^^^), avec d ∈ {0, ..., max ( ^^^^ ^^^^ − ^^^^ ^^^^)}, les ( ^^^^ ^^^^ − 1) bits de PW étant répartis en k intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^ ], k étant le nombre de sources de courant ou de signaux de commande, avec l ∈ {0, ..., ^^^^ − 1}, ^^^^ ^^^^ ≥ ^^^^ ^^^^, { ^^^^ ^^^^, ^^^^ ^^^^} ∈ [ 0, ( ^^^^ ^^^^ − 2 )] , ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ étant choisis de telle sorte que l’ensemble des intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^ ] représente une partition de l’intervalle [0 , ^^^^ ^^^^ − 2], l’intervalle le plus long étant [0 , max( ^^^^ ^^^^ − ^^^^ ^^^^)] , T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible, les masques temporels ^^^^ ^^^^( ^^^^) étant générés de manière à s’activer successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T. 8. Méthode selon la revendication précédente, les signaux de commande étant tels que : 9. Méthode selon l’une quelconque des revendications précédentes, la tension ^^^^ ^^^^ ^^^^ aux bornes de la ligne d’accumulation (AL) pour une opération de multiplication et d’accumulation étant égale à : C étant la valeur de la capacité de la ligne d’accumulation (AL) et I l’intensité du courant de la source de courant (CS) de poids le plus faible (i.e. pour ^^^^ ^^^^=0). 10. Circuit (1) de réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire, notamment pour un réseau de neurones, configuré pour déterminer le résultat du produit matriciel ^^^^ d’un vecteur ^^^^ = ^^^^2 … ^^^^ ^^^^] composé de éléments représentés chacun sur ( ^^^^ ^^^^ − 1) bits et d’une matrice W ^^^^1,1 ⋯ ^^^^1, ^^^^ =� ⋮ ⋱ ⋮ � composée de ^^^^ × ^^^^ éléments représentés chacun sur ( ^^^^ ^^^^ − ^^^^ ^^^^,1 ⋯ ^^^^ ^^^^, ^^^^ 1) bits : chaque élément du produit matriciel ^^^^ étant la somme de produits scalaires ^^^^ ^^^^ = vecteur de bits ^^^^ ^^^^ = [ ^^^^ ^^^^[0], … , ^^^^ ^^^^[ ^^^^ ^^^^ − 2]] et le vecteur de bits de poids ^^^^ ^^^^, ^^^^ = [ ^^^^ ^^^^, ^^^^[0], … , ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ − 2]], le circuit comportant : - un bloc logique (LG) comportant des portes logiques auxquelles sont appliquées les valeurs des vecteurs ^^^^ ^^^^ et ^^^^ ^^^^, ^^^^ et celles de masques temporels associés, les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^ et les masques temporels ^^^^ ^^^^ = [ ^^^^ ^^^^(0), … , ^^^^ ^^^^( ^^^^ ^^^^ − 2)] étant associés aux bits des éléments du vecteur ^^^^ ^^^^, ^^^^, le bloc logique étant configuré pour générer en sortie au moins un signal de commande SC destiné à activer au moins une source de courant (CS) ; et - ladite au moins une source de courant (CS) configurée pour être activée par le signal de commande SC de sorte à accumuler des charges capacitives dans une ligne d’accumulation (AL). 11. Circuit selon la revendication précédente, l’un au moins des deux vecteurs étant signé, ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur ^^^^ ^^^^ et/ou ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] étant le bit de signe du vecteur de bits de poids ^^^^ ^^^^, ^^^^, ladite ligne d’accumulation (AL) étant configurée pour être chargée ou déchargée en fonction d’un signal de polarité SP = ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] × ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] ce signal SP étant notamment obtenu en sortie d’une porte logique XOR ou XNOR recevant en entrée le bit de signe ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] et le bit de signe ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^]. 12. Circuit selon l’une des deux revendications précédentes, le bloc logique (LG) comportant des portes logiques NAND et/ou NOR. 13. Circuit selon la revendication précédente, le bloc logique (LG) comportant un premier sous-bloc logique (LGX) pour le masquage temporel des bits ^^^^ ^^^^ et un deuxième sous-bloc logique (LGW) pour le masquage temporel des bits de poids ^^^^ ^^^^, ^^^^, ces deux sous-blocs étant mis en cascade de sorte que les sorties du premier sous-bloc soient en entrée du deuxième sous-bloc. 14. Circuit selon la revendication précédente, le premier sous-bloc (LGX) recevant en entrée les masques temporels PX et PW ainsi que les bits ^^^^ ^^^^[0: ^^^^ ^^^^ − 2], et comportant deux étages de portes logiques : - un premier étage (10) comportant plusieurs niveaux de portes logiques, les niveaux étant connectés en cascade de sorte que le signal ou les signaux en sortie d’un niveau soient le signal ou les signaux en entrée du niveau suivant jusqu’à aboutir à un seul signal en sortie, premier étage dans lequel chaque bit ^^^^ ^^^^ [0: ^^^^ ^^^^ − 2] et le masque temporel PX associé sont en entrée d’une porte logique de premier niveau, notamment une porte NAND ou NOR ; et - un deuxième étage (11) comportant au moins un niveau de portes logiques, dans lequel le signal en sortie du premier étage et chaque masque temporel PW sont en entrée d’une porte logique dudit niveau, notamment une porte NAND ou NOR. 15. Circuit selon la revendication précédente, le deuxième sous-bloc (LGW) recevant en entrée les signaux en sortie du premier sous-bloc (10) et les bits de poids ^^^^ ^^^^, ^^^^[0: ^^^^ ^^^^ − 2] et comportant plusieurs niveaux (12) de portes logiques, les niveaux étant connectés en cascade de sorte que le signal ou les signaux en sortie d’un niveau soient le signal ou les signaux en entrée du niveau suivant jusqu’à aboutir à un seul signal en sortie correspondant au signal de commande SC, chaque porte logique de premier niveau recevant en entrée un signal en sortie du premier sous-bloc (LGX) et le bit de poids ^^^^ ^^^^, ^^^^[0: ^^^^ ^^^^ − 2] correspondant. 16. Circuit selon la revendication précédente dans son rattachement à la revendication 11, comportant une porte XOR ou XNOR recevant en entrée le bit de signe ^^^^ ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] du vecteur de bits ^^^^ ^^^^ et le bit de signe ^^^^ ^^^^, ^^^^[ ^^^^ ^^^^ ^^^^ ^^^^] du vecteur de bit ^^^^ ^^^^, ^^^^. 17. Circuit selon l’une quelconque des revendications 10 à 16, ladite au moins une source de courant (CS) étant créée par des miroirs de courant utilisant des transistors CMOS (14, 15). 18. Circuit selon la revendication précédente, les miroirs de courant comprenant des transistors PMOS (14) pour charger la ligne d’accumulation (AL) et des transistors NMOS (15) pour décharger ladite ligne. 19. Circuit selon la revendication 17 ou 18, les miroirs de courant ayant une architecture cascodée. 20. Circuit selon l’une quelconque des revendications 10 à 19, comportant au moins un interrupteur électronique (SW), étant notamment une porte de transmission, commandé par le signal de commande SC pour l’activation de ladite au moins une source de courant (CS). 21. Circuit selon l’une quelconque des revendications 10 à 20, comportant au moins un condensateur en sortie dudit au moins un interrupteur électronique (SW) pour augmenter la capacité de la ligne d’accumulation (AL). 22. Circuit selon l’une quelconque des revendications 10 à 21, comportant une ligne d’accumulation secondaire (DAL) connectée à la ligne d’accumulation (AL) par l’intermédiaire d’un amplificateur suiveur (19). 23. Circuit selon la revendication précédente, comportant un amplificateur suiveur (19) connecté entre la ligne d’accumulation (AL) et la ligne d’accumulation secondaire (DAL). 24. Circuit selon la revendication 22 ou 23, comportant un convertisseur analogique- numérique (ADC) connecté soit directement à la ligne d’accumulation (AL) en l’absence de ligne d’accumulation secondaire (DAL), soit à la ligne d’accumulation secondaire notamment par le biais d’un amplificateur suiveur (20). 25. Circuit selon la revendication précédente, le convertisseur analogique-numérique (ADC) comportant : - deux comparateurs analogiques (22, 23), l’un comparant à +LSB et l’autre à -LSB la valeur de la charge de la ligne d’accumulation (21) à laquelle le convertisseur analogique-numérique est connecté ; - un compteur (24) configuré pour s’incrémenter ou décrémenter en fonction du résultat de la comparaison des comparateurs, et dont la sortie (30) est celle du convertisseur ; - un bloc injecteur de charges (25) configuré pour ramener la charge de la ligne d’accumulation (21) connectée au convertisseur à sa valeur initiale dans le cas où le compteur indique que cette ligne a été déchargée ; et - un bloc déchargeur (26) configuré pour décharger la ligne d’accumulation (21) connectée au convertisseur et la ramener à sa valeur initiale dans le cas où le compteur (24) indique qu’elle a été chargée. 26. Circuit selon la revendication précédente, le convertisseur analogique-numérique (ADC) comportant une table de correspondance (LUT) recevant en entrée la sortie (30) du compteur (24) et étant configurée pour appliquer en sortie une valeur de substitution choisie lors de l’étalonnage et/ou correspondant à une fonction d’activation. 27. Circuit selon la revendication précédente, dans le cas où les valeurs de la table de correspondance (LUT) sont choisies lors de l’étalonnage, la sortie de la table de correspondance agit via une boucle de rétroaction (32) sur les valeurs des entrées de référence +LSB et -LSB des comparateurs analogiques (22, 24) et/ou sur le temps unitaire (T) et/ou sur le courant unitaire (I). 28. Circuit selon l’une quelconque des revendications 10 à 27, comportant un bloc générateur de masques temporels (PG) situé hors mémoire. 29. Circuit selon la revendication précédente, le bloc générateur (PG) étant configuré pour générer les masques temporels de sorte que les masques temporels PW(d) soient activés successivement pendant une durée ^^^^ ^^^^ sensiblement égale à 2 ^^^^ ∗ (∑ ^^^^ ^^^^−2 ^^^^ ^^^^=0 2 ∗ ^^^^), et que les masques temporels PX(c) soient activés successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T, T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible. 30. Circuit selon la revendication 28, comportant au moins deux sources de courant (CS), chacune étant commandée par un signal de commande SC respectif, le bloc générateur (PG) étant configuré pour générer les masques temporels de sorte que les masques temporels PW(d) soient activés successivement pendant une durée Td sensiblement égale à 2 ^^^^ les ( ^^^^ ^^^^ − 1) bits de PW étant répartis en k intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^], k étant le nombre de sources de courant ou de signaux de commande, avec l ∈ {0, ..., ^^^^ − 1}, ^^^^ ^^^^ ≥ ^^^^ ^^^^, { ^^^^ ^^^^, ^^^^ ^^^^} ∈ [ 0, ( ^^^^ ^^^^ − 2 )] , ^^^^ ^^^^ ^^^^ ^^^^ étant choisis de telle sorte que l’ensemble des intervalles [ ^^^^ ^^^^ , ^^^^ ^^^^ ] représente une partition de l’intervalle [0 , ^^^^ ^^^^ − 2], l’intervalle le plus long étant [0 , max( ^^^^ ^^^^ − ^^^^ ^^^^ )] , T étant un temps unitaire correspondant à la durée d’activation du masque temporel associé au bit du vecteur ^^^^ ^^^^ de poids le plus faible, et que les masques temporels PX(c) soient activés successivement pour chaque ^^^^ ^^^^ pendant une durée sensiblement égale à 2 ^^^^+ ^^^^ ∗ T. 31. Ensemble de circuits de réalisation d’opérations de multiplication et d’accumulation (MAC) en mémoire, notamment pour un réseau de neurones, configuré pour déterminer le résultat du produit matriciel d’un vecteur ^^^^ = ^^^^2 … ^^^^ ^^^^ ] par une matrice de poids comportant une pluralité de circuits (1) selon l'une quelconque des revendications 10 à 30 mis en parallèle les uns avec les autres et partageant un seul bloc générateur (PG) de masques temporels situé hors mémoire. 32. Circuit selon la revendication 24, le convertisseur analogique-numérique (ADC) comportant : - deux comparateurs analogiques (222, 233), configurés chacun pour comparer la tension de la ligne d’accumulation (21) à laquelle le convertisseur analogique- numérique est connecté à un seuil prédéfini : un premier comparateur (222) comparant ladite tension à un seuil de tension haut VH, notamment +LSB, et configuré pour s’activer lorsque la tension de la ligne d’accumulation (21) est supérieure à VH et un deuxième comparateur (233) comparant ladite la tension de la ligne d’accumulation (21) à un seuil de tension bas VL, notamment à -LSB et configuré pour s’activer lorsque la tension de la ligne d’accumulation (21) est inférieure à VL ; - un bloc numérique (243) configuré pour convertir les résultats des comparaisons en deux signaux de sortie distincts : un premier signal signalant l'activation de l'un des deux comparateurs et un deuxième signal spécifiant lequel des deux comparateurs s’est activé ; - un compteur (244) configuré pour s’incrémenter ou se décrémenter en fonction des signaux en sortie du bloc numérique, et dont la sortie (30) est celle du convertisseur ; - un bloc injecteur de charges (25) connecté aux sorties du bloc numérique et configuré pour ramener la charge de la ligne d’accumulation (21) connectée au convertisseur à sa valeur initiale dans le cas où le bloc numérique 243 indique que cette ligne (21) a été déchargée ; et - un bloc déchargeur (26) connecté aux sorties du bloc numérique et configuré pour décharger la ligne d’accumulation (21) connectée au convertisseur et la ramener à sa valeur initiale dans le cas où le bloc numérique (243) indique que cette ligne a été chargée. 33. Circuit selon la revendication précédente, le convertisseur analogique-numérique (ADC) comportant un circuit de temporisation (270), étant connecté aux sorties du bloc numérique (243) et configuré pour générer une impulsion d’une durée T nécessaire pour la charge ou décharge de la ligne, chacun des blocs injecteur (25) et déchargeur (26) comprenant au moins une source de courant (250 ; 260) et un interrupteur associé (251 ; 261) commandé par le circuit de temporisation (270) de sorte à fermer l’interrupteur associé au bloc injecteur, et ouvrir l’interrupteur associé au bloc déchargeur, pendant le temps T pour charger la ligne d’accumulation jusqu’à la ramener à sa valeur initiale, dans le cas où le comparateur du seuil bas est activé indiquant que la ligne a été déchargée créant une chute de tension correspondant à -1 LSB, ou à fermer l’interrupteur associé au bloc déchargeur et ouvrir l’interrupteur associé au bloc injecteur, pendant le temps T pour décharger la ligne d’accumulation jusqu’à la ramener à sa valeur initiale, dans le cas où le comparateur du seuil haut est activé indiquant que la ligne a été chargée créant une hausse de tension correspondant à + LSB. 34. Circuit selon la revendication 32, le convertisseur analogique-numérique (ADC) comportant : - un réseau de condensateurs (300) comprenant un condensateur principal (310) directement relié à la ligne d’accumulation (21) et à la masse, des condensateurs périphériques (320) et des interrupteurs (330), la capacité de chaque condensateur périphérique (320) étant proportionnelle à la capacité du condensateur principal (310) d’un facteur α correspondant aux charges nécessaires pour compenser +/- 1 LSB, de préférence α = ^^^^ ^^^^− ^^^^ ^^^^ ^^^^ ^^^^ ^^^^ , les condensateurs périphériques (320) et les interrupteurs (330) formant deux branches dont les extrémités sont connectées aux tensions de référence, à savoir VDD et la masse, les interrupteurs (330) étant chacun placés entre chaque condensateur périphérique (320) et le condensateur principal (310) ou entre chaque condensateur périphérique (320) et l’une des tensions de référence, chaque paire d’interrupteurs directement connectés à un même condensateur périphérique étant commandée par deux signaux complémentaires ; - une machine à états finis (280) asynchrone reliée aux sorties du bloc numérique (243) et configurée pour contrôler les interrupteurs (330) en fonction des résultats de comparaison ; et - des blocs de génération d’horloges non recouvrantes (NOC) en sortie de la machine à états (280), chaque bloc (NOC) étant configuré pour générer une paire de signaux complémentaires de commande des interrupteurs (330), assurant que les interrupteurs ne créent pas de court-circuit entre l’une des tensions de référence et la ligne d’accumulation (21). 35. Procédé d’injection et de prélèvement de charges de la ligne d’accumulation (21) du circuit selon la revendication 34, comportant : - la connexion d’un seul des condensateurs périphériques au condensateur principal, dit premier condensateur périphérique, ce premier condensateur périphérique ayant été préalablement connecté à VDD ; - lorsque la tension de la ligne d’accumulation (21) atteint le seuil de tension haut VH, la déconnexion du premier condensateur périphérique du condensateur principal et la connexion d’un deuxième condensateur périphérique ayant été préalablement connecté à la masse ; et - lorsque la tension de la ligne d’accumulation atteint le seuil de tension bas VL, la déconnexion du deuxième condensateur périphérique du condensateur principal et la connexion d’un troisième condensateur périphérique ayant été préalablement connecté à VDD. 36. Procédé d’initialisation de la ligne d’accumulation (21) du circuit selon la revendication 34 à la tension VDD/2, dans lequel on alterne l’ouverture et la fermeture des interrupteurs de sorte que seulement les condensateurs périphériques (320) d’une même branche soient reliés au condensateur principal (310).
EP23814141.0A 2022-11-28 2023-11-27 Méthode et circuit de réalisation d'opérations de multiplication et d'accumulation en mémoire Pending EP4627483A1 (fr)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR2212440A FR3142583B1 (fr) 2022-11-28 2022-11-28 Méthode et circuit de réalisation d’opérations de multiplication et d’accumulation en mémoire
PCT/EP2023/083139 WO2024115370A1 (fr) 2022-11-28 2023-11-27 Méthode et circuit de réalisation d'opérations de multiplication et d'accumulation en mémoire

Publications (1)

Publication Number Publication Date
EP4627483A1 true EP4627483A1 (fr) 2025-10-08

Family

ID=85570084

Family Applications (1)

Application Number Title Priority Date Filing Date
EP23814141.0A Pending EP4627483A1 (fr) 2022-11-28 2023-11-27 Méthode et circuit de réalisation d'opérations de multiplication et d'accumulation en mémoire

Country Status (5)

Country Link
EP (1) EP4627483A1 (fr)
JP (1) JP2025540717A (fr)
CN (1) CN120813952A (fr)
FR (1) FR3142583B1 (fr)
WO (1) WO2024115370A1 (fr)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10748603B2 (en) * 2018-09-28 2020-08-18 Intel Corporation In-memory multiply and accumulate with global charge-sharing

Also Published As

Publication number Publication date
CN120813952A (zh) 2025-10-17
FR3142583B1 (fr) 2025-06-27
JP2025540717A (ja) 2025-12-16
WO2024115370A1 (fr) 2024-06-06
FR3142583A1 (fr) 2024-05-31

Similar Documents

Publication Publication Date Title
US10810489B2 (en) Neuron peripheral circuits for neuromorphic synaptic memory array based on neuron models
US11055612B2 (en) Voltage controlled highly linear resistive elements
US11461621B2 (en) Methods and systems of implementing positive and negative neurons in a neural array-based flash memory
KR102653822B1 (ko) 혼성 신호 컴퓨팅 시스템 및 방법
US10748064B2 (en) Deep neural network training with native devices
EP2602937B1 (fr) Convertisseur numérique-analogique et circuit neuromorphique utilisant un tel convertisseur
US20200364577A1 (en) Training of artificial neural networks
US20190318239A1 (en) Resistive processing unit architecture with separate weight update and inference circuitry
US11610101B2 (en) Formation failure resilient neuromorphic device
FR2604839A1 (fr) Procede pour reduire les effets du bruit electrique dans un convertisseur analogique/numerique
US11797833B2 (en) Competitive machine learning accuracy on neuromorphic arrays with non-ideal non-volatile memory devices
EP2047475A2 (fr) Circuit de lecture d&#39;un element de retention de charges pour mesure temporelle
KR20240006614A (ko) 트랜지스터 기반 신경망을 위한 시스템, 방법 및 컴퓨터 디바이스
EP3594863B1 (fr) Circuit neuromorphique impulsionnel implementant un neurone formel
JP7447034B2 (ja) シナプス回路およびニューラルネットワーク装置
Gi et al. A ReRAM-based convolutional neural network accelerator using the analog layer normalization technique
TWI897985B (zh) 用於機器學習的基於電荷泵的電流模式神經元
FR2904464A1 (fr) Circuit eeprom de retention de charges pour mesure temporelle
US11120864B2 (en) Capacitive processing unit
EP4627483A1 (fr) Méthode et circuit de réalisation d&#39;opérations de multiplication et d&#39;accumulation en mémoire
US5386149A (en) Data synapse expressing unit capable of refreshing stored synapse load
US10594299B1 (en) Dynamic resistance element analog counter
EP4576094A1 (fr) Circuit électronique à base de cellules rram 2t2r avec précision améliorée
FR2904463A1 (fr) Programmation d&#39;un circuit de retention de charges pour mesure temporelle
US11200297B2 (en) Integrator voltage shifting for improved performance in softmax operation

Legal Events

Date Code Title Description
STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: UNKNOWN

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: THE INTERNATIONAL PUBLICATION HAS BEEN MADE

PUAI Public reference made under article 153(3) epc to a published international application that has entered the european phase

Free format text: ORIGINAL CODE: 0009012

STAA Information on the status of an ep patent application or granted ep patent

Free format text: STATUS: REQUEST FOR EXAMINATION WAS MADE

17P Request for examination filed

Effective date: 20250627

AK Designated contracting states

Kind code of ref document: A1

Designated state(s): AL AT BE BG CH CY CZ DE DK EE ES FI FR GB GR HR HU IE IS IT LI LT LU LV MC ME MK MT NL NO PL PT RO RS SE SI SK SM TR

DAV Request for validation of the european patent (deleted)
DAX Request for extension of the european patent (deleted)