【解读】HotChips上这款存算一体芯片为什么这么强?
2019-09-11
UPMEM,一家成立于2015年的法国半导体设计公司,应邀于2019年8月19日在HotChips会议上展示其颠覆性的存内计算(PIM : Processing in Memory)解决方案。该解决方案能够将大数据和AI应用程序运行速度提高20倍,将能耗降低10倍。
作为半导体行业关于高性能微处理器的顶级会议之一,HotChips吸引了数千名微处理器架构师、技术专家和IT专业人士。而作为一家成立仅仅4年的公司,UPMEM的产品究竟有什么样的魅力使它能够登上高手云集的HotChips的舞台。
中科院计算所智能计算机研究中心带你解读
其中的奥秘......
冯·诺依曼架构之殇
冯·诺伊曼架构是计算机的经典架构,同时也是目前计算机以及处理器芯片的主流架构。在冯·诺伊曼架构中,计算单元与内存是两个完全分离的组成部分:计算单元根据指令从内存中读取数据,在计算单元中完成计算或处理,并存回内存。
然而,冯·诺伊曼架构在构建之初只是一个理论模型,在建立该模型时做了一个当时看来合理的假设,即处理器和内存的速度很接近。但是计算机处理器的性能随着摩尔定律高速发展,其处理速度随着晶体管特征尺寸的缩小而直接提升,因此在过去数十年中其性能提升可谓是天翻地覆,现在一颗手机中处理器的性能已经比30年前超级计算机中的处理器还要强。另一方面,计算机的主要内存使用的是DRAM方案,DRAM读写数据的速度随着摩尔定律有一定提升,但是提升速度并不如处理器,另一方面DRAM与处理器之间的接口属于混合信号电路,其带宽提升速度主要是受到PCB板上走线的信号完整性所限制,因此从晶体管尺寸缩小所获得的增益并不大。这也造成:在内存容量指数级提升以后,CPU 和内存之间的数据传输带宽成为了瓶颈。目前DRAM的性能已经成为了计算机整体性能提升的一个重要瓶颈,即所谓阻碍性能提升的“内存墙”。
存内计算:通往大数据之门
解决“内存墙”问题的一种方案是存内计算(PIM),该种思想在近年来的学术届和业界都受到了极大的关注。PIM最早发源于计算机微体系结构的研究,它通过在内存中集成部分计算资源,实现快速数据处理,主要用于解决访存带宽、访存能耗等体系结构设计的瓶颈问题。从计算和存储谁接近谁的角度来看,PIM刚好和Cache相反。这一技术在上世纪90年代随着David Patterson教授研究的Intelligent RAM项目有了一个高潮,但由于当时工艺不成熟、缺乏杀手级应用等问题,后来陷入了沉寂。最近由于三维堆叠、HBM、RRAM等新型工艺器件的出现以及神经网络加速、图计算等关键应用的推动,PIM重新成了研究热点。2018年的国际固态半导体会议(ISSCC,全球最顶尖的芯片设计会议,发表最领先的芯片设计成果,称为“芯片界的奥林匹克”)有专门一个议程,其中的论文全部讨论存内计算;到了2019年,也有5篇关于存内计算的论文,不过分散在不同的议程中。存内计算的主要改进就是把计算嵌入到内存里面去,这样内存就不仅仅是一个存储器,还是一个计算器。这样一来,在存储或读取数据的时候就同时完成了运算,因此大大减少了计算过程中数据搬运所带来的消耗。
UPMEM所采用的是将计算单元嵌入DRAM存储阵列中的方式来实现PIM。该方式具有较强通用性,在该种实现方式下,仅需要在DRAM中增加适当的计算逻辑,同时与DRAM接口协议相兼容,便可适配现有的内存系统。
UPMEM:内存市场的搅局者?
UPMEM此次对外发布的产品,最大的特点应该就是其基于DDR4 R-DIMM 模型,取代了标准的DIMM。整个DDR4 R-DIMM条有着8GB容量,包含了16个 4Gb DRAM颗粒。每个颗粒中嵌入了8个存内处理器核(DPU)。由于DPU能直接访问内存单元,每个DRAM-DPU的带宽能够达到1GB/s。据悉,最终用于服务器上的产品容量将达到128GB,总共2048个DPU,最终的整体带宽将达到2TB/s。
上图展示的是一个DRAM颗粒中的结构示意图,UPMEM针对其进行了专门的架构设计。每个DRAM颗粒中有8个bank, 均连接到各自的DPU上。DRAM加上DPU则使得原来只具有存储功能的DRAM CHIP变成了具备存储和计算功能的PIM CHIP。
根据UPMEM已发表的论文和专利可以发现,其PIM方案早在4年前就已经确立。而该公司也整整花了4年的时间才实现了其产品的落地。由于晶体管结构和工作模式的差异,逻辑工艺和存储器工艺是两种不同的芯片工艺,要想在存储器内部引入逻辑部件,这对于UPMEM来说是一个不小的挑战。在此次会议的演讲上,UPMEM用“highly constrained”来形容工艺条件对其PIM设计方案的阻碍。
其次,从演讲的内容来看,大致介绍了如下一些
关键技术难题和部分解决方案。
No.1
在DRAM工艺上建立数字逻辑的流程,比如Logic cell library,SRAM IP和Logic Design & Validation flow,这些是处理器设计和实现的基础。同时,为了兼容DRAM工艺,DPU只能使用比较“慢”的晶体管设计,但是却需要达到“较快”的处理器速度。为达到这一设计需求,DPU采用了14级Interleaved pipeline来实现500MHz的频率,该频率相对于CPU的频率差距较大,但与DRAM的频率差不多。同时提供了24个硬件线程,保证了流水线的效率。
No.2
针对DRAM 工艺,在DPU中采用了优化后的32位指令集,具有多线程,标量,循序等特点,值得注意的是UPMEM并没有使用ARM或RISC-V等指令集。这种设计方案存在一个问题,即DPU所使用的指令集如何与CPU所采用的指令集(X86/ARM/POWER 9)交互,这一部分内容UPMEM并没有在PPT中提到。
No.3
从存内处理器架构来看,UPMEM在DPU中放弃了Cache的使用,而是采用64KB的SRAM buffer替代Data Cache,采用24KB的 SRAM buffer替代Instruction Cache。在通常的体系结构中,Cache的存在主要是出于两方面的考虑: CPU与DRAM的频率差异以及DRAM的访存延迟。对于DPU而言,尽管其频率与DRAM相近,但DRAM的访问远做不到1个cycle,仍然需要SRAM来缓存数据。UPMEM的解决方案是采用SRAM buffer结构来做缓存,其作用与Cache类似,两者的区别在于前者是硬件管理,后者是软件管理。同时采用SRAM buffer替代Cache也有出于提高多线程效率的考虑。
No.4
DPU庞大的数量决定了: 不必让两个进程共享一个DPU,也就不需要在存内运行操作系统(OS),所以没有必要考虑兼容性问题,但需要实现对LLVM/CLANG的支持。同时UPMEM还声称由于DPU之间不存在共享问题,其产品安全性得到了大大提升。
No.5
当在内存中增加了这么多的计算单元后,如何进行任务划分很显然将会成为一个重要问题,哪些任务交给CPU处理,哪些任务交给DPU处理?在UPMEM的讲演中也分析了这方面的内容,将对算力要求高的部分应用搬到DPU中进行处理,绝大部分的常规应用仍然交给CPU执行。另一方面CPU也要负责从DPU中收集计算结果。
对于DRAM的刷新控制,UPMEM此次并没有在此次HotChips上提到,但很显然这是一个很关键的问题。我们知道DRAM每隔一段时间均需要刷新一次,在这一设定下很可能出现的情况是DRAM需要刷新时,存内处理单元正在使用存储阵列区中的数据。从其已经公布的专利来看,为保证刷新的正常进行,需要在DRAM的每个bank中增加一个刷新计数功能部件,该部件能将DPU使用存储阵列时所接收的从CPU传来的刷新命令记录下来,待DPU处理完毕数据,再由外部刷新控制电路继续进行刷新。
尽管面对如此多的难题,这家雄心勃勃的初创公司仍然有信心在2020年实现DRAM-PIM产品的量产。从UPMEM提供的技术白皮书中可以看到,该公司的技术战略路线基本是分三步走,分别DRAM级,SSD级和物联网可穿戴设备场景下的存内计算。在产品战略布局上,目前主要是服务器市场,今后应用的重心也会涉及到边缘计算和智能汽车电子领域。
从短期来看,UPMEM所采用的将计算单元嵌入到DRAM中的存内计算实现方式具有较高的通用性,更容易被市场接纳。
但如何从行业的搅局者成为一个内存市场细分领域的引领者,UPMEM可能还有很长的一段路要走。
Our Achievement
中科院计算所智能计算机研究中心一直致力于性能及能效领先的智能计算系统研究,是国内最早开展新型存内计算技术研究的机构之一。目前我中心已经在存内计算的一致性方法,预取策略,计算划分方法,模拟器搭建等方面取得了卓有成效的成绩。其中存内计算模拟平台PIMsim是首个把应用、OS、CPU和PIM放在一起的全系统、实际执行模拟器,已经开源发布在:https://github.com/vineodd/PIMSim
同时值得注意的是我中心发表在IEEE COMPUTER ARCHITECTURE LETTER上,关于该模拟器介绍的论文:PIMSim: A Flexible and Detailed Processing-in-Memory Simulator,目前排在该期刊popular articles中的第一位。