3D堆叠内存芯片是通过3D封装技术,将多层DRAM堆叠而成的新型内存。3D堆叠内存芯片能提供很大的内存容量和内存带宽,其中混合内存立方体(hybrid memory cube)和高带宽内存(high bandwidth memory)是两种新型的3D堆叠内存技术。利用3D堆叠内存,可以进行许多PIM设计,比如改变整个系统,或者实现简单的功能卸载,主要思想是将某种形式的处理逻辑(通常是加速器、简单内核或可重构逻辑)放在3D堆叠内存的逻辑层中。取决于体系结构的设计,这个PM处理逻辑(PIM核心或PIM引擎)可以执行应用程序的一部分(从单个指令到函数)或整个线程和应用程序。本节将讨论利用3D堆叠内存的PM在图处理、移动设备、图形处理单元上的使用。
Tesseract:图处理:
大规模图形处理是一个流行的现代应用。从社交网络到机器学习,从数据分析到生物信息学,图形处理具有广泛的适用性。然而图分析这类负载会给内存带宽带来巨大的压力,这是由于:(1)大量的随机内存访问跨越了大片内存区域,导致了非常有限的缓存效率和大量不必要的内存总线数据传输。(2)从内存中获取的每个数据项上分配的计算非常少,导致隐藏内存延迟的能力受限。而且在内存访问和计算之间存在巨大的能量差异,加剧了能耗瓶颈。这两个特性使得扩展这样的负载非常具有挑战性,尤其是在基于大型片上缓存和相对稀缺的片外随机访问内存带宽的传统架构下。
Tesseract是一种用于大规模图形处理的可编程PIM加速器。它利用三维堆叠存储器逻辑层的高带宽和潜在的计算能力来克服传统图形处理架构的限制。Tesseract包括:(1)一种新的硬件架构,通过在逻辑层中放置简单的顺序处理核心,使每个核心只能在分配给它控制的内存分区上操作数据,从而有效利用3D堆叠内存中的可用内存带宽;(2)一个顺序核之间的有效通信方法,使每个核心能够对另一个核心控制的内存数据发起计算请求;(3)一个基于消息传递的编程接口,类似于现代分布式系统编程,使用远程函数调用在数据所在内存分区内处理数据。Tesseract设计将函数发送到数据上,而不是跨不同的内存分区和核心移动数据元素。它还包括两个专门用于图形处理内存访问模式的硬件预取程序,预取程序基于Tesseract编程模型进行操作。经过使用五种最先进的图处理负载进行的综合评估,结果表明,与传统系统相比,Tesseract PIM体系结构将平均系统性能提高了13.8倍,平均能耗降低了87%。
移动设备中的应用:
目前,智能手机、平板电脑和可穿戴设备无处不在。由于有限的电池容量和严格的热功率预算,能源效率成为消费类设备最关注的问题。研究发现,现代消费设备中系统总能量和执行时间主要花费在数据移动上。在所研究的所有流行的现代应用程序中,我们发现,平均有627%的系统总能量用于跨内存层次的数据移动。在消费设备中引入PIM,使计算发生在内存中,可以极大地减少数据移动。然而,这面临着巨大挑战,因为消费类设备在面积和能量预算方面非常严格。因此,需要确定的是什么样的内存逻辑可以最大限度地提高能源效率,并且能以尽可能低的成本实现。
在消费类工作负载(比如Chrome浏览器、TensorFlow Mobile)中,PM的许多目标函数都由简单的操作组成,比如memory、memset、基本算术运算、逐位操作,以及简单的数据混排和重组运算。因此,我们可以使用一个小的低功耗通用嵌入式核心或者一组小的固定功能加速器,相对容易地实现这些PIM目标函数。分析表明,在类HMC的3D堆叠内存架构中,PM核心和PM加速器的面积分别不超过PIM逻辑可用面积的9.4%和35.4%。PIM核心和PIM加速器都消除了大量的数据移动从而显著减少了系统总能耗(在所有工作负载中平均减少55.4%)和执行时间(平均减少54.2%)。
图形处理单元的应用:
GPU是一种专门在个人电脑、工作站、游戏机和一些移动设备上进行图像运算工作的微处理器。随着人工智能的发展,如今的GPU已经不再局限于3D图形处理了,而成了各种数据并行应用程序的首选加速器。GPU具有多达几千个计算内核和大量的高速内存,适合大规模并行计算。尽管如此,许多GPU应用程序仍然存在内存限制,因为GPU与系统之间的带宽无法为正在运行的线程提供足够的数据。
3D堆叠内存架构为GPU系统提供了一个很好的解决内存瓶颈的机会。放置在3D堆叠内存逻辑层的GPU核心可以直接连接到具有高带宽(和低延迟)连接的DRAM层。为了充分利用这些系统的潜在性能优势,有必要设计计算卸载(off-loading)功能,并将数据映射到多个具有计算能力的3D堆叠内存中,这样GPU应用程序就可以从这些内存逻辑层的内存处理功能中获益。
TOM(Transparent Offloading and Mapping)就是PIM在GPU上应用的一个例子。这里有两种机制,首先,它引入了新的编译器分析技术来识别GPU内核中可以从PIM卸载中受益的代码段。编译器估计每个代码块可能节省的内存带宽,为此,编译器将代码块在常规GPU内核上执行时的带宽消耗与在逻辑层上卸载到GPU内核时“传输/接收”“输入/输出”寄存器的带宽成本进行比较。在运行时,根据系统条件(如逻辑层中处理资源的争用)做出最终的卸载决策。其次,软件/硬件协同机制预测将被卸载代码访问的内存页,并将这些页面放置在将执行代码的相同的3D堆叠内存立方体(cube)中。目标是通过确保PIM核心所需的数据位于相同的内存堆栈中,从而使PIM更有效。这两种机制对程序员来说都是完全透明的,他们只需要编写常规的GPU代码,而不需要任何显式的PIM指令或对代码的任何其他修改。与没有PIM卸载功能的基准GPU系统相比,TOM将各种GPGPU负载的平均性能提高了30%,并将平均能耗降低了11%。
PEI:PIM-Enabled Instructions:
PEI的目的是为了开发一种机制,以最小的成本、最少的系统更改、不更改编程模型,最大限度地利用近场数据处理。启用PIM的指令集基于两个关键思想。首先,PEI是一个缓存一致的、使用虚拟地址的主机处理器指令,它只在一个缓存块上运行。它不需要更改执行顺序和编程模型,没有更改虚拟内存,最少改变缓存一致性,不需要特殊的数据映射来利用PIM。其次,位置感知的执行运行时机制动态地决定在何处执行PEI。这个运行时机制在性能最大化的位置执行PE总之,启用了PM的指令提供了一种错觉,即PIM操作执行起来就像主机指令一样。PEIs的例子有整数自增、整数最小值、浮点加法、哈希表查询、直方图bin索引、欧氏距离和点积。图处理、内存数据分析、机器学习和数据挖掘等数据密集型负载可以从这些PEIs中显著受益。可以观察到,在10个关键的数据密集型负载中使用PEI,结合位置感知的执行运行时机制,比基准CPU平均性能提高47%,平均能耗降低25%。
领取专属 10元无门槛券
私享最新 技术干货