Crossbar阵列的电路结构及其基本原理

忆阻器Crossbar阵列是一种先进的神经网络硬件实现技术,它利用忆阻器的物理特性来模拟神经网络中的突触连接,为人工智能和机器学习应用提供了一种高效、低能耗的计算平台。本文将深入探讨忆阻器Crossbar阵列的基本原理及其在Read(读取)和Update(更新)阶段的工作机制。

Crossbar阵列的三种导线WL/BL/SL

忆阻器Crossbar阵列是由交叉的金属线(Bit Lines, BL和Word Lines, WL)以及位于交叉点的忆阻器构成的矩阵结构。这种结构中还包含了Source Lines(SL),用于传输通过忆阻器的电流。BL、WL和SL共同协作,使得Crossbar阵列能够执行复杂的计算任务。
image.png
image.png

BL (Bit Lines)

BL通常用于传输输入信号或读取操作中的电流信号。在神经网络的模拟中,BL可以视为输入神经元,负责提供输入向量。

WL (Word Lines)

WL在写入(Update)阶段用于施加更新电压,控制忆阻器的电导值,即模拟突触权重的调整。WL在读取过程中也起到激活特定忆阻器行的作用。

SL (Source Lines)

通常作为源极线使用,为忆阻器提供参考电压或用于在编程和写入操作中建立电流路径。

前向传播阶段(Read阶段)

在Read阶段,忆阻器Crossbar阵列通过BL和SL实现输入信号的前向传播。具体步骤如下:

1.输入信号施加

输入电压 V j V_j Vj通过BLj施加到crossbar的一侧(列信号),即忆阻器的一端。

2.计算电流

令此时WLj的电压为零,SLj的电压恒定为零,则从BLi到SLj的电压降刚好等于 V j V_j Vj。设第i行第j列的忆阻器的电导为 G i , j G_{i,j} Gi,j,则传输到SLj的电流为 I j = V i ⋅ G i , j I_j=V_i\cdot G_{i,j} Ij=ViGi,j

3.MAC电学运算

当电压向量通过所有列(BL1-BLn)输入到crossbar内,则SLi将汇总通过这一列的忆阻器的所有电流,即:
I j = ∑ i = 1 n V i ⋅ G i , j I_j=\sum^{n}_{i=1}{V_i\cdot G_{i,j}} Ij=i=1nViGi,j
对应神经网络中的前向传播运算: y j = ∑ i = 1 n x i ⋅ W i , j y_j=\sum^{n}_{i=1}{x_i\cdot W_{i,j}} yj=i=1nxiWi,j
对于权重如何与电导对应上,可参考文献[1][2]当中的差分对放大电路。

反向传播阶段(Update阶段)

在忆阻神经网络中,BP机制决定的权重更新量实际由电导的更新量来决定。假设现在需要对器件(i,j)进行更新(SET或RESET),SET脉冲强度为4.5 V(RESET同理,只是极性相反)。设 V W L = 5 V V_{WL}=5\;V VWL=5V,则:
V W L i − V B L j = V s e t = 4.5 V ⇒ V B L j = 0.5 V V_{WLi}-V_{BLj}=V_{set}=4.5\;V\Rightarrow V_{BL_j}=0.5\;V VWLiVBLj=Vset=4.5VVBLj=0.5V
因此在更新阶段,write脉冲是由WL提供的,而BL此时起到的是选通的作用,使SET脉冲刚好能够施加给需要更新的器件,同时避免改变不需要更新的器件。例如,若不能改变第i行的其他器件时,则此时必定满足:
V B L k = V W L i ( k ≠ j ) V_{BLk}=V_{WL_i}\;(k\neq j) VBLk=VWLi(k=j)

1T1R结构

image.png
在1T1R结构中,每个忆阻器的一端与一个晶体管相连,形成一个1T1R单元。这种结构使得可以通过晶体管的门极控制对忆阻器的精确访问,从而实现对忆阻器电导的细致调整。

  • **源极(Source)**连接到源线(SL,Source Line)。
  • **漏极(Drain)**连接到忆阻器的上电极,而忆阻器的下电极则连接到位线(BL,Bit Line)。
  • **栅极(Gate)**通过字线(WL,Word Line)进行控制,所有在同一行的晶体管的栅极都连接到同一条字线上。

这种1T1R结构的设计使得通过调节栅极上的电压,可以控制源极和漏极之间的电流,从而实现对忆阻器电导的精确调整。这种方式不仅提高了对忆阻器的选择性和控制能力,还增强了阵列的可靠性和稳定性,因为晶体管可以有效防止非目标忆阻器因电压泄露而被意外写入。通过在每个忆阻器单元中加入一个晶体管,1T1R结构有效隔离了每个单元,只有当晶体管被开启时,电流才能流过忆阻器,这样就大大减少了非目标忆阻器的误激活,从而减少了串扰。此外,晶体管还可以提供更精细的电流控制,进一步提高了写入操作的准确性和重复性。总之,1T1R结构通过为每个忆阻器提供独立的访问通道,有效减少了串扰,提高了阵列的数据准确性和稳定性,这对于实现高密度、高可靠性的忆阻器存储和计算系统至关重要。

以上内容均参考清华大学吴华强课题组的阵列设计[1],但要注意的是针对crossbar的控制线路并非只有这一种,例如浙江大学林芃教授团队的工作便采用WL与BL平行的策略[3]:image.png
但是交叉控制与通信的基本思路是一致的,换汤不换药。

参考文献

[1] Yao, Peng, et al. “Fully hardware-implemented memristor convolutional neural network.” Nature 577.7792 (2020): 641-646.
[2] Zhang, Wei, et al. “Hardware‐Friendly Stochastic and Adaptive Learning in Memristor Convolutional Neural Networks.” Advanced Intelligent Systems 3.9 (2021): 2100041.
[3] Chen, Peng, et al. “Open-loop analog programmable electrochemical memory array.” Nature Communications 14.1 (2023): 6184.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/512116.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维随录实战(2)之k8s部署应用

一, 创建.gitlab-ci.yml文件 架构流程 文件内容 stages: #设置流水线模版- build # 编译- source2img- deploy # 发布variables: # 设置全局变量MAVEN_PATH: .m2MAVEM_IMAGE: maven:3.8.5-openjdk-17-slim # maven 打包使用的镜像MAVEN_CLI_OPTS: "-s $MAVEN_PATH/set…

稀碎从零算法笔记Day7-LeetCode:罗马数字转整数

题型:字符串转化、找规律 链接:13. 罗马数字转整数 - 力扣(LeetCode) 来源:LeetCode 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 …

【深圳五兴科技】Java后端面经

本文目录 写在前面试题总览1、java集合2、创建线程的方式3、对spring的理解4、Spring Boot 和传统 Spring 框架的一些区别5、springboot如何解决循环依赖6、对mybatis的理解7、缓存三兄弟8、接口响应慢的处理思路9、http的状态码 写在前面 关于这个专栏: 本专栏记录…

抖音视频下载软件|视频批量采集工具

便捷操作,高效采集 在快节奏的数字化时代,我们的视频下载软件提供了简单便捷的操作流程,让用户能够高效地采集所需视频内容。用户只需输入关键词并点击开始抓取,系统会自动搜索指定关键词下的抖音视频数据,并将待解析视…

C语言第三十五弹---文件操作(上)

✨个人主页: 熬夜学编程的小林 💗系列专栏: 【C语言详解】 【数据结构详解】 文件操作 1、为什么使用文件? 2、什么是文件? 2.1、程序文件 2.2、数据文件 2.3、文件名 3、二进制文件和文本文件 4、文件的打开和…

折线图 温度变化曲线图

代码详情介绍 导入必要的库: matplotlib.pyplot:用于绘图。 matplotlib.font_manager:用于设置中文字体。 datetime:用于处理日期和时间。 random:用于生成随机数。 numpy:用于生成arange函数的刻度。 设置…

Linux系统使用宝塔面板安装MySQL服务并实现公网远程访问本地数据库【内网穿透】

文章目录 前言1.Mysql服务安装2.创建数据库3.安装cpolar3.2 创建HTTP隧道 4.远程连接5.固定TCP地址5.1 保留一个固定的公网TCP端口地址5.2 配置固定公网TCP端口地址 前言 宝塔面板的简易操作性,使得运维难度降低,简化了Linux命令行进行繁琐的配置,下面简单几步,通过宝塔面板cp…

【C语言】Leetcode 876. 链表的中间节点

主页:17_Kevin-CSDN博客 专栏:《Leetcode》 题目 通过题目的要求可以判断出有两种示例要解决,一种是偶数节点的链表,一种是奇数节点的链表,应对这两种情况我们需要使程序对二者都可以兼容。 解决思路 struct ListNode…

微服务相关的核心概念及技术

RPC框架: 在微服务架构中,服务与服务之间要实现接口的调用我们肯定要通过相关的RPC(Remote Procedure Call)框架来实现。 常用的RPC框架有:Dubbo,Google的GRPC,Apache的Thrift,微博的Motan,京东的EasyRPC等…

解密Lawnchair:打造个性化极致的Android桌面体验

解密Lawnchair:打造个性化极致的Android桌面体验 1. 简介 Lawnchair是一款知名的Android桌面定制工具,旨在为用户提供个性化极致的桌面体验。作为一个开源项目,Lawnchair融合了简洁、灵活和强大的特点,让用户能够自由定制其Andro…

低代码平台开发——基于React(文末送书)

目录 小程一言适用对象本书达成 书籍介绍作者简介内容介绍书籍目录阅读指导 小程送书 小程一言 《低代码平台开发——基于React》这本书主要围绕低代码平台和React技术的结合展开,为读者提供了关于低代码平台开发的理论和实践知识。 ## 书中内容简介 书中内容分为…

消息队列-Kafka-基础架构

基础架构 官网地址 上面这张图类比RocketMQ 相当于对一个主题进行了分区(类似于RockeMQ 消息队列),每个分区存储到不同的Broker。在发送消息的时候都是发送到主分区。如果一台Broker由于其它节点备份了挂掉节点的数据,所以可以…