存算一体
存算一体打破了运行70年的冯诺依曼架构,将成为AI时代主流的计算架构。存算一体正处于学术界向工业界迁移的关键时期。
存算一体技术(PIM :Processing in-memory),它将存储和计算有机结合,直接利用存储单元进行计算。
存内计算是用模拟电路做计算。
极大地消除了数据搬移带来的开销,解决了传统芯片在运行人工智能算法上的“存储墙”与“功耗墙”问题,可以数十倍甚至百倍地提高人工智能运算效率,降低成本。
一、芯片迭代性能提升太慢。算力和运算数据量每年都在指数级增加,然而摩尔定律已经接近于到极限,每代芯片只有10-20%的性能提升。
二、冯诺依曼架构的算力已经被内存墙所限制,只有解决内存墙问题才能进一步提高算力。
万物互联+的人工智能的时代已经到来。由于传输延迟或数据安全考虑,很多数据处理及推理运算将在端侧发生。
通用性计算芯片在服务特定AI算法方面并不具备性价比优势,为AI定制的芯片将成为人工智能产业链条上的底层核心技术。
存内计算作为创新性极强的芯片架构形式,由于突破了困扰业界多年的存储墙问题,且与深度学习网络运算模型中的基本算子高度契合,使得基于存内计算架构的芯片相比于市场已有的AI加速芯片,在计算效率(TOPS/Watt)方面有数量级上的提升。
在智能时代里,从可穿戴到自动驾驶,功耗约束下场景里的计算效率都是永恒的主题,存内计算是解放算力、提升能效比最强有力的武器之一。
而且与其他低功耗计算,如低电压亚阈值数字逻辑ASIC、神经模态(Neuromorphics)计算和模拟计算比较,存内计算的优势也尽显。低功耗亚阈值计算是对现有逻辑计算的功耗优化,一般能效可以提升2-4倍,但是算力相应降低,只能进行针对性的优化。而存内计算是新型的运算架构,做的是二维和三维矩阵运算,能效和算力可以提高100-1000倍。神经模态运算是为类脑算法而设计的芯片,有不同的实现方式,如模拟计算、数字计算、无时钟计算、或者存算一体的实现方式。
后摩尔时代下,无法通过工艺的提升来优化整体算力,异构计算和新架构变得更为重要。
存储介质
SRAM、DRAM和Flash,SRAM在5nm上制造,DRAM和Flash可在10-20nm工艺上制造。密度方面,Flash最高,其次是DRAM,再次是SRAM。
在电路设计难度上,存内计算,DRAM > SRAM > Flash 。SRAM和DRAM更难设计,它们是易失性存储器,工艺偏差会大幅度增加模拟计算的设计难度,尤其是当容量增大到可实用的MB以上,目前市面上还没有SRAM和DRAM的存内计算产品;Flash是非易失存储器,他的状态是连续可编程的,可以通过编程等方式来校准工艺偏差,从而提高精度。而近存计算的设计相对简单,可采用成熟的存储器技术和逻辑电路设计技术。
存算一体的几个方向:通用近存计算架构, SRAM存算一体,RRAM/PCM/Flash多值存算一体,RRAM/PCM/MRAM二值存算一体。
Flash、SRAM、RRAM和MRAM。Flash是密度最高的存储介质,Flash的单个单元可以存储的bit数最高(8-bit)
一,SRAM的速度是所有memory类型中最快的,且没有写次数的限制,对于追求快响应的场景几乎是必选。二,SRAM可以向先进制程兼容,从而达到更高的能效比,更高的面效比等。三,苹芯现阶段的研究工作可大幅提高SRAM相关计算精度,从而降低了对相关上层算法补偿的要求。四,相对新型存储器,SRAM的工艺成熟度较高,可以相对较快的实现技术落地与量产。
有算力的存储还是冯诺依曼架构下的存储器,做一些加密类和低算力计算,从而节省存储与CPU之间的带宽。存内计算是非冯诺依曼架构,它通过存储单元完成二维和三维矩阵运算(这类运算占据了AI中95%以上的算力),提供大算力,它存储数据是为了高效完成运算,本质不是做存储器。
存内计算产品形式:单芯片和Chiplet。
存内计算的发展类似于存储器的发展路径,随着设计能力不断提升,工艺不断成熟、算力每年可以有5-10倍提升,能效每年会有1-2倍提升,成本每年会有30-50%下降,未来的存算产品可以用在大多数AI应用场景,因为它成本算力能效都可以做到最优。
数据计算,数据搬运。
数据采集,传输,处理。
但是不同于传统的数字电路计算,存内计算是用模拟电路做计算。
伴随SSD产品(由NAND flash构成)的兴起,因嵌入了ARM核和DRAM,NAND flash、ARM和DRAM、控制器和内部总线实际上构成了一个计算机系统,这让存储产品本身就可以做计算任务,因此也为存算一体提供了发展平台。
国内就有诸多初创公司在探索这个方向,尤其是由于AI的引入,各种数据的Key-Value只要直接存储在硬盘里,AI需要的数据就可以自动完成分类,可以显著提升非关系数据库的性能。
计算和存储
摩尔定律。存储器更有这样的问题。因为存储器在摩尔定律早的时候就已经接近终结,现在工艺一般在15~17纳米,像flash一般是20~40纳米之间,比起逻辑芯片,工艺更老,这也导致存储器的速度在过去十多年基本很难提升。另外,存储器根据摩尔定律发展存储密度越来越大,存储容量越来越大,导致当容量更大的时候,把一个数从存储器找出来所需消耗的时间和功耗在增加。存储器的带宽速度没有增加,CPU的速度越来越快,核数越来越多,这也导致CPU每个核能够使用的存储资源实际上越来越少,导致了存储墙或内存墙问题。
内存墙是说在数据量很大的时候,做运算大部分时间都消耗在存储器和处理器之间做数据搬运,运算速度受到存储器带宽的影响,没法再进一步提升,不管处理器多快,存储器的速度没法再进一步提升。
另外一个问题是数据搬运的功耗过大。一个28纳米工艺产品计算加法乘法,32比特数加法的功耗是0.1pJ,乘法是3.1pJ,但把64比特数从一个8kb的SRAM中拿出来,消耗的功耗是10pJ,从一个1M的存储里拿出一个数消耗的功耗是100pJ。存储器容量越来越大,从中间取出一个数的功耗也越来越大,基本是运算的百倍,这也导致了整个运算速度的瓶颈。存储墙瓶颈实际跟冯诺伊曼架构有关,随着计算速度越来越快,存储速度没有跟上,导致数据搬运消耗的时间和功耗都成为整个运算的一个瓶颈。
内存计算过去十年发展速度很快,有几个方向。一种是3D Xpoint新型存储器,将固态硬盘和内存的特点结合,是一种介于这两个中间的存储器,它的密度容量比内存大,速度比内存慢,但比固态硬盘快。第二种是近内存计算,通过采用先进的3D封装方式把内存和计算单元封装在一起,可以达到几千根甚至上万根连线,两者之间的带宽增加,提高了数据搬运速度。第三种是近存储计算,就是如果只做一些简单的运算,可以在存储边加一个计算单元,不占用CPU负载。
还有一种是存算一体。其他的几种方式还是冯诺依曼架构,存算一体是另外一种方式,直接把存储单元变成了运算单元,利用了存储器中的模拟计算。存算一体可以理解为一种计算器,一个类似于CPU的计算芯片,实际上是用存储器去完成计算。存储器里有很多计算单元,比如3D Flash里有几十甚至上万亿的存储单元,存算一体就是把这些存储单元都变成运算单元,这样存储器的容量越大可以去做的运算也越多,所以衡量存算一体的算力是看它的存储器容量多大。
存算一体的运算方式有两种:一种是数字计算,一种是模拟计算。数字计算的优点是跟逻辑工艺一起往下做,可以在5纳米未来的3纳米工艺上使用,工艺非常先进速度可以很快。另一种多比特的模拟运算,利用存储器存储介质本身可以存储多值这样一个模拟特性去做,比如基于Flash、基于PRAM、忆阻器、PCRAM的相变存储器,它的特点是存储密度大同时并行度高。
目前产业界最多的存算一体发展方向是把存储单元变成一个做乘法加法运算的东西,相当于有多少个存储单元就可以做多少个乘法加法运算。
应用
目前,存算一体芯片主要用来做基于人工智能的运算。人工智能的特点是向量和矩阵的计算量占比非常大,像可穿戴设备、手机、VR眼镜、智能驾驶以及数据中心,不同的场景需要算力不一样。我们用存储容量和算力区分了一下不同场景的需要。
一般一个2M的存储就可以提供足够多的算法一定算力完成向量矩阵运算,比当前的芯片效率要高出50~100倍左右,用于可穿戴设备功耗可以很低,长待机。PC和移动终端需要大概32M、64M的存储空间存储算法,算力可以到16Tops~32Tops,实时性可以很高,另外在移动终端功耗限制下,可以很低功耗的去完成视觉信号处理这些AI算法。
智能眼镜对低功耗需求很强,它的电池很小散热很差,但又需要很多人工智能方法进行交互,包括手势识别、语音识别、肌肉肌电的识别、眼动识别等,对AI的算力需求很高,基本需要到100多兆存储空间,同时算力也很大。智能自动驾驶、数据中心需要的计算算力和存储就更大,同时对芯片的可靠性要求要高很多,