基于静态随机存储器(SRAM)的存算电路设计 | 主讲回顾( 二 )


第二个挑战是算法需求与芯片性能不匹配 。 举一个比较经典的例子 , 从2012年到2015年短短三年间 , AI算法不管是从模型的深度还是所需要执行的计算量上 , 都呈现出数十倍甚至百倍、千倍的增加 。 今年是2022年 , 这部分的增长比例则是更加庞大的数字 。 对于硬件来说 , 如果不对其算力密度进行优化 , 它的整个执行效率或性能将会卡在芯片的AI加速部分的计算单元设计上 , 所以也需要针对特定的AI任务部分做Hardware或Chip的支持 。
第三个挑战是存储器访写功耗过大 。 我们可以从两方面看待这个问题:第一个是网络模型的发展趋势 。 网络规模基本上都是以数量级别的增长趋势在发展 。 但是相对以DDR接口的带宽或者能效来看 , 可以看到从2015年之后 , 整体发展速度呈现逐步放缓的阶段 , 原因也与大家所熟知的摩尔定律放缓有关 , 所以这部分也需要跟memory的性能做独特的要求或优化 。
基于静态随机存储器(SRAM)的存算电路设计 | 主讲回顾
文章图片
接下来 , 我们从近几年ISSCC最新成果来看下当前AI芯片的发展现状 。 通常分成两大类评判指标 , 首先是从单独的、芯片级的性能benchmark , 也称作Lowlevelbenchmark 。 例如单次operation所需要消耗的能量 , 以及单位时间内所能够执行的operation数量 , 它分别对应能效和算力两个大家所熟知的指标 。
而对于Systemlevelbenchmark来说 , 更看重的是在实际处理AI任务过程中的表现是怎样的 。 以AI推理应用为例 , 主要体现在单次influence所消耗的energy是多少 , 或者是单位时间内能够执行多少次的influence , 比如帧率、跑分等是怎么界定的;还有一部分是针对不同的AI任务 , 或者数据集 , 整个硬件实际能够达到的效果 , 像inferenceaccuracy是怎样的 。
从架构来看 , 主要体现在三个大的发展方向 。 第一类是对于不同精度的支持 , 比如小到bit , 大到各种浮点类型数据的支持 , 或者是相应的一些Vector扩展 。 还有一类是结合网络的稀疏性 , 也是在硬件性能提升方面研究比较多的 。 从原理性上有数倍甚至2~3倍以上的提升 , 如input、output、weightsparsity 。 最后一类是工艺的演进 , 比如3nm、5nm , 还有一些3D技术 , 像TSV或是HybridBonding等方式 , 来进一步提升整个AI芯片的性能 。
总而言之 , 整个AI芯片的发展 , 涉及到各种不同的Software和Hardware之间的协同设计 , 或共同优化 。
基于静态随机存储器(SRAM)的存算电路设计 | 主讲回顾
文章图片
接下来用一些具体的指标数据来做一些分析 。 如上图所示 , 近几年不管是产品级的工作 , 或者是学术级的benchmark工作 , 可以看到目前绝大部分产品级的工作 , 它的能效都处于在个位数TOPS/W的量级 , 甚至是在GOPS/W的量级 。
算力大小跟具体的应用场景关系比较大 。 比如对一些小场景 , 可能1TOPS就足够了 , 但是对于智能驾驶的场景 , 可能需要几百TOPS , 甚至像特斯拉所标榜的1000TOPS单芯片的目标 。 再看下上图中上面几个处于比较特立独行的点 , 它们主要体现在对于精度的极致优化 , 或者是采用了一些新型的架构设计 , 包括后面会提到的存算一体架构 。
二、存算一体和存内计算
基于静态随机存储器(SRAM)的存算电路设计 | 主讲回顾
文章图片
在了解存算一体架构和存内计算电路的设计之前 , 先熟悉下传统冯诺依曼架构的局限性 。
如上图所示 , 在传统冯诺依曼架构中 , 大存储单元与CPU运算单元之间是相互独立的 , 它们之间的交互 , 必须要用一些有限的BUS带宽 。 而对于大规模的比如AI或者是数据的一些计算处理任务来说 , 其实体现在硬件上 , 就是更长的Latency , 更高的传输功耗损失 , 以及更高的硬件成本 。