IP Library Granted Patent US 12,493,778
Granted Patent B2
US 12,493,778 · App. 17/347,388 · Granted Dec 9, 2025

Method and apparatus for performing a neural network operation

Inventors: Lorenzo Zuolo (Lusia, IT); Rino Micheloni (Turate, IT)
Assignee: Microchip Technology Inc.
G06N3/063G06F7/50G06F7/523G06N3/048G06F7/5443
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,493,778
App. No.
17/347,388
Granted
Dec 9, 2025
Kind
B2
Abstract

A method for performing a neural network operation includes receiving weight and bias values of a deep neural network (DNN). An array of feature values, a bias value and a set of weight values for a single layer of the DNN are coupled to a neural network engine. Multiply-and-accumulate operations are performed on the single layer at one or more multiply and accumulate circuit (MAC) to obtain a sum corresponding to each neuron in the single layer. A layer output value corresponding to each neuron in the single layer is coupled to a corresponding input of the MAC. The coupling a bias value and a set of weight values, the performing multiply-and-accumulate operations and the coupling a layer output value are repeated to generate an output-layer-sum corresponding to each output-layer neuron and an activation function is performed on each output-layer-sum to generate DNN output values.

Claims (48)

1 . A method for performing a neural network operation at a flash controller integrated circuit comprising:

receiving one or more configuration files at the flash controller integrated circuit, the received one or more configuration files indicating a number of input neurons, a number of output neurons, a number of layers of hidden neurons, a number of hidden neurons in each layer of hidden neurons, and a type of activation function module;

programming a neural network engine of the flash controller integrated circuit in accordance with the information indicated in the one or more configuration files, the neural network engine programmed to include one or more multiply and accumulate circuits (MAC$) and to include one or more activation function modules of the indicated type, an input of a respective one of the one or more activation function modules coupled to an output of a respective one of the one or more MACs, the neural network engine programmed to include MAC and activation function modules to define a classification neural network (CNN) and a regression deep neural network (DNN);

receiving weight and bias values for the CNN at the flash controller integrated circuit;

monitoring the operation of a flash memory device comprising a flash memory die coupled to the flash controller integrated circuit at a status module of flash controller integrated circuit to identify feature values relating to the flash memory device, the feature values including a number program and erase (P/E) values for the flash memory device;

coupling a first array of feature values to the neural network engine of the flash controller integrated circuit, the feature values in the first array of feature values relating to a predicted reliability state of the flash memory device and including at least some of the identified feature values corresponding to the flash memory device;

coupling a bias value for a single layer of the CNN and a set of weight values for the single layer of the CNN to the neural network engine of the flash controller integrated circuit;

performing multiply-and-accumulate operations on the single layer of the CNN at the one or more MACs to obtain a sum corresponding to each neuron in the single layer of the CNN;

coupling a layer output value corresponding to each neuron in the single layer of the CNN to a corresponding input of the one or more MACs, each layer output value comprising one of the sums in the single layer or a function of one of the sums in the single layer;

repeating the coupling the bias value and the set of weight values for the single layer of the CNN to the neural network engine, the performing multiply-and-accumulate operations on the single layer of the CNN and the coupling the layer output value until multiply-and-accumulate operations have been performed on all layers of the CNN to generate an output-layer-sum corresponding to each output-layer neuron;

performing an activation function on each output-layer-sum using a respective activation function module of the plurality of activation function modules to generate one or more CNN output values representing an output layer of the CNN, the one or more CNN output values indicating a predicted reliability state of the flash memory device;

coupling a second array of feature values and weight and bias values of the regression DNN to the neural network engine of the flash controller integrated circuit, the second array of feature values including at least some of the identified feature values corresponding to the flash memory device;

performing neural network operations of the regression DNN to generate regression neural network (RNN) output values predicting the shape of respective threshold-voltage-shift read-error (TVS-RE) curves;

coupling the one or more RNN output values to one or more functional circuits of the flash controller integrated circuit that are external to the neural network engine of the flash controller integrated circuit, the one or more functional circuits including a read module, the one or more functional circuits to identify respective threshold voltage shift offset (TVSO) values proximate a minimum value of respective TVS-RE curves; and

sending one or more threshold-voltage-shift read instructions and respective TVSO values from the read module to the flash memory device, for reading the flash memory device.

2 . The method of claim 1 comprising:

receiving a file indicating an activation function shape; and

receiving coordinates indicating a portion of the activation function shape at the neural network engine,

wherein the performing an activation function comprises performing a linear activation function corresponding to the received coordinates on each of the sums of the particular layer to generate corresponding layer output values that represent a nonlinear function of the respective output-layer-sums.

3 . The method of claim 1 further comprising:

receiving a file indicating an activation function shape; and

receiving coordinates indicating a portion of the activation function shape at the neural network engine,

wherein the performing an activation function on each output-layer-sum further comprises performing a linear interpolation operation corresponding to the received coordinates on each output-layer-sum to generate the one or more CNN output values.

4 . The method of claim 1 wherein the activation function module type indicates a type selected from the group consisting of a Rectified Linear Unit (ReLU) activation function module, a Leaky ReLU activation function module, a Saturating Linear (SatLin) activation function module, a symmetric SatLin activation function module and a linear interpolation activation function module.

5 . The method of claim 1 comprising:

wherein coupling the first array of feature values to the neural network engine further comprises storing the array of feature values in a first cache memory,

wherein coupling the bias value and the set of weight values for the single layer of the CNN to the neural network engine comprises storing the bias value and the set of weight values for the single layer of the CNN in a second cache memory, and

wherein coupling the layer output value to the corresponding input of the one or more MACs comprises storing layer output values corresponding to a hidden layer of the CNN in a cache memory and moving the layer output values corresponding to the hidden layer to the corresponding input of the one or more MACs, the moving comprising storing a copy of the layer output values, corresponding to the hidden layer of the CNN stored in the neural output cache, into the feature and bias input cache, by overwriting previously stored values in the feature and bias input cache.

6 . A flash controller integrated circuit comprising:

an input to receive weight and bias values of a classification neural network (CNN) and a regression deep neural network (DNN);

a control module coupled to the input;

function circuits for performing flash memory control operations, the function circuits include a write module for programming codewords into a flash memory device that includes a flash memory die external to the flash controller integrated circuit, include a read module to perform reads of the flash memory device using Threshold Voltage Shift Offset (TVSO) values include a decode module to decode the results of the reads and include a status module to monitor the operation of the flash memory device to identify feature values relating to the flash memory device, the feature values including a number of program and erase (P/E) values for the flash memory device;

a neural network engine coupled to the control module, the control module to send aa first array of feature values to the neural network engine and to send a bias value and set of weight values for a single layer of the CNN to the neural network engine, wherein at least some of the feature values in the first array of feature values are the feature values identified by the status module, the neural network engine comprising:

one or more multiply and accumulate circuits (MACs) coupled to the control module, the one or more MACs to receive the array of feature values, the bias value and the set of weight values for a single layer of the CNN, the one or more MACs to perform multiply-and-accumulate operations on the single layer of the CNN to obtain a sum corresponding to each neuron in the single layer of the CNN;

a neural network engine controller coupled to the one or more MACs, the neural network engine controller to couple a layer output value corresponding to each neuron in the single layer of the CNN to a corresponding input of the one or more MACs, where each layer output value includes of one of the sums or a function of the one of the sums; and

one or more activation function module coupled to the one or more MACs,

wherein the control module is to repeat the coupling the bias value and the set of weight values, the one or more MACs are to repeat the performing multiply-and-accumulate operations and the neural network engine controller is to repeat the coupling the layer output value to the corresponding input of the one or more MAC until multiply-and-accumulate operations have been performed on all layers of the CNN to generate an output-layer-sum corresponding to each output-layer neuron,

wherein the activation function module is to perform an activation function on each output-layer-sum to generate one or more CNN output values representing an output layer of the CNN, the one or more CNN output values indicating a predicted reliability state of a flash memory device,

wherein the control module is to couple a second array of feature values and weight and bias values oh the regression DNN to the neural network engine of the flash controller integrated circuit, the second array of feature values including at least some of the identified feature values corresponding to the flash memory device, the neural network engine to perform neural network operations of the regression DNN to generate regression neural network (RNN) output values predicting the shape of respective threshold-voltage-shift read-error (TYS-RE) curves,

wherein the TVSO values used to perform the reads are TVSO values proximate a minimum value of respective TVS-RE curves.

7 . The integrated circuit of claim 6 wherein the control module is coupled to the MAC through one or more cache memory.

8 . The integrated circuit of claim 6 wherein the neural network engine comprises:

a feature and bias input cache coupled to the control module and the one or more MACs;

a weight input cache coupled to the control module and to the one or more MACs; and

a neural output cache coupled to the outputs of the one or more activation function modules and coupled to the neural network engine controller, the neural output cache to store layer output values corresponding to each hidden layer of the CNN and the one or more CNN output values,

wherein the coupling of each sum to the corresponding input of the one or more MACs comprises storing a copy of the contents of the neural output cache in the feature and bias input cache.

9 . The integrated circuit of claim 6 wherein the activation function module comprises a linear interpolation module coupled to the one or more MAC's, the linear interpolation module to receive coordinates indicating a portion of an activation function shape and perform a linear interpolation operation corresponding to the received coordinates on each of the sums of the particular layer of the DNN to generate corresponding layer output values that represent a nonlinear function of the respective sums.

10 . The integrated circuit of claim 6 wherein the activation function module performs an activation function selected from the group consisting of a Rectified Linear Unit (ReLU) activation function, a Leaky ReLU activation function, a Saturating Linear (SatLin) activation function, a symmetric SatLin activation module and a linear interpolation activation function module.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 14, 2021
From: ZUOLO, LORENZO; MICHELONI, RINO
To: MICROCHIP TECHNOLOGY INC.
Reel/Frame 056537/0955 →
Continuity (2)
Provisional Application 63125966 · Dec 15, 2020
Related Publication 20220188604A1 · Jun 16, 2022
References Cited (139)
US 6119260A · Tomisawa et al. · 2000 [cited by applicant]
US 6567313B2 · Tanaka et al. · 2003 [cited by applicant]
US 6704871B1 · Kaplan et al. · 2004 [cited by applicant]
US 7529215B2 · Osterling et al. · 2009 [cited by applicant]
US 7650480B2 · Jiang · 2010 [cited by applicant]
US 7930623B2 · Pisek et al. · 2011 [cited by applicant]
US 8429325B1 · Onufryk et al. · 2013 [cited by applicant]
US 8621318B1 · Micheloni et al. · 2013 [cited by applicant]
US 8656257B1 · Micheloni et al. · 2014 [cited by applicant]
US 8665648B2 · Mun et al. · 2014 [cited by applicant]
US 8689074B1 · Tai · 2014 [cited by applicant]
US 8694849B1 · Micheloni et al. · 2014 [cited by applicant]
US 8694855B1 · Micheloni et al. · 2014 [cited by applicant]
US 8707122B1 · Micheloni et al. · 2014 [cited by applicant]
US 8769380B1 · Burd et al. · 2014 [cited by applicant]
US 8966335B2 · Lunelli et al. · 2015 [cited by applicant]
US 8971112B2 · Crippa et al. · 2015 [cited by applicant]
US 8984376B1 · Norrie · 2015 [cited by applicant]
US 8990661B1 · Micheloni et al. · 2015 [cited by applicant]
US 9021333B1 · Northcott · 2015 [cited by applicant]
US 9092353B1 · Micheloni et al. · 2015 [cited by applicant]
US 9128858B1 · Micheloni et al. · 2015 [cited by applicant]
US 9235467B2 · Micheloni et al. · 2016 [cited by applicant]
US 9251909B1 · Camp et al. · 2016 [cited by applicant]
US 9268531B1 · Woo et al. · 2016 [cited by applicant]
US 9292428B2 · Kanamori et al. · 2016 [cited by applicant]
US 9305661B2 · Micheloni et al. · 2016 [cited by applicant]
US 9397701B1 · Micheloni et al. · 2016 [cited by applicant]
US 9417804B2 · Micheloni et al. · 2016 [cited by applicant]
US 9444655B2 · Sverdlov et al. · 2016 [cited by applicant]
US 9448881B1 · Micheloni et al. · 2016 [cited by applicant]
US 9450610B1 · Micheloni et al. · 2016 [cited by applicant]
US 9454414B2 · Micheloni et al. · 2016 [cited by applicant]
US 9564922B1 · Graumann et al. · 2017 [cited by applicant]
US 9590656B2 · Micheloni et al. · 2017 [cited by applicant]
US 9747200B1 · Micheloni · 2017 [cited by applicant]
US 9799405B1 · Micheloni et al. · 2017 [cited by applicant]
US 9813080B1 · Micheloni et al. · 2017 [cited by applicant]
US 9886214B2 · Micheloni et al. · 2018 [cited by applicant]
US 9892794B2 · Micheloni et al. · 2018 [cited by applicant]
US 9899092B2 · Micheloni · 2018 [cited by applicant]
US 10152273B2 · Micheloni et al. · 2018 [cited by applicant]
US 10157677B2 · Marelli et al. · 2018 [cited by applicant]
US 10216422B2 · Kim et al. · 2019 [cited by applicant]
US 10230396B1 · Micheloni et al. · 2019 [cited by applicant]
US 10283215B2 · Marelli et al. · 2019 [cited by applicant]
US 10291263B2 · Marelli et al. · 2019 [cited by applicant]
US 10332613B1 · Micheloni et al. · 2019 [cited by applicant]
US 10490288B1 · Wang et al. · 2019 [cited by applicant]
US 10861562B1 · Xiong et al. · 2020 [cited by applicant]
US 11398291B2 · Zuolo et al. · 2022 [cited by applicant]
US 11514994B1 · Zuolo et al. · 2022 [cited by applicant]
US 11886989B2 · Gu et al. · 2024 [cited by applicant]
US 20020144210A1 · Borkenhagen et al. · 2002 [cited by applicant]
US 20060106743A1 · Horvitz · 2006 [cited by applicant]
US 20060161830A1 · Yedidia et al. · 2006 [cited by applicant]
US 20060282603A1 · Onufryk et al. · 2006 [cited by applicant]
US 20070076873A1 · Yamamoto et al. · 2007 [cited by applicant]
US 20070157064A1 · Falik et al. · 2007 [cited by applicant]
US 20110231731A1 · Gross et al. · 2011 [cited by applicant]
US 20110255453A1 · Roh et al. · 2011 [cited by applicant]
US 20120166714A1 · Mun et al. · 2012 [cited by applicant]
US 20120287719A1 · Mun et al. · 2012 [cited by applicant]
US 20130343495A1 · Han et al. · 2013 [cited by applicant]
US 20140040697A1 · Loewenstein · 2014 [cited by applicant]
US 20140146605A1 · Yang · 2014 [cited by applicant]
US 20140237313A1 · Wang et al. · 2014 [cited by applicant]
US 20140281800A1 · Micheloni et al. · 2014 [cited by applicant]
US 20140281823A1 · Micheloni et al. · 2014 [cited by applicant]
US 20140310534A1 · Gurgi et al. · 2014 [cited by applicant]
US 20150033037A1 · Lidman · 2015 [cited by applicant]
US 20150049548A1 · Park et al. · 2015 [cited by applicant]
US 20150100860A1 · Lee et al. · 2015 [cited by applicant]
US 20160072527A1 · Suzuki et al. · 2016 [cited by applicant]
US 20160124679A1 · Huang et al. · 2016 [cited by applicant]
US 20160247581A1 · Suzuki et al. · 2016 [cited by applicant]
US 20160266791A1 · Lin et al. · 2016 [cited by applicant]
US 20160371014A1 · Roberts · 2016 [cited by applicant]
US 20170133107A1 · Ryan et al. · 2017 [cited by applicant]
US 20170149446A1 · Tao et al. · 2017 [cited by applicant]
US 20170213597A1 · Micheloni · 2017 [cited by applicant]
US 20170263311A1 · Cometti · 2017 [cited by applicant]
US 20180005670A1 · Lee et al. · 2018 [cited by applicant]
US 20180033490A1 · Marelli et al. · 2018 [cited by applicant]
US 20180046541A1 · Niu et al. · 2018 [cited by applicant]
US 20180314586A1 · Artieri et al. · 2018 [cited by applicant]
US 20190004734A1 · Kirshenbaum · 2019 [cited by examiner]
US 20190073139A1 · Kim et al. · 2019 [cited by applicant]
US 20190087119A1 · Oh et al. · 2019 [cited by applicant]
US 20190095794A1 · López et al. · 2019 [cited by applicant]
US 20190317901A1 · Kachare et al. · 2019 [cited by applicant]
US 20200004455A1 · Williams et al. · 2020 [cited by applicant]
US 20200066361A1 · Ioannou et al. · 2020 [cited by applicant]
US 20200074269A1 · Trygg et al. · 2020 [cited by applicant]
US 20200125955A1 · Klinger et al. · 2020 [cited by applicant]
US 20200151539A1 · Oh et al. · 2020 [cited by applicant]
US 20200183826A1 · Beaudoin et al. · 2020 [cited by applicant]
US 20200184245A1 · Huang et al. · 2020 [cited by applicant]
US 20200185027A1 · Rom · 2020 [cited by examiner]
US 20200210831A1 · Zhang et al. · 2020 [cited by applicant]
US 20200401911A1 · Zhang et al. · 2020 [cited by applicant]
US 20210109673A1 · Kim et al. · 2021 [cited by applicant]
US 20210118137A1 · Shi · 2021 [cited by examiner]
US 20210192333A1 · Thiruvengadam et al. · 2021 [cited by applicant]
US 20210273650A1 · Parthasarathy · 2021 [cited by examiner]
US 20210385012A1 · Buethe et al. · 2021 [cited by applicant]
US 20210385682A1 · Bedekar · 2021 [cited by examiner]
US 20220012121A1 · Xu et al. · 2022 [cited by applicant]
US 20220012572A1 · Chen et al. · 2022 [cited by applicant]
US 20220027083A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220050632A1 · Hong et al. · 2022 [cited by applicant]
US 20220051730A1 · Choi et al. · 2022 [cited by applicant]
US 20220058488A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220116056A1 · Kaynak et al. · 2022 [cited by applicant]
US 20220129738A1 · Kale · 2022 [cited by examiner]
US 20220165348A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220188604A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220270698A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220329262A1 · Liu et al. · 2022 [cited by applicant]
US 20220342582A1 · Graumann · 2022 [cited by applicant]
US 20220365845A1 · Buch et al. · 2022 [cited by applicant]
US 20220374169A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220375532A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220382629A1 · Graumann · 2022 [cited by applicant]
US 20220383970A1 · Zuolo et al. · 2022 [cited by applicant]
US 20220416812A1 · Wu · 2022 [cited by applicant]
US 20230087247A1 · Li et al. · 2023 [cited by applicant]
WO 2020152296A1 · 2020 [cited by applicant]
WO 2020117348A3 · 2020 [cited by applicant]
Anonymous, “Training checkpoints | TensorFlow Core”, Dec. 28, 2019, XP055886114, p. 1-p. 8, Retrieved from the Internet. [cited by applicant]
U.S. Appl. No. 17/347,388, filed Jun. 14, 2021, Lorenzo Zuolo. [cited by applicant]
U.S. Appl. No. 17/398,091, filed Aug. 10, 2021, Lorenzo Zuolo. [cited by applicant]
U.S. Appl. No. 17/506,735, filed Oct. 21, 2021, Lorenzo Zuolo. [cited by applicant]
J. Mu et al., “The impact of faulty memory bit cells on the decoding of spatially-coupled LDPC codes,” 2015 49th Asilomar Conference on Signals, Systems and Computers, Pacific Grove, CA, USA, 2015, pp. 1627-1631, doi: 1… [cited by applicant]
Noam Shazeer et al: Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer11, arxiv. org, Cornell University Li Bra Ry, 201 Olin Li Bra Ry Cornell University Ithaca, NY 14853, Jan. 23, 2017. [cited by applicant]
Yu Cai et al, “Errors in Flash-Memory-Based Solid-State Drives: Analysis, Mitigation, and Recovery” 11 , arxiv. org, Cornell University Library, 201 Olin Library Cornell University Ithaca, NY 14853, Nov. 28, 2017. [cited by applicant]
PCT/US2021/053279, International Search Report and Written Opinion, European Patent Office, mailed Jan. 31, 2022. [cited by applicant]
Santara et al., “BASS Net: Band-Adaptive Spectral-Spatial Feature Learning Neural Network for Hyperspectral Image Classification,” in 55.9 IEEE Transactions on Geoscience and Remote Sensing 5293-5301 (2017). (Year: 2017… [cited by applicant]
Zambelli et al., “Mitigating Self-Heating in Solid State Drives for Industrial Internet-of-Things Edge Gateways,” in 9.7 Electronics 1179 (2020). (Year: 2020). [cited by applicant]