CN113553293A - 存算一体装置及其校准方法 - Google Patents
存算一体装置及其校准方法 Download PDFInfo
- Publication number
- CN113553293A CN113553293A CN202110823220.4A CN202110823220A CN113553293A CN 113553293 A CN113553293 A CN 113553293A CN 202110823220 A CN202110823220 A CN 202110823220A CN 113553293 A CN113553293 A CN 113553293A
- Authority
- CN
- China
- Prior art keywords
- calibration
- memristor
- training
- input data
- memristor array
- 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.)
- Granted
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 109
- 238000000034 method Methods 0.000 title claims abstract description 82
- 238000003860 storage Methods 0.000 title abstract description 20
- 238000012549 training Methods 0.000 claims abstract description 209
- 238000012545 processing Methods 0.000 claims abstract description 94
- 239000011159 matrix material Substances 0.000 claims abstract description 64
- 238000010586 diagram Methods 0.000 description 22
- 230000006870 function Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 7
- 238000004088 simulation Methods 0.000 description 6
- 238000004422 calculation algorithm Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000012804 iterative process Methods 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000012417 linear regression Methods 0.000 description 3
- 238000012937 correction Methods 0.000 description 2
- 238000013135 deep learning Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000003071 parasitic effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000007636 ensemble learning method Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000011065 in-situ storage Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005293 physical law Methods 0.000 description 1
- 238000012805 post-processing Methods 0.000 description 1
- 238000004801 process automation Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/76—Architectures of general purpose stored program computers
- G06F15/78—Architectures of general purpose stored program computers comprising a single central processing unit
- G06F15/7807—System on chip, i.e. computer system on a single chip; System in package, i.e. computer system on one or more chips in a single package
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0793—Remedial or corrective actions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/0703—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
- G06F11/0706—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
- G06F11/073—Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Semiconductor Integrated Circuits (AREA)
- Mram Or Spin Memory Techniques (AREA)
- Semiconductor Memories (AREA)
Abstract
一种存算一体装置及其校准方法。存算一体装置包括第一处理单元,第一处理单元包括:第一计算忆阻器阵列,被配置为接收第一计算输入数据,并对第一计算输入数据进行计算以得到第一输出数据;以及第一校准忆阻器阵列,被配置为接收第一校准输入数据,并根据第一校准输入数据对第一输出数据进行校准,以得到第一校准输出数据;第一处理单元被配置为输出第一校准输出数据。校准方法包括:通过片外训练确定第一计算忆阻器阵列对应的第一计算权重矩阵,将第一计算权重矩阵写入第一计算忆阻器阵列;基于写入了第一计算权重矩阵的第一计算忆阻器阵列和第一计算权重矩阵,对第一校准忆阻器阵列进行片上训练,以调整第一校准忆阻器阵列的权重值。
Description
技术领域
本公开的实施例涉及一种存算一体装置及其校准方法。
背景技术
基于忆阻器的存算一体装置可以在存储位置处直接进行原位乘累加等操作,实现计算和存储的器件级融合,打破传统硬件平台的算力、能效限制,是最具潜力的下一代硬件芯片技术之一。国内外企业、科研单位都投入大量人力物力,经过近十年的发展后,基于忆阻器的存算一体技术已逐渐从理论仿真阶段进入实际芯片、系统的原型演示阶段。
发明内容
本公开至少一实施例提供一种存算一体装置的校准方法,所述存算一体装置包括第一处理单元,所述第一处理单元包括第一计算忆阻器阵列和第一校准忆阻器阵列,所述第一计算忆阻器阵列被配置为接收第一计算输入数据,并对所述第一计算输入数据进行计算以得到第一输出数据;所述第一校准忆阻器阵列的被配置为接收第一校准输入数据,并根据所述第一校准输入数据对所述第一输出数据进行校准,以得到第一校准输出数据;所述第一处理单元被配置为输出所述第一校准输出数据,所述校准方法包括:通过片外训练确定所述第一计算忆阻器阵列对应的第一计算权重矩阵,将所述第一计算权重矩阵写入所述第一计算忆阻器阵列;基于写入了所述第一计算权重矩阵的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值。
例如,在本公开至少一实施例提供的校准方法中,所述第一计算忆阻器阵列包括M行*N列的忆阻器单元,所述第一校准忆阻器阵列包括K行*N列的忆阻器单元,所述第一校准忆阻器阵列的第i列与所述第一计算忆阻器阵列的第i列串联,所述第一校准忆阻器阵列的第i列的忆阻器单元被配置为根据所述第一校准输入数据对所述第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据,M、N、K、i均为正整数,且1≤i≤N,基于写入了所述第一计算权重阵列的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值,包括:根据第一训练计算输入数据和所述第一计算权重矩阵,确定第一训练目标输出数据;向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,并向所述第一校准忆阻器阵列输入第一训练校准输入数据,以得到第一训练校准输出数据;根据所述第一训练校准输出数据和所述第一训练目标输出数据的偏差,调整所述第一校准忆阻器阵列中对应于所述第一计算忆阻器阵列中需要校准的列的忆阻器单元的权重值。
例如,在本公开至少一实施例提供的校准方法中,所述第一校准忆阻器阵列包括固定偏差校准子阵列,所述第一训练校准输入数据包括固定训练校准输入数据,所述固定偏差校准子阵列包括1行*N列的忆阻器单元,向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,包括:向所述固定偏差校准子阵列输入所述固定训练校准输入数据。
例如,在本公开至少一实施例提供的校准方法中,所述第一校准忆阻器阵列包括动态偏差校准子阵列,所述第一训练校准输入数据包括动态训练校准输入数据,所述动态偏差校准子阵列包括至少1行*N列的忆阻器单元,向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,包括:根据所述第一训练计算输入数据,确定所述动态训练校准输入数据;以及,向所述动态偏差校准子阵列输入所述动态训练校准输入数据。
例如,在本公开至少一实施例提供的校准方法中,所述第一校准忆阻器阵列包括固定偏差校准子阵列和动态偏差校准子阵列,所述第一训练校准输入数据包括固定训练校准输入数据和动态训练校准输入数据,所述固定偏差校准子阵列包括1行*N列的忆阻器单元,所述动态偏差校准子阵列包括至少1行*N列的忆阻器单元,向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,包括:向所述固定偏差校准子阵列输入所述固定训练校准输入数据;根据所述第一训练计算输入数据,确定所述动态训练校准输入数据;以及,向所述动态偏差校准子阵列输入所述动态训练校准输入数据。
例如,在本公开至少一实施例提供的校准方法中,向所述固定偏差校准子阵列输入所述固定训练校准输入数据,包括:向所述固定偏差校准子阵列输入所述第一训练计算输入数据的最大值的5%-20%,以作为所述固定训练校准输入数据。
例如,在本公开至少一实施例提供的校准方法中,在基于写入了所述第一计算权重矩阵的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值之前,所述校准方法还包括:确定所述第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元,并将所述动态偏差校准子阵列的第i列的至少一个忆阻器单元的输入设置为与所述第一计算忆阻器阵列的第i列的所述至少一个处于关键权重位置的忆阻器单元的输入相同,根据所述第一训练计算输入数据,确定所述动态训练校准输入数据,包括:将所述第一计算忆阻器阵列的第i列的所述至少一个处于关键权重位置的忆阻器单元的第一训练计算输入数据作为所述动态偏差校准子阵列的第i列的至少一个忆阻器单元的动态训练校准输入数据。
例如,在本公开至少一实施例提供的校准方法中,在基于写入了所述第一计算权重矩阵的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值之前,所述校准方法还包括:确定所述第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元,并将所述动态偏差校准子阵列的至少一行忆阻器单元的输入设置为与所述第一计算忆阻器阵列的所述至少一行处于关键权重位置的忆阻器单元的输入相同,根据所述第一训练计算输入数据,确定所述动态训练校准输入数据,包括:将所述第一计算忆阻器阵列的所述至少一行处于关键权重位置的忆阻器单元的第一训练计算输入数据作为所述动态偏差校准子阵列的至少一行忆阻器单元的动态训练校准输入数据。
例如,在本公开至少一实施例提供的校准方法中,基于所述写入了所述第一计算权重矩阵的第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值,还包括:在向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,并向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,以得到所述第一训练校准输出数据之前,向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,以得到第一训练输出数据;根据所述第一训练输出数据和所述第一训练目标输出数据的偏差,确定所述第一计算忆阻器阵列中需要校准的列,并使所述第一校准忆阻器阵列中对应于所述第一计算忆阻器阵列中需要校准的列的忆阻器单元与所述第一计算忆阻器阵列中需要校准的列串联接通。
例如,在本公开至少一实施例提供的校准方法中,所述存算一体装置还包括第二处理单元,所述第二处理单元包括第二计算忆阻器阵列和第二校准忆阻器阵列,所述第二计算忆阻器阵列被配置为接收根据所述第一校准输出数据确定的第二计算输入数据,并对所述第二计算输入数据进行计算以得到第二输出数据;所述第二校准忆阻器阵列的被配置为接收第二校准输入数据,并根据所述第二校准输入数据对所述第二输出数据进行校准,以得到第二校准输出数据;所述第二处理单元被配置为输出所述第二校准输出数据,所述校准方法还包括:通过片外训练确定所述第二计算忆阻器阵列对应的第二计算权重矩阵,将所述第二计算权重矩阵写入所述第二计算忆阻器阵列;基于写入了所述第二计算权重矩阵的所述第二计算忆阻器阵列的计算输出和所述第二计算权重矩阵,对所述第二校准忆阻器阵列进行片上训练,以调整所述第二校准忆阻器阵列的权重值。
例如,在本公开至少一实施例提供的校准方法中,所述第二处理单元与所述第一处理单元耦接,在基于写入了所述第二计算权重矩阵的所述第二计算忆阻器阵列和所述第二计算权重矩阵,对所述第二校准忆阻器阵列进行片上训练,以调整所述第二校准忆阻器阵列的权重值的过程中,根据第一训练计算输入数据和所述第一计算权重矩阵,确定第一训练目标输出数据,并将所述第一训练目标输出数据作为所述第二计算忆阻器阵列的第二训练输入数据,或者,在训练好所述第一校准忆阻器阵列的情况下,向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,向所述第一校准忆阻器阵列输入第一训练校准输入数据,以得到第一训练校准输出数据,并将所述第一训练校准输出数据作为所述第二计算忆阻器阵列的第二训练输入数据。
例如,在本公开至少一实施例提供的校准方法中,所述第一校准忆阻器阵列中的每个忆阻器单元被配置为既能够实现正权重,又能够实现负权重。
本公开至少一实施例还提供一种存算一体装置,包括第一处理单元,所述第一处理单元包括第一计算忆阻器阵列和第一校准忆阻器阵列,所述第一计算忆阻器阵列被配置为接收第一计算输入数据,并对所述第一计算输入数据进行计算以得到第一输出数据;所述第一校准忆阻器阵列的被配置为接收第一校准输入数据,并根据所述第一校准输入数据对所述第一输出数据进行校准,以得到第一校准输出数据;所述第一处理单元被配置为输出所述第一校准输出数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述第一计算忆阻器阵列包括M行*N列的忆阻器单元,所述第一校准忆阻器阵列包括K行*N列的忆阻器单元,所述第一校准忆阻器阵列的第i列与所述第一计算忆阻器阵列的第i列串联,所述第一校准忆阻器阵列的第i列的忆阻器单元被配置为根据所述第一校准输入数据对所述第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据,M、N、K、i均为正整数,且1≤i≤N。
例如,在本公开至少一实施例提供的存算一体装置中,所述第一校准忆阻器阵列包括固定偏差校准子阵列,所述第一校准输入数据包括固定校准输入数据,所述固定偏差校准子阵列包括1行*N列的忆阻器单元,所述固定偏差校准子阵列的第i列与所述第一计算忆阻器阵列的第i列串联,所述固定偏差校准子阵列的第i列的忆阻器单元被配置为根据所述固定校准输入数据对所述第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述第一校准忆阻器阵列包括动态偏差校准子阵列,所述第一校准输入数据包括动态校准输入数据,所述动态偏差校准子阵列包括至少1行*N列的忆阻器单元,所述动态偏差校准子阵列的第i列与所述第一计算忆阻器阵列的第i列串联,所述动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据是根据所述第一计算忆阻器阵列的第i列的M个忆阻器单元对应的第一计算输入数据确定的,所述动态偏差校准子阵列的第i列的至少一个忆阻器单元被配置为根据所述动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据,对所述第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述第一校准忆阻器阵列包括固定偏差校准子阵列和动态偏差校准子阵列,所述第一校准输入数据包括固定校准输入数据和动态校准输入数据,所述固定偏差校准子阵列包括1行*N列的忆阻器单元,所述动态偏差校准子阵列包括至少1行*N列的忆阻器单元,所述固定偏差校准子阵列的第i列和所述动态偏差校准子阵列的第i列与所述第一计算忆阻器阵列的第i列串联,所述动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据是根据所述第一计算忆阻器阵列的第i列的M个忆阻器单元对应的第一计算输入数据确定的,所述固定偏差校准子阵列的第i列的忆阻器单元和所述动态偏差校准子阵列的第i列的至少一个忆阻器单元被配置为分别根据所述固定校准输入数据和所述动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据,对所述第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据。
例如,在本公开至少一实施例提供的存算一体装置中,所述固定校准输入数据为所述第一计算输入数据的最大值的5%-20%。
例如,在本公开至少一实施例提供的存算一体装置中,所述动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据与所述第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元对应的第一计算输入数据相同。
例如,在本公开至少一实施例提供的存算一体装置中,所述动态偏差校准子阵列的至少一行忆阻器单元对应的动态校准输入数据与所述第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元对应的第一计算输入数据相同。
附图说明
为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
图1图示了一种忆阻器交叉阵列结构的示意图;
图2图示了一种存算一体装置的处理单元的示意图;
图3图示了一种基于忆阻器的存算一体系统的示意图;
图4A图示了一种低层次、细粒度的元件级校准方法的示意图;
图4B图示了一种高层次、粗粒度的系统级校准方法的示意图;
图4C为本公开一实施例提供的一种中层次、中粒度的针对中间级组件的校准方法的示意图;
图5为本公开一实施例提供的一种存算一体装置的处理单元的示意图;
图6为本公开一实施例提供的一种存算一体装置的校准方法的流程图;
图7为本公开一实施例提供的第一处理单元的一个示例的示意图;
图8为本公开一实施例提供的动态确定动态训练校准输入数据的一个示例的示意图;
图9A为本公开至少一实施例提供的校准方法的一个示例的流程图;
图9B为本公开至少一实施例提供的校准方法的另一个示例的流程图;
图10A为本公开至少一实施例提供的一种独立并行校准方式的示意图;
图10B为本公开至少一实施例提供的一种逐级校准方式的示意图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
下面通过几个具体的实施例对本公开进行说明。为了保持本发明实施例的以下说明清楚且简明,可省略已知功能和已知部件的详细说明。当本发明实施例的任一部件在一个以上的附图中出现时,该部件在每个附图中由相同的参考标号表示。
忆阻器交叉阵列结构是忆阻器存算一体装置的模拟域计算核心。例如,图1图示了一种忆阻器交叉阵列结构100的示意图。如图1所示,忆阻器交叉阵列结构100可以包括以横纵交叉方式阵列排布的多个忆阻器,通过将输入数据排列为输入向量X(例如,包括图1所示出的x1、x2、……、xn,并且输入向量可以为已编码幅值、宽度或脉冲个数的电压),将权重矩阵编码为忆阻器电导值G(例如,包括图1所示出的g11、g21、……、g1n,以及图1中未示出的gm1、gm1、……、gmn),利用高并行、低功耗的阵列读操作获得输出电流I(例如,包括图1所示出的I1、I2、……、Im),可以实现深度学习中普遍的乘累加计算,进而对矩阵向量乘进行加速。例如,根据基尔霍夫定律,忆阻器交叉阵列结构的输出电流可以根据下述公式得出:I=G×V。上述乘累加计算过程在模拟域利用物理定律实现,不同于布尔逻辑的数字电路实现方式,不需要频繁访存搬移权重数据,解决了经典计算系统的冯诺依曼瓶颈,可以实现高算力、高能效的智能计算任务。
忆阻器交叉阵列可以用于构建存算一体装置的基本处理单元(ProcessingElement,PE)。例如,图2图示了一种存算一体装置的处理单元200的示意图。如图2所示,处理单元200可以包括模拟域部分和数字域分,模拟域部分实现基于模拟信号的模拟计算,模拟域的输入、控制、输出都是数字信号;数字域部分控制、配合模拟域部分的功能,并和外部进行交互。例如,如图2所示,模拟域部分包括输入模块210、忆阻器阵列220、输出模块230和供电模块240。输入模块210是用来实现输入向量功能的相关模拟电路;忆阻器阵列220是忆阻器交叉阵列(例如图1所示的忆阻器交叉阵列结构100),可以被写入权重矩阵并进行乘累加计算;输出模块230是用来实现输出向量(例如图1所示的输出电流)量化的相关模拟电路;供电模块240是基本的模拟电源电路。例如,数字域部分可以包括控制器、输入缓存、输出缓存、数字后处理模块和接口模块等(图1中未示出)。需要说明的是,图1所示的存处理单元200仅是示例性的,而不是对本公开的限制,处理单元可以根据实际情况进行模块的增减和变形。
图3图示了一种基于忆阻器的存算一体系统300的示意图。例如,存算一体系统300可以是存算一体芯片。如图3所示,存算一体系统300包括多个处理单元模组310和多个功能单元320。如图3所示,每个处理单元模组310包括多个处理单元311和多个功能模块312,例如,处理单元311可以是图2所示的处理单元200,多个功能模块312由数字电路实现并可以包括以下中的一者或多者:互联模块、接口模块、控制模块等。例如,多个功能单元320由数字电路实现并可以包括以下中的一者或多者:互联单元、主控单元、片上存储单元、路由单元、接口单元、时钟单元、电源单元等。需要说明的是,图3所示的存算一体系统300仅是示例性的,而不是对本公开的限制,存算一体系统可以根据实际情况进行单元或模块的增减和变形。在基于忆阻器的存算一体系统中,所有数字域实现的信号处理和控制都非常稳定,但模拟域实现的模拟计算可能受到忆阻器天然的随机性、非理想特性、阵列寄生参数影响或者受到工艺、供电、温度等环境偏差和波动影响,从而在器件级(忆阻器)、电路级(模拟电路模块)、阵列级和系统级工作时都会偏离理想的功能和输出,这些误差、噪声等会造成计算结果精度损失和错误,使得硬件系统无法正确工作。例如,在图3所示的每个处理单元311是图2所示的处理单元200的情况下,每个处理单元311内的输入模块、忆阻器阵列、输出模块和供电模块都会存在误差和扰动,而图3所示的基于忆阻器的存算一体系统包括多个处理单元311,误差和扰动会不断积累,从而严重影响系统正常工作,这时需要进行校准。
例如,图4A-4C图示了校准方法的示意图。传统的校准方法可以分为两类。第一类校准方法是低层次、细粒度的元件级校准,通过校准所有潜在的误差和波动来源保证每个部件可靠、准确度工作,进而保证包括多个部件的系统能够可靠、准确地工作。例如,采用多个忆阻器共同表征一个权重单元,利用平均效应抵消随机性的影响;设计全新的单元阵列结构,缓解阵列的寄生参数;等比例的增大电路设计尺寸,缓解工艺偏差;引入校准电路单元,补偿、校准模拟电路的精度等。例如,图4A图示了一种低层次、细粒度的元件级校准方法的示意图,其中黑色圆圈表示校准位置,在图4A中,对处理单元的模拟域内的每个模块进行校准,从而保证处理单元可靠、准确地工作,进而保证包括多个处理单元的系统能够可靠、准确地工作。第二类校准方法是高层次、粗粒度的系统级校准,在第二类方案中不关注具体的误差和波动来源,而是从系统整体表现出发,强调系统功能层次的工作、输出正确。例如,算法和系统结合进行联合优化,对关键层权重或全部权重进行片上训练,采用集成学习的方法,采用更多的硬件资源实现同一算法等。例如,图4B图示了一种高层次、粗粒度的系统级校准方法的示意图,其中黑色圆圈表示校准位置,在图4B中,对基于忆阻器的存算一体系统整体通过算法优化和流程改进来实现校准。然而,第一类校准方法开销大,成本高,设计和实现复杂度高;第二类校准方法通常对器件特性要求较高,且校准可靠性难以保证,只能证明在有限的网络结构中起作用,无法推广到更广泛、复杂的网络模型上,此外,一些特定的第二类校准方法只能兼容器件级误差,若通过集成学习方法会成倍的增加硬件开销。
为实现一种高可靠、低成本的通用存算一体模拟计算误差校准,本公开提出一种中层次、中粒度的针对中间级组件的校准方法。在本公开所提出的中层次、中粒度的针对中间级组件的校准方法中,通过引入冗余校准单元对中间级组件的模拟域计算结果进行校准,从而保证系统能够可靠、准确地工作,并且由于仅调整引入的冗余校准单元而无需改变已有的忆阻器阵列所实现的权重矩阵,从而可以灵活根据校准精度的要求配置硬件开销,实现按需设计。例如,图4C为本公开一实施例提供的一种中层次、中粒度的针对中间级组件的校准方法的示意图,其中黑色圆圈表示校准位置,在图4C中,对每个处理单元的模拟域计算结果进行校准,由于各种底层的模拟元件的误差最终都会反映到该模拟计算结果上,所以校准该模拟域计算结果就相当于同时对各个底层的模拟元件进行校准,能够在处理单元级保证各个计算结果准确,从而保证系统正常工作。
下面结合附图对本公开所提出的中层次、中粒度的针对中间级组件的校准方法及其实施例和对应的示例进行详细说明。
图5为本公开一实施例提供的一种存算一体装置的处理单元的示意图。图6为本公开一实施例提供的一种存算一体装置的校准方法的流程图。下面以图5所示的存算一体装置为例,对图6所示的校准方法进行详细说明。
例如,如图5所示,存算一体装置包括第一处理单元500,第一处理单元500包括第一计算忆阻器阵列510和第一校准忆阻器阵列520,第一计算忆阻器阵列510被配置为接收第一计算输入数据,并对第一计算输入数据进行计算以得到第一输出数据;第一校准忆阻器阵列520的被配置为接收第一校准输入数据,并根据第一校准输入数据对第一输出数据进行校准,以得到第一校准输出数据;第一处理单元500被配置为输出第一校准输出数据。
例如,第一计算忆阻器阵列510可以为图2所示的忆阻器阵列220。第一计算输入数据可以为已编码的电压,第一计算忆阻器阵列510进行乘累加计算以得到第一输出数据,第一输出数据为电流值。
例如,第一校准忆阻器阵列520可以为忆阻器交叉阵列,第一校准输入数据可以为已编码的电压,第一校准忆阻器阵列520可以对第一输出数据的固定偏置偏差和动态偏差进行校准。
需要说明的是,为了清楚起见,图5仅示意性地示出了存算一体装置的第一处理单元500,且仅示出了第一处理单元500的部分组件,实际上,存算一体装置可以包括与第一处理单元500类似的多个基本处理单元以及其他可能的组件(例如,图3所示的功能单元320),并且第一处理单元500也可以包括其他可能的组件(例如,图2所示的各种模拟电路)。
在此情况下,例如,如图6所示,校准方法600包括步骤S610和步骤S620。
步骤S610:通过片外训练确定第一计算忆阻器阵列510对应的第一计算权重矩阵,将第一计算权重矩阵写入第一计算忆阻器阵列510。
步骤S620:基于写入了第一计算权重矩阵的第一计算忆阻器阵列510和第一计算权重矩阵,对第一校准忆阻器阵列520进行片上训练,以调整第一校准忆阻器阵列520的权重值。
对于步骤S610,可以将第一计算权重矩阵编码为第一计算忆阻器阵列的电导值。
对于步骤S620,写入了第一计算权重矩阵的第一计算忆阻器阵列510的计算输出可以视为实际的第一输出数据,利用第一计算权重矩阵可以确定理想的目标输出数据,实际的第一输出数据与理想的目标输出数据之间存在偏差,对第一校准忆阻器阵列520进行片上训练,通过自适应地调整第一校准忆阻器阵列520的权重值可以减小该偏差直到该偏差达到合适的区间,从而实现校准的目的。
例如,上述校准方法600可以集成到系统的编译器等工具链中,实现全流程自动化。在这种情况下,引入的额外硬件开销仅仅只有第一校准忆阻器阵列520和简单的数字控制电路(图5中未示出)。
例如,片上训练可以采用线性回归方法,也可以采用其他算法,以调整第一校准忆阻器阵列520的权重值,使得实际的第一输出数据逼近理想的目标输出数据,以实现校准效果。
例如,调整第一校准忆阻器阵列520的权重值的顺序可以采用并行方式或串行方式,也可以采用其他可能的顺序方式,本公开的实施例对此不作限制。例如,调整第一校准忆阻器阵列520的权重值的操作可以是带读校验的精确定量更新,也可以是定性的符号更新,也可以采用能够保证权重按照需要确定的增大或减小的其他操作方式,本公开的实施例对此不作限制。
在本公开实施例中,对第一计算忆阻器阵列的第一输出数据进行校准,实际上是对该第一处理单元内的模拟域计算结果进行校准,该第一输出数据已经包含了第一处理单元内的第一计算忆阻器阵列以及其他可能的模拟电路(例如,图2所示的各种模拟电路)所带来的偏差,从而上述校准是处理单元级的校准,可以确保每个处理单元的模拟域计算结果准确,从而保证包括多个处理单元的系统正常工作,具有很好的可靠性和通用性。此外,由于不需要对底层的各个组件进行校准,引入的额外开销低,具有高效性和低成本的优势;由于仅对引入的第一校准忆阻器阵列的权重值进行校准,可以灵活根据校准精度的要求配置硬件开销,实现按需设计。因此,本公开所提出的校准方法解决了存算一体系统发展的关键瓶颈,是忆阻器存算一体技术走向实用化应用阶段的核心突破。
例如,在本公开至少一实施例提供的校准方法中,第一计算忆阻器阵列510包括M行*N列的忆阻器单元,第一校准忆阻器阵列520包括K行*N列的忆阻器单元,第一校准忆阻器阵列520的第i列与第一计算忆阻器阵列510的第i列串联,第一校准忆阻器阵列520的第i列的忆阻器单元被配置为根据第一校准输入数据对第一计算忆阻器阵列510的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据,M、N、K、i均为正整数,且1≤i≤N。
需要说明的是,第一校准忆阻器阵列520的尺寸由校准精度的要求确定,期望模拟计算结果越精确、校准的范围越大,则需要越多的冗余权重,即需要越大尺寸的第一校准忆阻器阵列520,在极端情况下,第一校准忆阻器阵列520的尺寸可以大于第一计算忆阻器阵列510的尺寸。
还需要说明的是,描述第一计算忆阻器阵列510和第一校准忆阻器阵列520的尺寸时所使用的“行”和“列”仅旨在区分忆阻器阵列的两个维度,而不是对忆阻器阵列的限制。
例如,在本公开至少一实施例提供的校准方法中,步骤S620包括步骤S621至步骤S623。
步骤S621:根据第一训练计算输入数据和第一计算权重矩阵,确定第一训练目标输出数据。
步骤S622:向第一计算忆阻器阵列510输入第一训练计算输入数据,并向第一校准忆阻器阵列520输入第一训练校准输入数据,以得到第一训练校准输出数据。
步骤S623:根据第一训练校准输出数据和第一训练目标输出数据的偏差,调整第一校准忆阻器阵列中对应于第一计算忆阻器阵列中需要校准的列的忆阻器单元的权重值。
对于步骤S621,向第一计算忆阻器阵列510输入第一训练输入数据,第一计算忆阻器阵列510可以根据第一计算权重矩阵计算得到第一训练目标输出数据。
例如,第一训练输入数据可以随机生成,或者根据编译器等工具链预先确定的训练集的输入分布采样生成,或者直接为的编译器等工具链预先确定的训练集的一部分,本公开的实施例对此不作限制。
对于步骤S622,在第一计算忆阻器阵列510输入第一训练计算输入数据,第一校准忆阻器阵列520输入第一训练校准输入数据的情况下,第一计算忆阻器阵列510和第一校准忆阻器阵列520两者的整体可以计算得到第一训练校准输出数据。
对于步骤S623,根据第一训练校准输出数据和第一训练目标输出数据的偏差,仅调整第一校准忆阻器阵列520中对应于第一计算忆阻器阵列510中需要校准的列的忆阻器单元的权重值,而不调整第一计算忆阻器阵列510中需要校准的列的忆阻器单元的权重值,即可实现对偏差的校准。
例如,第一校准忆阻器阵列510中的每个忆阻器单元被配置为既能够实现正权重,又能够实现负权重。
需要说明的是,上述实施例示意性地说明了第一校准忆阻器阵列的片上训练的一次迭代过程,在实际情况中,通常需要进行多次迭代过程以使得校准结果满足需求,由于多次迭代过程中的每一次迭代过程均与步骤S621至S623相同,故在此不再赘述。
还需要说明的是,为了防止迭代过程次数过多,可以设定最大迭代过程次数以节省资源。
例如,图7为本公开一实施例提供的第一处理单元的一个示例的示意图。如图7所示,第一处理单元700包括第一计算忆阻器阵列710和第一校准忆阻器阵列720。在图7中,第一校准忆阻器阵列720包括固定偏差校准子阵列720a和动态偏差校准子阵列720b。固定偏差校准子阵列720a被配置为校准固定偏置偏差,动态偏差校准子阵列720b被配置为校准动态偏置偏差。需要说明的是,在本公开的实施例中,第一校准忆阻器阵列720可以包括固定偏差校准子阵列720a和动态偏差校准子阵列720b中任一者或两者,并且在第一校准忆阻器阵列720包括固定偏差校准子阵列720a和动态偏差校准子阵列720b两者的情况下,可以使用固定偏差校准子阵列720a和动态偏差校准子阵列720b中的任一者或两者。例如,可以通过开关(图7中未示出)控制方式来选择固定偏差校准子阵列720a和动态偏差校准子阵列720b中的任一者或两者,以根据需要灵活控制第一校准忆阻器阵列。
还需要说明的是,图7中的忆阻器采用1R(即一个电阻元件)类型仅是示例性的而不是对本公开的限制,忆阻器可以根据实际情况采用不同的类型。例如,忆阻器还可以采用1T1R(即一个电阻元件加一个晶体管)类型。
还需要说明的是,图7中的第一校准忆阻器阵列720的尺寸仅是示例性的,而不是对本公开的限制,第一校准忆阻器阵列720的尺寸可以根据所面向的特定的智能计算场景和任务及其精度要求而确定。并且,在图7中,固定偏差校准子阵列720a采用阵列拓展模式,动态偏差校准子阵列720b采用独立的多列模式,也是示例性的而不是对本公开的限制,固定偏差校准子阵列720a和动态偏差校准子阵列720b的模式可以更具具体情况而定。
例如,在本公开的实施例的一个示例中,第一校准忆阻器阵列包括固定偏差校准子阵列(例如,图7所示的固定偏差校准子阵列720a),第一训练校准输入数据包括固定训练校准输入数据,固定偏差校准子阵列包括1行*N列的忆阻器单元。在这种情况下,步骤S622中的向第一校准忆阻器阵列输入第一训练校准输入数据,包括:向固定偏差校准子阵列输入固定训练校准输入数据。
例如,在本公开实施例的另一个示例中,第一校准忆阻器阵列包括动态偏差校准子阵列(例如,图7所示的动态偏差校准子阵列720b),第一训练校准输入数据包括动态训练校准输入数据,动态偏差校准子阵列的包括至少1行*N列的忆阻器单元。在这种情况下,步骤S622中的向第一校准忆阻器阵列输入第一训练校准输入数据,包括:根据第一训练计算输入数据,确定动态训练校准输入数据;以及,向动态偏差校准子阵列输入动态训练校准输入数据。
例如,在本公开实施例的又一个示例中,第一校准忆阻器阵列包括固定偏差校准子阵列和动态偏差校准子阵列(图7所示的固定偏差校准子阵列720a和动态偏差校准子阵列720b),第一训练校准输入数据包括固定训练校准输入数据和动态训练校准输入数据,固定偏差校准子阵列包括1行*N列的忆阻器单元,动态偏差校准子阵列包括至少1行*N列的忆阻器单元。在这种情况下,步骤S622中的向第一校准忆阻器阵列输入第一训练校准输入数据,包括:向固定偏差校准子阵列输入固定训练校准输入数据;根据第一训练计算输入数据,确定动态训练校准输入数据;以及,向动态偏差校准子阵列输入动态训练校准输入数据。
在本公开的实施例中,固定训练校准输入数据对于固定偏差校准子阵列的N列中的每一列都是相同的。
例如,固定训练校准输入数据是固定偏置的电压脉冲。
例如,在第一计算忆阻器阵列各行的第一训练计算输入数据是0或1的情况下,固定训练校准输入数据可以固定设置为1且不随第一训练计算输入数据的变化而变化。
例如,考虑到实际的第一输出数据与理想的目标输出数据之间的偏差往往相对较小,固定训练校准输入数据可以设置为第一训练计算输入数据的最大值的5%-20%。在这种情况下,向固定偏差校准子阵列输入固定训练校准输入数据,包括:向固定偏差校准子阵列输入第一训练计算输入数据的最大值的5%-20%,以作为固定训练校准输入数据。
在本公开的实施例中,动态训练校准输入数据是动态确定的,且对于动态偏差校准子阵列的N列中的每一列可能是不同的。
例如,在本公开实施例的一个示例中,在基于写入了第一计算权重矩阵的第一计算忆阻器阵列和第一计算权重矩阵,对第一校准忆阻器阵列进行片上训练,以调整第一校准忆阻器阵列的权重值之前,校准方法还包括步骤S630a:确定第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元,并将动态偏差校准子阵列的第i列的至少一个忆阻器单元的输入设置为与第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元的输入相同。在这种情况下,根据第一训练计算输入数据,确定动态训练校准输入数据,包括:将第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元的第一训练计算输入数据作为动态偏差校准子阵列的第i列的至少一个忆阻器单元的动态训练校准输入数据。
例如,可以根据实际情况确定第一计算忆阻器阵列中的各列的关键权重位置的比例,并按照所确定的比例,在第一计算忆阻器阵列中定义每列的关键权重位置,比如可以按照波动程度以及波动对结果影响程度对每列的各个权重进行排序,按照所确定的比例选择影响程度靠前的忆阻器的相应位置作为该列的关键权重位置,第一计算忆阻器阵列的各列的关键权重位置可能不尽相同;同时,第一计算忆阻器阵列的各列的关键权重位置的个数和动态偏差校准子阵列的各列接入的权重单元数相同,如果第一计算忆阻器阵列的第i列和动态偏差校准子阵列的第i列一一对应,第一计算忆阻器阵列的第i列的关键权重的输入则和动态偏差校准子阵列的第i列的各行输入共享,从而确定动态偏差校准子阵列的第i列的动态输入,即动态偏差校准子阵列的第i列共享第一计算忆阻器阵列的第i列的关键权重位置的第一训练计算输入数据。
例如,图8为本公开一实施例提供的动态确定动态训练校准输入数据的一个示例的示意图。在图8所示的示例中,确定第一计算忆阻器阵列810的各列的关键权重位置数目为2,对应地,动态偏差校准子阵列820b的尺寸为2行。例如,在图8中,确定第一计算忆阻器阵列810的第1列的第1行和第j行的忆阻器单元为处于关键权重位置的忆阻器单元,并将动态偏差校准子阵列820b的第1列的第1行和第2行的输入分别设置为与第一计算忆阻器阵列810的第1列的第1行和第j行的忆阻器单元的输入相同;确定第一计算忆阻器阵列810的第2列的第1行和第2行的忆阻器单元为处于关键权重位置的忆阻器单元,并将动态偏差校准子阵列820b的第2列的第1行和第2行的输入分别设置为与第一计算忆阻器阵列810的第2列的第1行和第2行的忆阻器单元的输入相同;确定第一计算忆阻器阵列810的第3列的第2行和第j行的忆阻器单元为处于关键权重位置的忆阻器单元,并将动态偏差校准子阵列820b的第3列的第1行和第2行的输入分别设置为与第一计算忆阻器阵列810的第3列的第2行和第j行的忆阻器单元的输入相同,j为大于等于2的正整数。这样,就可以确定动态偏差校准子阵列820b的各列的动态输入,动态偏差校准子阵列820b的各列的输入共享第一计算忆阻器阵列810对应列的关键权重位置的输入。
在本公开的实施中,动态偏差校准子阵列也可以采用阵列拓展模式。例如,在动态偏差校准子阵列采用阵列拓展模式时,可以以行为单位地确定第一校准忆阻器阵列的关键权重位置。
例如,在本公开实施例的另一个示例中,在基于写入了第一计算权重矩阵的第一计算忆阻器阵列和第一计算权重矩阵,对第一校准忆阻器阵列进行片上训练,以调整第一校准忆阻器阵列的权重值之前,校准方法还包括步骤S630b:确定第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元,并将动态偏差校准子阵列的至少一行忆阻器单元的输入设置为与第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元的输入相同。在这种情况下,根据第一训练计算输入数据,确定动态训练校准输入数据,包括:将第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元的第一训练计算输入数据作为动态偏差校准子阵列的至少一行忆阻器单元的动态训练校准输入数据。
在本公开的实施中,可以对第一计算忆阻器阵列中的全部列进行校准,也可以确定第一计算忆阻器阵列中需要校准的列,仅对第一计算忆阻器阵列中需要校准的列进行校准以节省校准的计算量。
例如,在本公开的实施例中,基于写入了第一计算权重矩阵的第一计算忆阻器阵列和第一计算权重矩阵,对第一校准忆阻器阵列进行片上训练,以调整第一校准忆阻器阵列的权重值(步骤S620),还包括步骤S624:在向第一计算忆阻器阵列输入第一训练计算输入数据,并向第一校准忆阻器阵列输入第一训练校准输入数据,以得到第一训练校准输出数据(步骤S622)之前,向第一计算忆阻器阵列输入第一训练计算输入数据,以得到第一训练输出数据;根据第一训练输出数据和第一训练目标输出数据的偏差,确定第一计算忆阻器阵列中需要校准的列,并使第一校准忆阻器阵列中对应于第一计算忆阻器阵列中需要校准的列的忆阻器单元与第一计算忆阻器阵列中需要校准的列串联接通。
例如,图9A为本公开至少一实施例提供的校准方法的一个示例的流程图,校准方法900a包括步骤S910a至步骤S950a。如图9A所示,在步骤S910a处,确定第一校准忆阻器阵列的结构和尺寸,确定第一校准忆阻器阵列的结构指代确定第一校准忆阻器阵列包括或者选择固态偏差校准子阵列和动态偏差校准子阵列中的一者或两者,确定第一校准忆阻器阵列的尺寸指代根据校正精度要求确定第一校准忆阻器阵列的行列数;在步骤S920a处,映射第一权重计算矩阵,例如,由编译器等工具链将第一权重计算矩阵部署、映射到每个处理单元的第一计算忆阻器阵列;在步骤S930a处,确定第一计算忆阻器阵列的各列的关键权重位置,例如,根据所确定的比例选择、定位出各列相应的关键权重位置;在步骤S940a处,确定第一训练校准输入数据,例如,固定训练校准输入数据为第一训练计算输入数据的最大值的5%-20%,动态偏差标准子阵列的各列的不同行的输入和第一计算忆阻器阵列对应列的关键权重位置的输入实时共享;在步骤S950a处,对第一校准忆阻器阵列的全部列进行片上训练以实现校准,例如,利用线性回归的方法,片上训练、调整固定偏差校准子阵列和动态偏差校准子阵列的权重值,直到实际的第一输出数据与理想的目标输出数据之间的偏差达到合适的区间或片上训练达到最大迭代过程次数。在本示例中,未预先确定第一计算忆阻器阵列中需要校准的列,对第一计算忆阻器阵列中全部列进行校准。
例如,图9B为本公开至少一实施例提供的校准方法的另一个示例的流程图,校准方法900b包括步骤S910b至步骤S960b。如图9B所示,在步骤S910b处,确定第一校准忆阻器阵列的结构和尺寸,确定第一校准忆阻器阵列的结构指代确定第一校准忆阻器阵列包括或者选择固态偏差校准子阵列和动态偏差校准子阵列中的一者或两者,确定第一校准忆阻器阵列的尺寸指代根据校正精度要求确定第一校准忆阻器阵列的行列数;在步骤S920b处,映射第一权重计算矩阵,例如,由编译器等工具链将第一权重计算矩阵部署、映射到每个处理单元的第一计算忆阻器阵列;在步骤S930b处,确定第一计算忆阻器阵列的各列的关键权重位置,例如,根据所确定的比例选择、定位出各列相应的关键权重位置;在步骤S940b处,确定第一训练校准输入数据,例如,固定训练校准输入数据为第一训练计算输入数据的最大值的5%-20%,动态偏差标准子阵列的各列的不同行的输入和第一计算忆阻器阵列对应列的关键权重位置的输入实时共享;在步骤S950b处,确定并接通第一计算忆阻器阵列中需要校准的列,例如,如步骤S624所述的确定并接通第一计算忆阻器阵列中需要校准的列;在步骤S960b处,对第一校准忆阻器阵列中需要校准的列进行片上训练以实现校准,例如,利用线性回归的方法,片上训练、调整固定偏差校准子阵列和动态偏差校准子阵列的权重值,直到实际的第一输出数据与理想的目标输出数据之间的偏差达到合适的区间或片上训练达到最大迭代过程次数。在本示例中,预先确定第一计算忆阻器阵列中需要校准的列,仅对第一计算忆阻器阵列中需要校准的列进行校准。
在本公开的实施例中,存算一体装置包括多个处理单元。例如,存算一体装置还包括第二处理单元,第二处理单元包括第二计算忆阻器阵列和第二校准忆阻器阵列,第二计算忆阻器阵列被配置为接收根据第一校准输出数据确定的第二计算输入数据,并对第二计算输入数据进行计算以得到第二输出数据;第二校准忆阻器阵列的被配置为接收第二校准输入数据,并根据第二校准输入数据对第二输出数据进行校准,以得到第二校准输出数据;第二处理单元被配置为输出第二校准输出数据;校准方法还包括:通过片外训练确定第二计算忆阻器阵列对应的第二计算权重矩阵,将第二计算权重矩阵写入第二计算忆阻器阵列;基于写入了第二计算权重矩阵的第二计算忆阻器阵列的计算输出和第二计算权重矩阵,对第二校准忆阻器阵列进行片上训练,以调整第二校准忆阻器阵列的权重值。
需要说明的是,对于存算一体装置所包括的多个处理单元,可以采用多种校准顺序,本公开的实施例对此不作限制。例如,多个处理单元可以独立并行地进行校准。例如,多个处理单元也可以逐级地进行校准。
例如,在本公开的实施例中,第二处理单元与第一处理单元耦接,在基于写入了第二计算权重矩阵的第二计算忆阻器阵列和第二计算权重矩阵,对第二校准忆阻器阵列进行片上训练,以调整第二校准忆阻器阵列的权重值的过程中,根据第一训练计算输入数据和第一计算权重矩阵,确定第一训练目标输出数据,并将第一训练目标输出数据作为第二计算忆阻器阵列的第二训练输入数据,或者,在训练好第一校准忆阻器阵列的情况下,向第一计算忆阻器阵列输入第一训练计算输入数据,向第一校准忆阻器阵列输入第一训练校准输入数据,以得到第一训练校准输出数据,并将第一训练校准输出数据作为第二计算忆阻器阵列的第二训练输入数据。
例如,图10A为本公开至少一实施例提供的一种独立并行校准方式的示意图。如图10A所示,在编译阶段划分、部署各个处理单元计算权重矩阵时,就确定了各个处理单元的理想的计算输入数据,使用各个处理单元的理想的计算输入数据分别构建各个处理单元的训练计算输入数据,可以独立并行地对各个处理单元进行校准。
例如,图10B为本公开至少一实施例提供的一种逐级校准方式的示意图。如图10B所示,按照深度学习时权重所属的层来对应划分多个处理单元中的各个处理单元的级别,第一级处理单元先进行校准,对应的输入是使用第一级处理单元的理想的计算输入数据所构建的训练计算输入数据;校准的第一级处理单元在使用理想的计算输入数据所构建的训练计算输入数据下的输出被作为下一级处理单元的输入,并对下一级处理单元进行校准,依此类推。
在图10A所示的示例中,各级处理单元的校准输入基于编译阶段确认的理想的计算输入数据,然而,在图10B所示的示例中,各级处理单元的校准输入(除了第一级以外)基于校准后的上一级处理单元的实际输出(可能和编译阶段的理想的计算输入数据存在偏差)。相比而言,图10B所示的方案更复杂,但误差适应性更好,系统校准精度更高。
综上,本公开提出了一种针对模拟域计算结果的中层次、中粒度的校准方法,并设计了配套的架构和操作流程。根据以上所述的各种实施例及其示例,本公开所提出的校准方法可以实现处单元级的校准,确保每个处理单元的模拟域计算结果准确,从而保证包括多个处理单元的系统正常工作,具有很好的可靠性和通用性。此外,由于不需要对底层的各个组件进行校准,引入的额外开销低,具有高效性和低成本的优势;由于仅对引入的第一校准忆阻器阵列的权重值进行校准,可以灵活根据校准精度的要求配置硬件开销,实现按需设计。因此,本公开所提出的校准方法解决了存算一体系统发展的关键瓶颈,是忆阻器存算一体技术走向实用化应用阶段的核心突破。
本公开至少一实施例提供的一种存算一体装置,包括第一处理单元,第一处理单元包括第一计算忆阻器阵列和第一校准忆阻器阵列,第一计算忆阻器阵列被配置为接收第一计算输入数据,并对第一计算输入数据进行计算以得到第一输出数据;第一校准忆阻器阵列的被配置为接收第一校准输入数据,并根据第一校准输入数据对第一输出数据进行校准,以得到第一校准输出数据;第一处理单元被配置为输出第一校准输出数据。例如,第一处理单元可以参考第一处理单元500的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的存算一体装置中,第一计算忆阻器阵列包括M行*N列的忆阻器单元,第一校准忆阻器阵列包括K行*N列的忆阻器单元,第一校准忆阻器阵列的第i列与第一计算忆阻器阵列的第i列串联,第一校准忆阻器阵列的第i列的忆阻器单元被配置为根据第一校准输入数据对第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据,M、N、K、i均为正整数,且1≤i≤N。例如,第一处理单元可以参考第一处理单元500的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的存算一体装置中,第一校准忆阻器阵列包括固定偏差校准子阵列,第一校准输入数据包括固定校准输入数据,固定偏差校准子阵列包括1行*N列的忆阻器单元,固定偏差校准子阵列的第i列与第一计算忆阻器阵列的第i列串联,固定偏差校准子阵列的第i列的忆阻器单元被配置为根据固定校准输入数据对第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据。例如,固定偏差校准子阵列可以参考固定偏差校准子阵列720a的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的存算一体装置中,第一校准忆阻器阵列包括动态偏差校准子阵列,第一校准输入数据包括动态校准输入数据,动态偏差校准子阵列的包括至少1行*N列的忆阻器单元,动态偏差校准子阵列的第i列与第一计算忆阻器阵列的第i列串联,动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据是根据第一计算忆阻器阵列的第i列的M个忆阻器单元对应的第一计算输入数据确定的,动态偏差校准子阵列的第i列的至少一个忆阻器单元被配置为根据动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据,对第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据。例如,动态偏差校准子阵列可以参考动态偏差校准子阵列720b的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的存算一体装置中,第一校准忆阻器阵列包括固定偏差校准子阵列和动态偏差校准子阵列,第一校准输入数据包括固定校准输入数据和动态校准输入数据,固定偏差校准子阵列包括1行*N列的忆阻器单元,动态偏差校准子阵列的包括至少1行*N列的忆阻器单元,固定偏差校准子阵列的第i列和动态偏差校准子阵列的第i列与第一计算忆阻器阵列的第i列串联,动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据是根据第一计算忆阻器阵列的第i列的M个忆阻器单元对应的第一计算输入数据确定的,固定偏差校准子阵列的第i列的忆阻器单元和动态偏差校准子阵列的第i列的至少一个忆阻器单元被配置为分别根据固定校准输入数据和动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据,对第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据。例如,固定偏差校准子阵列可以参考固定偏差校准子阵列720a的相关描述,动态偏差校准子阵列可以参考动态偏差校准子阵列720b的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的存算一体装置中,固定校准输入数据为第一计算输入数据的最大值的5%-20%。
例如,在本公开至少一实施例提供的存算一体装置中,动态偏差校准子阵列的第i列的至少一个忆阻器单元对应的动态校准输入数据与第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元对应的第一计算输入数据相同。例如,动态偏差校准子阵列可以参考动态偏差校准子阵列820b的相关描述,动态校准输入数据的配置可以参考步骤S630a的相关描述,在此不再赘述。
例如,在本公开至少一实施例提供的存算一体装置中,动态偏差校准子阵列的至少一行忆阻器单元对应的动态校准输入数据与第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元对应的第一计算输入数据相同。例如,动态校准输入数据的配置可以参考步骤S630b的相关描述,在此不再赘述。
需要说明的是,为表示清楚、简洁,本公开实施例并没有给出该存算一体装置的全部组成单元,也未给出该存算一体装置所包括的处理单元的全部组成单元。为实现存算一体装置及其所包括的处理单元的必要功能,本领域技术人员可以根据具体需要提供、设置其他未示出的组成单元,本公开的实施例对此不作限制。
关于不同实施例中的存算一体装置及其所包括的处理单元的技术效果可以参考本公开的实施例中提供的存算一体装置的校准方法的技术效果,在此不再赘述。
有以下几点需要说明:
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
以上所述仅是本公开的示范性实施方式,而非用于限制本公开的保护范围,本公开的保护范围由所附的权利要求确定。
Claims (10)
1.一种存算一体装置的校准方法,其中,
所述存算一体装置包括第一处理单元,所述第一处理单元包括第一计算忆阻器阵列和第一校准忆阻器阵列,所述第一计算忆阻器阵列被配置为接收第一计算输入数据,并对所述第一计算输入数据进行计算以得到第一输出数据;所述第一校准忆阻器阵列的被配置为接收第一校准输入数据,并根据所述第一校准输入数据对所述第一输出数据进行校准,以得到第一校准输出数据;所述第一处理单元被配置为输出所述第一校准输出数据,
所述校准方法包括:
通过片外训练确定所述第一计算忆阻器阵列对应的第一计算权重矩阵,将所述第一计算权重矩阵写入所述第一计算忆阻器阵列;
基于写入了所述第一计算权重矩阵的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值。
2.根据权利要求1所述的校准方法,其中,
所述第一计算忆阻器阵列包括M行*N列的忆阻器单元,所述第一校准忆阻器阵列包括K行*N列的忆阻器单元,所述第一校准忆阻器阵列的第i列与所述第一计算忆阻器阵列的第i列串联,所述第一校准忆阻器阵列的第i列的忆阻器单元被配置为根据所述第一校准输入数据对所述第一计算忆阻器阵列的第i列的第一输出数据进行校准,以得到第i列的第一校准输出数据,其中,M、N、K、i均为正整数,且1≤i≤N,
基于写入了所述第一计算权重阵列的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值,包括:
根据第一训练计算输入数据和所述第一计算权重矩阵,确定第一训练目标输出数据;
向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,并向所述第一校准忆阻器阵列输入第一训练校准输入数据,以得到第一训练校准输出数据;
根据所述第一训练校准输出数据和所述第一训练目标输出数据的偏差,调整所述第一校准忆阻器阵列中对应于所述第一计算忆阻器阵列中需要校准的列的忆阻器单元的权重值。
3.根据权利要求2所述的校准方法,其中,
所述第一校准忆阻器阵列包括固定偏差校准子阵列,所述第一训练校准输入数据包括固定训练校准输入数据,所述固定偏差校准子阵列包括1行*N列的忆阻器单元,
向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,包括:向所述固定偏差校准子阵列输入所述固定训练校准输入数据。
4.根据权利要求2所述的校准方法,其中,
所述第一校准忆阻器阵列包括动态偏差校准子阵列,所述第一训练校准输入数据包括动态训练校准输入数据,所述动态偏差校准子阵列包括至少1行*N列的忆阻器单元,
向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,包括:根据所述第一训练计算输入数据,确定所述动态训练校准输入数据;以及,向所述动态偏差校准子阵列输入所述动态训练校准输入数据。
5.根据权利要求2所述的校准方法,其中,
所述第一校准忆阻器阵列包括固定偏差校准子阵列和动态偏差校准子阵列,所述第一训练校准输入数据包括固定训练校准输入数据和动态训练校准输入数据,所述固定偏差校准子阵列包括1行*N列的忆阻器单元,所述动态偏差校准子阵列包括至少1行*N列的忆阻器单元,
向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,包括:
向所述固定偏差校准子阵列输入所述固定训练校准输入数据;
根据所述第一训练计算输入数据,确定所述动态训练校准输入数据;以及,
向所述动态偏差校准子阵列输入所述动态训练校准输入数据。
6.根据权利要求3或5所述的校准方法,其中,向所述固定偏差校准子阵列输入所述固定训练校准输入数据,包括:向所述固定偏差校准子阵列输入所述第一训练计算输入数据的最大值的5%-20%,以作为所述固定训练校准输入数据。
7.根据权利要求4或5所述的校准方法,其中,
在基于写入了所述第一计算权重矩阵的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值之前,所述校准方法还包括:
确定所述第一计算忆阻器阵列的第i列的至少一个处于关键权重位置的忆阻器单元,并将所述动态偏差校准子阵列的第i列的至少一个忆阻器单元的输入设置为与所述第一计算忆阻器阵列的第i列的所述至少一个处于关键权重位置的忆阻器单元的输入相同,
其中,根据所述第一训练计算输入数据,确定所述动态训练校准输入数据,包括:
将所述第一计算忆阻器阵列的第i列的所述至少一个处于关键权重位置的忆阻器单元的第一训练计算输入数据作为所述动态偏差校准子阵列的第i列的至少一个忆阻器单元的动态训练校准输入数据。
8.根据权利要求4或5所述的校准方法,其中,
在基于写入了所述第一计算权重矩阵的所述第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值之前,所述校准方法还包括:
确定所述第一计算忆阻器阵列的至少一行处于关键权重位置的忆阻器单元,并将所述动态偏差校准子阵列的至少一行忆阻器单元的输入设置为与所述第一计算忆阻器阵列的所述至少一行处于关键权重位置的忆阻器单元的输入相同,
其中,根据所述第一训练计算输入数据,确定所述动态训练校准输入数据,包括:
将所述第一计算忆阻器阵列的所述至少一行处于关键权重位置的忆阻器单元的第一训练计算输入数据作为所述动态偏差校准子阵列的至少一行忆阻器单元的动态训练校准输入数据。
9.根据权利要求2至5中任一项所述的校准方法,其中,
基于所述写入了所述第一计算权重矩阵的第一计算忆阻器阵列和所述第一计算权重矩阵,对所述第一校准忆阻器阵列进行片上训练,以调整所述第一校准忆阻器阵列的权重值,还包括:
在向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,并向所述第一校准忆阻器阵列输入所述第一训练校准输入数据,以得到所述第一训练校准输出数据之前,
向所述第一计算忆阻器阵列输入所述第一训练计算输入数据,以得到第一训练输出数据;
根据所述第一训练输出数据和所述第一训练目标输出数据的偏差,确定所述第一计算忆阻器阵列中需要校准的列,并使所述第一校准忆阻器阵列中对应于所述第一计算忆阻器阵列中需要校准的列的忆阻器单元与所述第一计算忆阻器阵列中需要校准的列串联接通。
10.一种存算一体装置,包括第一处理单元,其中,所述第一处理单元包括第一计算忆阻器阵列和第一校准忆阻器阵列,
所述第一计算忆阻器阵列被配置为接收第一计算输入数据,并对所述第一计算输入数据进行计算以得到第一输出数据;
所述第一校准忆阻器阵列的被配置为接收第一校准输入数据,并根据所述第一校准输入数据对所述第一输出数据进行校准,以得到第一校准输出数据;
所述第一处理单元被配置为输出所述第一校准输出数据。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110823220.4A CN113553293B (zh) | 2021-07-21 | 2021-07-21 | 存算一体装置及其校准方法 |
US18/574,247 US20240320083A1 (en) | 2021-07-21 | 2021-12-13 | Memory computing integrated device and calibration method thereof |
PCT/CN2021/137444 WO2023000586A1 (zh) | 2021-07-21 | 2021-12-13 | 存算一体装置及其校准方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110823220.4A CN113553293B (zh) | 2021-07-21 | 2021-07-21 | 存算一体装置及其校准方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553293A true CN113553293A (zh) | 2021-10-26 |
CN113553293B CN113553293B (zh) | 2024-09-03 |
Family
ID=78103676
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110823220.4A Active CN113553293B (zh) | 2021-07-21 | 2021-07-21 | 存算一体装置及其校准方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20240320083A1 (zh) |
CN (1) | CN113553293B (zh) |
WO (1) | WO2023000586A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115081373A (zh) * | 2022-08-22 | 2022-09-20 | 统信软件技术有限公司 | 忆阻器的仿真方法、装置、计算设备及可读存储介质 |
CN115099396A (zh) * | 2022-05-09 | 2022-09-23 | 清华大学 | 基于忆阻器阵列的全权重映射方法及装置 |
WO2023000586A1 (zh) * | 2021-07-21 | 2023-01-26 | 清华大学 | 存算一体装置及其校准方法 |
CN115906735A (zh) * | 2023-01-06 | 2023-04-04 | 上海后摩智能科技有限公司 | 基于模拟信号的多比特数存算一体电路、芯片及计算装置 |
CN116189732A (zh) * | 2023-04-21 | 2023-05-30 | 南京大学 | 读出电路优化的存算一体芯片及方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104916313A (zh) * | 2015-06-16 | 2015-09-16 | 清华大学 | 基于忆阻器件的神经网络突触结构及突触权重构建方法 |
US20180095821A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Extended application of error checking and correction code in memory |
CN108470746A (zh) * | 2018-03-13 | 2018-08-31 | 北京大学 | 一种通过电学信号消除电阻失配的忆阻系统及校准电路 |
US10452472B1 (en) * | 2018-06-04 | 2019-10-22 | Hewlett Packard Enterprise Development Lp | Tunable and dynamically adjustable error correction for memristor crossbars |
CN110796241A (zh) * | 2019-11-01 | 2020-02-14 | 清华大学 | 基于忆阻器的神经网络的训练方法及其训练装置 |
CN111279366A (zh) * | 2017-10-24 | 2020-06-12 | 国际商业机器公司 | 人工神经网络的训练 |
CN112199234A (zh) * | 2020-09-29 | 2021-01-08 | 中国科学院上海微系统与信息技术研究所 | 一种基于忆阻器的神经网络容错方法 |
CN112215344A (zh) * | 2020-09-30 | 2021-01-12 | 清华大学 | 神经网络电路的校正方法以及设计方法 |
CN112885963A (zh) * | 2021-01-13 | 2021-06-01 | 西安交通大学 | 一种忆阻器交叉阵列 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112041928A (zh) * | 2018-04-30 | 2020-12-04 | 慧与发展有限责任合伙企业 | 忆阻器交叉杆阵列中模型/权重编程的加速 |
CN112836814B (zh) * | 2021-03-02 | 2024-06-25 | 清华大学 | 存算一体处理器、处理系统以及算法模型的部署方法 |
CN113052307B (zh) * | 2021-03-16 | 2022-09-06 | 上海交通大学 | 一种面向忆阻器加速器的神经网络模型压缩方法及系统 |
CN113553293B (zh) * | 2021-07-21 | 2024-09-03 | 清华大学 | 存算一体装置及其校准方法 |
-
2021
- 2021-07-21 CN CN202110823220.4A patent/CN113553293B/zh active Active
- 2021-12-13 US US18/574,247 patent/US20240320083A1/en active Pending
- 2021-12-13 WO PCT/CN2021/137444 patent/WO2023000586A1/zh active Application Filing
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104916313A (zh) * | 2015-06-16 | 2015-09-16 | 清华大学 | 基于忆阻器件的神经网络突触结构及突触权重构建方法 |
US20180095821A1 (en) * | 2016-09-30 | 2018-04-05 | Intel Corporation | Extended application of error checking and correction code in memory |
CN111279366A (zh) * | 2017-10-24 | 2020-06-12 | 国际商业机器公司 | 人工神经网络的训练 |
CN108470746A (zh) * | 2018-03-13 | 2018-08-31 | 北京大学 | 一种通过电学信号消除电阻失配的忆阻系统及校准电路 |
US10452472B1 (en) * | 2018-06-04 | 2019-10-22 | Hewlett Packard Enterprise Development Lp | Tunable and dynamically adjustable error correction for memristor crossbars |
CN110796241A (zh) * | 2019-11-01 | 2020-02-14 | 清华大学 | 基于忆阻器的神经网络的训练方法及其训练装置 |
CN112199234A (zh) * | 2020-09-29 | 2021-01-08 | 中国科学院上海微系统与信息技术研究所 | 一种基于忆阻器的神经网络容错方法 |
CN112215344A (zh) * | 2020-09-30 | 2021-01-12 | 清华大学 | 神经网络电路的校正方法以及设计方法 |
CN112885963A (zh) * | 2021-01-13 | 2021-06-01 | 西安交通大学 | 一种忆阻器交叉阵列 |
Non-Patent Citations (4)
Title |
---|
SHIN, DONGHWA: "Correction of Bit-Aliasing in Memristor-Based Physically Unclonable Functions With Timing Variability", IEEE ACCESS, vol. 7, 6 October 2020 (2020-10-06), pages 135312 - 135321, XP011747868, DOI: 10.1109/ACCESS.2019.2940083 * |
SHINTANI, MICHIHIRO: "Area-Efficient and Reliable Error Correcting Code Circuit Based on Hybrid CMOS/Memristor Circuit", JOURNAL OF ELECTRONIC TESTING-THEORY AND APPLICATIONS, vol. 36, no. 4, 31 July 2020 (2020-07-31), pages 537 - 546, XP037230652, DOI: 10.1007/s10836-020-05892-3 * |
YANG, YUCHAO; HUANG, RU: "A Memristor-Based In-Memory Computing Network for Hamming Code Error Correction", IEEE ELECTRON DEVICE LETTERS, vol. 40, no. 7, 16 July 2019 (2019-07-16), pages 1080 - 1083, XP011732066, DOI: 10.1109/LED.2019.2917944 * |
ZENG, ZHIGANG: "A memristor-based neural network circuit with synchronous weight adjustment", NEUROCOMPUTING, vol. 363, 17 September 2019 (2019-09-17), pages 114 - 124, XP085763139, DOI: 10.1016/j.neucom.2019.06.048 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023000586A1 (zh) * | 2021-07-21 | 2023-01-26 | 清华大学 | 存算一体装置及其校准方法 |
CN115099396A (zh) * | 2022-05-09 | 2022-09-23 | 清华大学 | 基于忆阻器阵列的全权重映射方法及装置 |
CN115099396B (zh) * | 2022-05-09 | 2024-04-26 | 清华大学 | 基于忆阻器阵列的全权重映射方法及装置 |
CN115081373A (zh) * | 2022-08-22 | 2022-09-20 | 统信软件技术有限公司 | 忆阻器的仿真方法、装置、计算设备及可读存储介质 |
CN115906735A (zh) * | 2023-01-06 | 2023-04-04 | 上海后摩智能科技有限公司 | 基于模拟信号的多比特数存算一体电路、芯片及计算装置 |
CN115906735B (zh) * | 2023-01-06 | 2023-05-05 | 上海后摩智能科技有限公司 | 基于模拟信号的多比特数存算一体电路、芯片及计算装置 |
CN116189732A (zh) * | 2023-04-21 | 2023-05-30 | 南京大学 | 读出电路优化的存算一体芯片及方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113553293B (zh) | 2024-09-03 |
WO2023000586A1 (zh) | 2023-01-26 |
US20240320083A1 (en) | 2024-09-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113553293B (zh) | 存算一体装置及其校准方法 | |
Yang et al. | Research progress on memristor: From synapses to computing systems | |
Roy et al. | In-memory computing in emerging memory technologies for machine learning: An overview | |
US10643705B2 (en) | Configurable precision neural network with differential binary non-volatile memory cell structure | |
CN113467751B (zh) | 一种基于磁性随机存储器的模拟域存内计算阵列结构 | |
Yeo et al. | Stuck-at-fault tolerant schemes for memristor crossbar array-based neural networks | |
Liu et al. | Fault tolerance in neuromorphic computing systems | |
US20210303982A1 (en) | Neural network computing device including on-device quantizer, operating method of neural network computing device, and computing device including neural network computing device | |
Ma et al. | Go unary: A novel synapse coding and mapping scheme for reliable ReRAM-based neuromorphic computing | |
US11335401B1 (en) | Memory unit with multiple word lines for nonvolatile computing-in-memory applications and current calibrating method thereof | |
Jing et al. | VSDCA: A voltage sensing differential column architecture based on 1T2R RRAM array for computing-in-memory accelerators | |
US12046283B2 (en) | Compute-in-memory array and module, and data computing method | |
Leitersdorf et al. | Efficient error-correcting-code mechanism for high-throughput memristive processing-in-memory | |
Gebregiorgis et al. | Dealing with non-idealities in memristor based computation-in-memory designs | |
Ye et al. | A 28-nm RRAM computing-in-memory macro using weighted hybrid 2T1R cell array and reference subtracting sense amplifier for AI edge inference | |
Jeong et al. | Variation-tolerant and low R-ratio compute-in-memory ReRAM macro with capacitive ternary MAC operation | |
Leitersdorf et al. | Making memristive processing-in-memory reliable | |
US11437092B2 (en) | Systems and methods to store multi-level data | |
He et al. | PRIVE: Efficient RRAM Programming with Chip Verification for RRAM-based In-Memory Computing Acceleration | |
CN114496010B (zh) | 一种基于磁性随机存储器的模拟域近存计算阵列结构 | |
US11948628B2 (en) | Systems and methods to store multi-level data | |
Sun et al. | Reliability-Aware Training and Performance Modeling for Processing-In-Memory Systems | |
Wu et al. | A Non-volatile computing-in-memory ReRAM macro using two-bit current-mode sensing amplifier | |
Chung et al. | 8T-SRAM Based Process-In-Memory (PIM) System With Current Mirror for Accurate MAC Operation | |
Wang et al. | A User-Friendly Fast and Accurate Simulation Framework for Non-Ideal Factors in Computing-in-Memory Architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |