当前位置: 首页 > news >正文

存内计算技术—解决冯·诺依曼瓶颈的AI算力引擎

文章目录

  • 存内计算技术背景
    • CSDN首个存内计算开发者社区
    • 硅基光电子技术
    • 存内计算提升AI算力
    • 知存科技存算一体芯片技术
    • 基于存内计算的语音芯片的实现挑战
  • 参考文献

存内计算技术背景

存内计算技术是一种革新性的计算架构,旨在克服传统冯·诺依曼架构的瓶颈,并实现更高效的数据处理。随着大数据时代的到来,传统的冯·诺依曼架构已经难以满足不断增长的计算需求,因为它将处理单元和存储器分开,导致数据传输成本高昂且计算效率低下。存内计算技术的提出就是为了解决这个问题。
存内计算产业分析如下图:
在这里插入图片描述

CSDN首个存内计算开发者社区

CSDN首个存内计算开发者社区来了,基于知存科技领先的存内技术,涵盖最丰富的存内计算内容,以存内技术为核心,史无前例的技术开源内容,囊括云/边/端侧商业化应用解析以及新技术趋势洞察等, 邀请业内大咖定期举办线下存内workshop,实战演练体验前沿架构;从理论到实践,做为最佳窗口,存内计算让你触手可及。
传送门:https://bbs.csdn.net/forums/computinginmemory
首个存内计算开发者社区,0门槛新人加入,发文享积分兑超值礼品;
成为存内计算大使,享受资源支持与激励,打造亮眼个人品牌,共同引流存内计算潮流。
在这里插入图片描述

硅基光电子技术

近年来,硅基光电子技术在高密度、高性能光电集成电路方面崭露头角,尤其是其与CMOS技术的兼容性,为其成为大规模、廉价光电子集成电路平台打开了无限可能。然而,硅材料的禁带宽度却使其在通信波段的光电探测器应用受到限制,引发对光电转换的迫切需求。

光电转换作为光互连系统中不可或缺的关键部分,要求高速和高灵敏度的探测器,而传统的冯·诺依曼体系结构却面临着内存与计算单元之间频繁数据传输的问题,导致大量能源的消耗,尤其在资源受限的设备中更为显著。这就是我们迎来的存储墙问题。

为了解决这一问题,学者们提出了内存计算(computing in-memory, CIM)技术,一种能够直接在内存中进行计算的新型体系结构。而在内存计算技术中,基于静态随机存取存储器(SRAM)的存内计算成为研究热点,其单元的健壮性和存取速度使其成为突破冯·诺依曼瓶颈的一项关键技术。

第一个层面电路主要包括两方面:
1)基本存储单元,包括读写分离结构、可转置结构和紧凑耦合结构;
2)外围辅助电路,包括模数转换电路(analog-to-digitalconversion, ADC)、数模转换电路(digital-to-analogconversion, DAC)、冗余参考列,数字辅助电路和模拟辅助电路(图1(a))。
第二个层面所能实现的运算操作:
1)纯数字存内计算,包括布尔逻辑和内容可寻址(content-addressablememory, CAM);
2)混合信号存内计算,包括乘累加(multiplication andaccumulation, MAC)、汉明距离和绝对值差和(sum of absolute difference, SAD)(图1(b))。
第三个层次主要从加速卷积神经网络算法(Convolutional Neural Network, CNN)、分类器算法、模式识别算法(k-nearest neighbor, k-NN)和高级加密标准算法(Advanced Encryption Standard, AES)等应用方面进行总结与回顾(图1©)。

在这里插入图片描述

存内计算提升AI算力

存内计算:AI芯片领域的璀璨明星

在人工智能(AI)的时代浪潮中,存内计算技术被广泛认为是最适合AI的芯片架构,备受学术界和产业界的瞩目。2018年,国际固态电路会议(ISSCC)专门设立了存内计算议程,为该领域的深入讨论奠定了基础。而在2019年和2020年,ISSCC会议上关于存内运算的论文更是如火如荼,仅ISSCC2020就涌现了7篇与存内计算相关的论文。

学术界在电子器件领域的研究会议中也持续掀起存内计算的热潮。在2019年的IEDM会议上,有三个专门的议程,共呈现了二十余篇与存内计算相关的论文。这一现象反映了学术界对于存内计算技术前景的高度关注和积极探索。
在这里插入图片描述

除了学术界的深入研究外,产业界也纷纷加入存内计算的布局。IBM以其独特的相变存内计算技术为基础,积累了数年的技术经验。台积电正在全力推进基于ReRAM的存内计算方案。而在产业投资方面,诸如英特尔、博世、美光、Lam Research、应用材料、微软、亚马逊、软银等巨头已纷纷投资于基于NOR Flash的存内计算芯片。

事实上,利用存储器进行计算的研究可追溯至上世纪90年代。然而,长期以来,存内计算一直未能真正实现产业落地。这一现象的原因在于设计挑战较大,更为关键的是缺乏杀手级应用。然而,随着深度学习的大规模爆发,存内计算技术才开始逐渐走向产业化,成为AI芯片领域的璀璨明星。

存内计算技术的兴起得益于深度学习技术的蓬勃发展,为其提供了杀手级应用。深度学习的大规模应用使得对计算速度和效率的需求急剧增加,而传统的冯·诺依曼架构面临着瓶颈。存内计算技术通过将计算与存储结合,避免了数据在内存和处理器之间频繁传输的问题,极大地提高了计算效率。这为AI应用提供了更加高效、快速的计算解决方案,成为当前AI芯片领域的重要技术趋势。

知存科技存算一体芯片技术

在这里插入图片描述
知存科技引领存内计算技术:NOR FLASH芯片的崭新时代

存内计算技术正成为人工智能芯片领域的一颗璀璨明星,而知存科技凭借其先进的NOR FLASH存内计算技术正引领这一技术的新时代。
在这里插入图片描述

王绍迪在谈及NOR FLASH存内计算时指出,相较于使用数字电路计算,NOR FLASH在进行存内计算时能够显著减少数据搬运消耗的能量。更为引人瞩目的是,NOR FLASH在乘加法运算方面的功耗也相当低,这为芯片带来了百倍甚至千倍的功耗降低。考虑到外围电路的功耗,NOR FLASH存内计算最终能够实现的功耗降低在几十倍到上百倍之间,不同的算法和应用也将实现不同程度的提升。

目前,NOR FLASH存内计算技术已经在单芯片中支持了约300M左右的深度学习权重参数,无需额外的内存即可进行计算。这使得该技术能够满足大部分AI场景的需求。智能语音模型和端侧图像推理模型的大小通常在几百K到几十兆之间,而NOR FLASH存内计算芯片却能轻松胜任这些任务。
在这里插入图片描述

存内计算技术不仅能够支持主流的8比特模型精度,而且还在研发高达16比特的解决方案以满足更高要求的极限场景。王绍迪表示,知存科技的目标是未来存内计算技术能够覆盖60%-70%的AI应用,为各种场景提供高效、低功耗的计算解决方案。

知存科技在存内计算技术上的技术水平领先业界3-4年。早在2012、2013年,郭昕婕博士就开始研究基于NOR FLASH的存内计算技术。与其他公司相比,知存科技投入研发的时间更早,经历了一系列流片迭代,积累了大量的技术经验。存内计算涉及到的设计挑战包括控制电路、模拟电路、编程技术、可靠性设计和架构设计等方面。特别是模拟设计方面,由于FLASH进行的是模拟计算,需要满足数字电路算法的要求,这对模拟运算提出了严格的要求。

存内处理
“存”与“算”距离更近,但电路设计仍然是分离的,
计算由存储器内部的独立计算单元完成。
在这里插入图片描述

基于存内计算的语音芯片的实现挑战

深度学习已广泛应用于各类人工智能任务,但传统的深度学习加速器在面向数据流的计算架构优化上仍受制于传统冯·诺依曼体系结构所带来的「存储墙」问题。频繁的计算单元与存储单元间数据搬移导致了巨大的能耗,迫切需要创新性的解决方案。

存内计算技术(computing-in-memory,CIM)崭露头角,成为解决「存储墙」问题的有效途径。然而,传统存内计算仅支持有限的运算,例如向量内积。为了支持完整的AI应用,一支团队在可重构计算架构的基础上,融合了存内计算技术,成功设计了一款数模混合计算芯片,代号为Thinker-IM。这一创新性的芯片在语音识别应用中展现出了卓越的能耗表现。

挑战一:需要设计融合多个 SRAM-CIM 单元的计算架构和数据流调度方案。一般情况下,单个 SRAM-CIM 无法存下 DNN 中的全部权重。因此需要多个 SRAM-CIM 单元协同计算,需要考虑如何组织它们的计算方式。
挑战二:需要针对复杂 AI 任务设计多比特输出 SRAM-CIM 单元。对于简单 AI 任务(如手写体识别),SRAM-CIM 单元 1 比特输出精度可以满足识别需求。但对于复杂的识别任务(如语音识别),SRAM-CIM 单元 1 比特输出就会导致 Partial Sum(部分和)的精度损失,影响最终识别精度。
挑战三:RNN 推理过程是一种时域上的迭代计算,其计算过程相当耗时。我们发现在二值 RNN 中的累加过程中存在一些冗余计算。见图 2©,在累加过程中,如果中间数据足够大而超过剩余累加的最大值,将保证最终结果大于 0。此时剩余累加周期的计算就是冗余的,如能去除这些计算,将能够有效加速 RNN 计算。
Thinker-IM 架构如图所示,主要包括语音信号处理部分和基于 CIM 的 RNN 计算引擎。芯片设计中三项关键技术分别针对性解决了上述三个问题。

在这里插入图片描述

参考文献

1.中国科学院-基于静态随机存取存储器的存内计算研究综述:电路,功能以及应用
2.知存科技
3.Thinker 人工智能芯片团队 清华大学微电子所
4.存内计算白皮书

相关文章:

存内计算技术—解决冯·诺依曼瓶颈的AI算力引擎

文章目录 存内计算技术背景CSDN首个存内计算开发者社区硅基光电子技术存内计算提升AI算力知存科技存算一体芯片技术基于存内计算的语音芯片的实现挑战 参考文献 存内计算技术背景 存内计算技术是一种革新性的计算架构,旨在克服传统冯诺依曼架构的瓶颈,并…...

数据结构--树

一、树的基本术语 结点:树中的一个独立单元 结点的度:结点下分支的个数 树的度:树中所有结点中度的最大值 非终端结点:度不为0的结点 双亲和孩子:结点下的子树称为该结点的孩子.相应地,该结点称为孩子的双亲 兄弟:同一个双亲的孩子之间 祖先:从根到该结点所经分支上的所…...

计算机网络_1.3电路交换、分组交换和报文交换

1.3电路交换、分组交换和报文交换 一、电路交换1、“电路交换”例子引入2、电路交换的三个阶段3、计算机之间的数据传送不适合采用电路交换 二、分组交换1、发送方(1)报文(2)分组(3)首部 2、交换节点3、接收…...

【AI视野·今日NLP 自然语言处理论文速览 第七十七期】Mon, 15 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Mon, 15 Jan 2024 Totally 57 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Machine Translation Models are Zero-Shot Detectors of Translation Direction Authors Michelle Wastl, Ja…...

神经网络的一些常规概念

epoch:是指所有样本数据在神经网络训练一次(单次epoch(全部训练样本/batchsize)/iteration1)或者(1个epochiteration数 batchsize数) batch-size:顾名思义就是批次大小,也就是一次训练选取的样…...

【从零开始的rust web开发之路 三】orm框架sea-orm入门使用教程

【从零开始的rust web开发之路 三】orm框架sea-orm入门使用教程 文章目录 前言一、引入依赖二、创建数据库连接简单链接连接选项开启日志调试 三、生成实体安装sea-orm-cli创建数据库表使用sea-orm-cli命令生成实体文件代码 四、增删改查实现新增数据主键查找条件查找查找用户名…...

SQL中limit的用法

在SQL中,LIMIT是一个用于限制返回结果行数的关键词。它可用于在查询结果中指定返回的行数,从而可以用于分页查询或限制结果集大小。 LIMIT关键词有两种常用的语法格式: LIMIT offset, count:该语法用于指定返回结果的起始位置和…...

vue3 [Vue warn]: Unhandled error during execution of scheduler flush

文章目录 前言一、报错截图二、排除问题思路相关问题 Vue3 优雅解决方法异步组件异同之处:好处:在使用异步组件时,有几个注意点: vue3 定义与使用异步组件 总结 前言 Bug 记录。开发环境运行正常,构建后时不时触发下面…...

【vue2源码】阶段一:Vue 初始化

文章目录 一、项目目录1、主目录2、打包入口 二、构造函数Vue的初始化1、创建 Vue 构造函数2、初始化内容分析2.1 initMixin2.2 stateMixin2.3 eventsMixin2.4 lifecycleMixin2.5 renderMixin 一、项目目录 源码版本:2.7.16 1、主目录 src |-- compiler # 包…...

14.java集合

文章目录 概念Collection 接口概念示例 Iterator 迭代器基本操作:并发修改异常增强循环遍历数组:遍历集合:遍历字符串:限制 list接口ListIteratorArrayList创建 ArrayList:添加元素:获取元素:修…...

二叉树顺序结构堆实现

目录 Test.c测试代码 test1 test2 test3 🎇Test.c总代码 Heap.h头文件&函数声明 头文件 函数声明 🎇Heap.h总代码 Heap.c函数实现 ☁HeapInit初始化 ☁HeapDestroy销毁 ☁HeapPush插入数据 【1】插入数据 【2】向上调整Adjustup❗ …...

正则表达式 与文本三剑客(sed grep awk)

一,正则表达式 (一)正则表达式相关定义 1,正则表达式含义 REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意…...

【XR806开发板试用】全志 XR806 OpenHarmony 鸿蒙系统固件烧录

大家好,我是极智视界,本教程详细记录了全志 XR806 OpenHarmony 鸿蒙系统固件烧录的方法。 在上一篇文章《【嵌入式AI】全志 XR806 OpenHarmony 鸿蒙系统固件编译》中咱们已经编译生成了系统镜像,这里把这个编译出来的镜像烧录到 XR806 板子里…...

linux环境安装git、maven、jenkins等

重启 jenkins的命令: systemctl start jenkins 如果没有vim 命令 可以使用 yum install vim 安装 vim git 下载包地址 https://www.kernel.org/pub/software/scm/git/git-2.28.0.tar.gz 1.安装依赖环境: yum install -y curl-devel expat-devel ge…...

RabbitMQ快速上手

首先他的需求实在什么地方。我美哟明显的感受到。 它给我的最大感受就是脱裤子放屁——多此一举,的感觉。 他将信息发送给服务端中间件。在由MQ服务器发送消息。 服务器会监听消息。 但是它不仅仅局限于削峰填谷和稳定发送信息的功能,它还有其他重要…...

SpringBoot activemq收发消息、配置及原理

SpringBoot集成消息处理框架 Spring framework提供了对JMS和AMQP消息框架的无缝集成,为Spring项目使用消息处理框架提供了极大的便利。 与Spring framework相比,Spring Boot更近了一步,通过auto-configuration机制实现了对jms及amqp主流框架…...

视频智能识别安全帽佩戴系统-工地安全帽佩戴识别算法---豌豆云

视频智能识别安全帽佩戴系统能够从繁杂的工地、煤矿、车间等场景下同时对多个目标是否戴安全帽穿反光衣进行实时识别。 当视频智能识别安全帽佩戴系统发现作业人员没有戴安全帽、穿反光衣或者戴安全带,系统会及时报警提醒,并抓拍存档。 视频智能识别安…...

指针的深入理解(三)

这一节主要使用复习回调函数, 利用冒泡模拟实现qsort函数。 qsort 排序使用冒泡排序,主要难点在于运用元素个数和字节数以及基地址控制元素的比较: if里面使用了一个判断函数,qsort可以排序任意的数据,原因就是因为可…...

【Linux C | 网络编程】详细介绍 “三次握手(建立连接)、四次挥手(终止连接)、TCP状态”

😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...

主从数据库MySQL服务重启步骤与注意事项

主从数据库MySQL服务重启步骤与注意事项 实验环境: 172.20.26.34 (主应用服务器) 172.20.26.26 (备应用服务器) 172.20.26.37 (主库服务器) 172.20.26.38 (从库服务器&…...

netlink学习

netlink是什么 netlink是Linux内核中的一种进程间通信(IPC)机制。它允许内核空间与用户空间之间,以及用户空间进程之间进行双向通信。 内核里的很多子系统使用netlink通信,包括网络管理(Routing,Netfilt…...

地理空间分析10——空间数据分析中的地理编码与Python

目录 写在开头1. 地理编码基础1.1 地理编码的基本原理1.1.1 坐标系统1.1.2 地名解析1.1.3 编码算法1.2 Python中使用地理编码的基础知识1.2.1 百度地图API1.2.2 高德地图API1.2.3 腾讯地图API1.3 Python中实现代码2. 逆地理编码2.1 利用Python进行逆地理编码2.1.1 获取高德地图…...

使用“快速开始”将数据传输到新的 iPhone 或 iPad

使用“快速开始”将数据传输到新的 iPhone 或 iPad 使用 iPhone 或 iPad 自动设置你的新 iOS 设备。 使用“快速开始”的过程会同时占用两台设备,因此请务必选择在几分钟内都不需要使用当前设备的时候进行设置。 确保你当前的设备已连接到无线局域网,并…...

计算机网络(第六版)复习提纲13

前同步码,七位1010交替出现,帧开始码:10101011 为什么没有帧结束?曼彻斯特码传播完成后,维持高电平,不再跳变,因此不必要设置帧结束。 3.无效的MAC帧 i.数据字段的长度与长度字段的值不一致&…...

[office] excel2010双向条形图制作 #经验分享#微信

excel2010双向条形图制作 本教程为大家介绍一下excel2010中excel2010双向条形图制作方法。 1.选中工作区域 2.点击插入-->图表,选择条形图 3.为美观可将中间竖线可去掉 4.方法是选中竖线,右击-->删除 5.接下来将图例靠上,选中图例,右击-->设置图例格式-->图例选项…...

优雅管理多线程异步任务 - 永动异步任务

引言 在现代应用程序中,经常需要处理长时间运行的异步任务,如消息推送、定时任务等。为了确保这些异步任务能够安全可靠地执行,我们需要一种优雅的管理方式。本文将介绍一种基于线程池的多线程异步任务管理方案,并详细讨论任务的优雅关闭。 1. 多线程异步任务管理的需求 …...

软考笔记--分布式数据库

分布式数据库系统是数据库技术与网络技术相结合的产物,其基本思想是将传统的集中式数据库中的数据分布于网络上的多台计算机中。分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都有DBMS的一份完整的复…...

vue项目中路由懒加载的三种方式

1 . vue异步组件技术 异步加载 vue-router配置路由 , 使用vue的异步组件技术 , 可以实现按需加载 . 但是,这种情况下一个组件生成一个js文件 /* vue异步组件技术 */ { path: /home, name: home, component: resolve > require([/components/home],resolve) }, { path…...

【制作100个unity游戏之23】实现类似七日杀、森林一样的生存游戏6(附项目源码)

本节最终效果演示 文章目录 本节最终效果演示系列目录前言生命 食物 水简单绘制UI玩家状态脚本生命值控制饱食度控制水分控制 源码完结 系列目录 前言 欢迎来到【制作100个Unity游戏】系列!本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第23篇中…...

Cache Lab:Part A【模拟出使用LRU策略的高速缓存存储器组织结构】

目录 任务描述 知识回顾 实验内容 测试结果 Cache Lab 对应《CS:APP》6.3节至第六章结束的内容。 任务描述 Your job for Part A is to fill in the csim.c file so that it takes the same command line arguments and produces the identical output as the reference …...