写点什么

如何创新使用内存以提高处理速度?

  • 2019 年 8 月 30 日
  • 本文字数:4069 字

    阅读完需:约 13 分钟

如何创新使用内存以提高处理速度?

提高内存性能以应对不断增长的数据洪流,正促使芯片制造商探索新的内存类型并探索优化对现有内存的不同使用方式,这就带来了一些复杂的新挑战。


在过去几十年里,对于半导体设计行业的大多数企业来说,内存都不是问题。主要的顾虑是价格和尺寸,但内存制造商却不能够完全满足市场上对处理需求的增长。这种情况的改变有以下几个原因:


  • 生成的数据总量正在飞速增长,这主要是由于与传感器连接的设备越来越多。因为有太多的数据要传送到云上,所以它必须在边缘甚至在终端进行处理,而功率是关键因素。

  • 传统的内存/存储层次结构存在瓶颈。磁盘驱动器很便宜,但是数据传输速度很慢。固态存储驱动器(SSD)稍微快一些,但仍然存在一些延迟问题。

  • 内存扩展正在经历与逻辑扩展相同的问题,在逻辑扩展中,密度的增加使得快速将数据移入和移出设备变得更加困难。这就是 HBM2 DRAM 在高性能设备中越来越受欢迎的原因,也是为什么有如此多的资金投入到 MRAM、ReRAM、FeRAM 和相变存储器的开发中的原因。

  • 人工智能和机器学习系统正在推动新架构的发展,这些架构依赖于大量的数据吞吐量来实现性能上数量级的改进。其中一些架构涉及内存和近内存计算,但它们也越来越关注读取和写入更大的数据字符串。


为了应对这些变化,芯片制造商和数据科学家开始重新思考冯•诺依曼架构的基本原理,这让大多数设计团队都开始面临许多全新的问题。


舍入误差

提高性能的一种方法是对乘法/累加操作进行优先级排序,而不仅仅是在内存设备周围随机分布数据。


“当在内存中循环时,实际上是在打开一个抽屉,挑出一样东西,”Rambus公司的著名发明家、研究员史蒂文·吴(Steven Woo)说。“但打开一个抽屉,挑出一些有用的东西,然后关上抽屉,这需要花费很多精力。”这就像打开一个银行保险库,取回一件物品,然后再把它关闭。打开金库的开销很大。你真的想要检索多个项目,所以你摊销了打开和关闭保险库的成本。AI 系统的能源效率是非常重要的,所以你要安排你的模型和数据训练的方式以便每次到内存中可以检索到大量数据,这实际上可以节省大量进出内存的资源消耗。”


另一种处理方法是使用更少的比特。“8 位浮点数比 16 位浮点数需要更少的存储空间,因此从内存中读取所需的能量更少,”Woo 说。“缺点是,它们也不那么精确。随着现代神经网络执行数十亿次的乘法累加(MAC)操作,甚至更多,缺乏精度和四舍五入的方式会影响结果。”


所有这些都必须考虑到人工智能机器学习系统。事实上,在计算机科学中有很多关于如何使数字四舍五入以保持准确性的研究。


“想象一下,假如你只有一个小数精度,”Woo 解释说。”你只能表示整数或半数。例如,你只能表示 1.0、1.5、2.0、2.5 等等。如果计算中需要一个 0.2 的值,那么就无法对该值进行编码,因为缺乏这样的数值精度。四舍五入到 0 可能意味着什么都不会改变。四舍五入到 0.5 可能意味着你过度调整了你的网络。有些有趣的方式可以结合混合精度的数字来提高精度,或者使用其他舍入方法,如随机舍入,随机四舍五入,有时向上四舍五入,有时向下四舍五入,这样就能得到你想要的数。举个例子,如果期望的值是 0.2,那么 60%的概率四舍五入到 0,40%的概率四舍五入到 0.5,最终平均值会是 0.2。”


不同的方法也可以结合使用,有很多兼顾能源效率和准确性的算法可以供研究人员选择。


人工智能的影响

人工智能为这一切增添了一些独特的故事性。


“人工智能使用内存的另一个相当独特的问题是稀疏性的概念,”eSilicon人工智能战略和产品高级总监卡洛斯•马西安(Carlos Macian)表示。“在网络等其他领域,通过紧密地打包数据(每个比特都携带一些信息),内存在读写方面得到了有效利用。关键词是密集。另一方面,在人工智能中,这是一种近似计算的艺术,训练过程包括识别网络模型每个分支的相对重要性,即所谓的权重。”


这就是它特别有趣的地方,因为数据的准确性直接影响到内存的功能性。


马西恩说:“很多权重最终都是零,或者非常接近零,因此与最终结果无关。因此,网络模型的大部分可以忽略,并符合一个非常稀疏的图,许多零存储在内存中。 虽然有压缩稀疏图的方法,但是能够识别存储在给定内存位置的所有权值是否为零也是非常有用的。通过这样做,你可以避免执行任何涉及这些权重的操作,从而节省大量的电能。eSilicon 的 WAZPS 内存功能就做到了这一点。”


模拟内存

另一种新方法涉及如何捕获和存储数据。由于所收集的大部分数据都是模拟的,因此从时间和能量的角度对这些数据进行数字化本来就是低效的。神经形态计算以人脑为模型,旨在提高计算的能力和性能效率。


IBM 的研究人员从去年开始调查这一领域的进展,研究使用ReRAM、相变存储器以及光子学来降低移动数据所需的能量的可能性。他们的结论是,内存计算中的混合信号芯片将是向前迈出的一大步。


其他人也有类似的观点。Adesto的首席技术官吉迪恩·因特拉特(Gideon Intrater)表示:“ReRAM 具有存储模拟值的最佳特性。”“现在的存储设备被设计成只存储 1 和 0。我们想要做的是能够存储精确到 6 到 12 位的模拟值。这已经在实验室里做到了,但还没有达到我们需要的大规模矩阵运算的规模,也没有达到可以重复生产的水平。”


这是一项重要的工作,因为它的有效性意味着可以给内存的工作方式添加一个抽象级别。


Intrater 说:“将这种存储器转移到模拟设备上是一项艰巨的任务。希望在未来数年内,行业能够看到我们以模拟方式存储数据的产品。在模拟世界中,你必须处理数字世界和模拟世界的所有问题。所以密度是个大问题。你需要在芯片上存储数十或数百兆位,甚至更多。此外,你需要有能力在设备中存储模拟值,并以一种可靠的方式实际检索模拟值。”


SRAM 和 DRAM

多年来,人们一直在讨论用具有SRAM速度,DRAM价格、性能和耐用性的通用内存替换 DRAM 和 SRAM。这种情况短期内不太可能发生。在可预见的未来,这两种芯片仍将是芯片设计的主流。


然而,这并不意味着旧的内存技术就会停滞不前。DRAM 的新模式已经在使用——GDDR6 和HBM2——还有更多在开发中。与此同时,数据进出内存的管道也在加速。


Synopsys的 DDR PHYs 高级市场经理 Graham Allan 说:“我们看到 DRAMs、MRAM 和 flash 界面的变化,更有效地引导界面会更有效率。这就是 LPDDR4、LPDDR4x 和 LPDDR5 都转到 16 位通道的原因之一。它还与 DRAM 的内部架构一起工作,因此在从读到写的数据流中没有气泡。


DDR5 已经变成双 40 位。如果芯片上有 8 个 32 位 LPDDR4x 接口,那么实际上就是 16 个通道。每个频道都可以做自己的事情,一些阅读,一些写作。这在数据传输方面非常有效,因为你没有在任何时候将整个接口用于任何特定的目的。”


添加通道是提高现有内存类型性能的一种相当直接的方法。


Cadence负责产品营销的集团总监马克•格林伯格(Marc Greenberg)表示:“LPDDR5 本质上是一款双渠道设备,但拥有两个以上渠道是很常见的。因此,问题就变成了如何将流量从一个特定的通道映射到设备的核心。人们通过芯片内部链接网络来实现,但这是一个很大的架构建模问题。你希望访问哪些核心通道,希望每个核心都访问每个通道,这意味着什么?如果在核心无法访问的通道中有数据,会发生什么情况?如何传输这些数据?这些都是人们将花费大量时间研究的重大架构问题。这是一个可以解决的问题,每个人都必须解决它,因为在你决定数据的去向之前无法制造芯片。但仍有很大的空间让人们找到最好的方法。”


传统上,数据在内存中是随机分布的,但也可以通过统计分布数据来减少写读时间。还有可以使用加密压缩数据的方法,但加密仍处于研发的早期阶段。


Synopsys 的艾伦说:“有些初创公司正在尝试加密数据,其中一个好处是,当使用加密数据时,可能只需要传输 96 位数据,而不是 128 位。虽然实际上拥有更高的带宽,但是会有延迟开销。安全性要求越高,就越早希望加密数据。我们想让它沿着通道走得越远越好,所以加密和解密都会有延迟损失。”


这仍然比当前的加密和解密方法快,并且可以提高系统的整体效率和性能。


最后,匹配组件可以优化性能,提高效率。


Rambus 产品管理高级主管弗兰克•费罗(Frank Ferro)表示:“我们希望优化处理能力和内存带宽。一些大型系统供应商已经围绕人工智能和通用进程进行了优化,这些进程看起来并不那么好,但对于特定的应用程序,他们调整了曲线,使 GPU 的吞吐量与内存带宽达到最大。这就是他们所追求的,他们想优化应用程序的可用性。”


密度问题

随着所有这些方法的使用,内存将以不确定的速度收缩。DRAM 厂商有他们自己的增加密度的时间表,但是 SRAM 必须随着芯片的进程而收缩。这就会引起问题,因为 SRAM 不像其他数字电路那样收缩,其结果是,用于缓存的 SRAM 占用的空间将会增加。


“在过去,芯片的 40%是内存,”西门子企业Mentor的IP部门董事总经理法扎德扎里法(Farzad Zarrinfar)说。“现在它占芯片的 60%到 70%,而在人工智能芯片中,这个比例可以达到 70%到 80%。面积在 SRAM 扩展中起着重要作用,这就是为什么我们将继续增加密度。”


然而,由于不同的原因,这变得越来越困难。随着存储位单元的收缩和电压的降低,泄漏量正在上升。Zarrinfar 说:“存储位正在不断地研究各种方法,以减少泄漏和降低保持电压。假如功能电压下降,我们就必须使用 HVT(高压阈值电池)来减少泄漏,用 UHVT 可以进一步减少泄漏,用 LVT(低压阈值)可以最大限度地提高速度。”


同时,随着密度的增加,性能也会出现问题,所以我们还有写辅助和读辅助来优化密度。


结论

多年来,以不同方式存储和访问数据的研究一直时断时续。然而,在过去的几个节点之前,设备伸缩在性能和功耗方面产生了大量的改进,因此在这方面几乎没有取得什么进展。但是随着可伸缩性不断减少,架构更改对于 PPA 的改进变得越来越重要。这一点尤其重要,因为处理和存储的数据量将继续激增,这给内存研究和开发增加了一种紧迫感。


这也推动了对新内存类型和打包方式的研究,以及更好的排序和访问数据的方法。尽管内存一直是计算的一个组成部分,但芯片制造商希望以更低的功耗大幅提升性能,所以内存将被重新重视起来。


原文链接:


Using Memory Differently To Boost Speed


2019 年 8 月 30 日 10:551278

评论

发布
暂无评论
发现更多内容

ZIP 也能边下载边解压?优酷流式解压技术揭秘

阿里文娱技术团队

ZIP

PHP Db类强制读主库(master)的设计

Dnnn

php MySQL

java安全编码指南之:Number操作

程序那些事

java安全编码 java安全 安全编码规范

第13周作业

刘卓

第13周学习总结

刘卓

Go语言 sync.Mutex 源码分析

Dnnn

Go 语言

Google 搜索引擎之PageRank 算法

莫莫大人

极客大学架构师训练营

开始编译第一个typescript实例

程序员学院

Java typescript 大前端

关于第四次财富狂潮的思考,区块链如猛虎出笼?

CECBC

比特币 区块链 数字货币

GO 语言超时实现

Dnnn

Go 语言

GO语言 MD5 四种实现方式

Dnnn

Go 语言

达达双云双活实践

达达集团运维团队

容器 微服务 openresty 多云架构 双活容灾

PageRank

GalaxyCreater

云栖大会边缘计算分论坛倒计时7天,这2点值得期待

阿里云Edge Plus

边缘计算

epoll的原理和流程

Dnnn

公有云常用数据分析指标

leis

Week13 总结

leis

GO 语言交叉编译

Dnnn

Go 语言

第13周数据分析

陆不得

马云:今天的区块链并没有被人们认识到价值!

CECBC

区块链 阿里巴巴 马云

Docker Compose 搭建 Redis Cluster 集群环境

哈喽沃德先生

redis Docker Docker-compose redis集群 redis cluster

从零开始搭建完整的电影全栈系统(三)——restfulApi的编写

刘强西

RESTful 电影api

PHP配置管理-yaconf

Dnnn

php

oeasy 教您玩转linux 之 010209 装酷利器 hollywood

o

MySQL中修改数据表存储引擎的三种方法

Matrix Chan

MySQL 运维 数据表引擎

GO 语言异常处理

Dnnn

Go 语言

遇到银河提现不了网站维护审核怎么办?

丛林里的余光

数据库 网站平台 提现

Redis哨兵(sentinel )机制讲解

Dnnn

windows10 CUDA环境搭建

yuanhang

tensorfl

【在云端 003】 星星之火,可以燎原——云时代的IoT

Bora.Don

云计算 IoT AIOT

synchronized实现原理及代码证明各种锁

Darren

源码 synchronized 轻量级锁 偏向锁 Monitor

WAVE SUMMIT 2022 深度学习开发者峰会

WAVE SUMMIT 2022 深度学习开发者峰会

如何创新使用内存以提高处理速度?_语言 & 开发_Ed Sperling_InfoQ精选文章