acm-header
登录

ACM通信

研究突出了

卷积引擎:专业计算中平衡效率和灵活性


卷积引擎,插图

来源:iStockPhoto.com

通用处理器虽然用途广泛,但却为其灵活性付出了巨大的代价,在可编程开销上浪费了99%以上的能量。我们观察到,减少这种浪费需要调优数据存储和计算结构以及它们与算法中的数据流和数据位置模式的连接。因此,通过放弃完全的可编程性,而以某个领域中使用的关键数据流模式为目标,我们可以创建高效的引擎,该引擎可以在该领域中广泛的应用程序之间进行编程和重用。

我们提出了卷积引擎(CE),一种专门用于计算摄影、计算机视觉和视频处理中普遍存在的类卷积数据流的可编程处理器。CE通过捕获数据重用模式、消除数据传输开销和支持每次内存访问的大量操作来实现能源效率。我们证明了CE是为单个核优化的定制单元的能量和面积效率的23倍。对于大多数图像处理应用,CE比数据并行单指令多数据(SIMD)引擎提高了815倍的能量和面积效率。

回到顶部

1.简介

处理器,无论是嵌入式平台中相对简单的RISC核心,还是服务器/桌面计算机中数十亿晶体管CPU芯片,都是非常通用的计算机器。它们几乎可以处理任何类型的工作负载,从web应用程序、个人电子表格、图像处理工作负载和嵌入式控制应用程序到数据库和金融应用程序。此外,它们受益于完善的编程抽象和开发工具,以及数十年的编程知识,这使得编写新应用程序非常容易。

然而,处理器也是低效的计算机器。在通用处理器核心中,预测、获取、解码、调度和提交指令的开销占了大部分的功耗。2716因此,它们通常比专门设计来执行特定任务的硬件块多消耗1000倍的能量。这些专门的硬件块通常也提供数百倍的性能,使用更小的硅面积。尽管有这些巨大的低效率,由于处理器的多功能性和可重用性,它仍然是大多数计算系统的核心。

几十年来,由于半导体器件技术的进步,我们已经能够在不消耗过多电力的情况下扩大通用处理器的性能。每一代新技术都成倍地降低了逻辑门的开关能量,使我们能够在功率适度增加的情况下创造出更大、更复杂的设计。然而,近年来,能源规模已经放缓,12因此,我们不能再像过去那样缩放处理器性能。今天,如果我们想要在恒定功率下扩展性能,我们从根本上需要减少能源浪费。

本文提出了一种用于计算摄影、图像处理和视频处理应用的新型高效处理器架构,我们称之为卷积引擎(CE)。随着廉价高质量成像仪的普及,计算摄影和计算机视觉应用预计将在未来几年成为关键的消费者计算工作量。一些示例应用程序包括标注现实、基于手势的控制、摸黑功能和脉冲测量。

然而,许多这些应用程序将需要多个TeraOps/s的计算能力,这远远超出了一般处理器核心的能力,特别是在低于1瓦特的有限功率预算下的移动处理器。硬件加速器在计算效率上具有三个数量级的优势,这意味着目前的移动系统使用的是结合了处理器和加速器的异构计算芯片。1115一个例子是在移动soc中使用的视频编解码器硬件。然而,这些加速器的目标要么是单一算法,要么是算法的小变化。处理这些未来智能设备所需的各种应用程序集需要一个更可编程的计算解决方案。我们的CE提供了可编程性,同时仍然保持与专用加速器相近的能量耗散。

我们的设计方法是基于观察专门单元通过调整数据存储结构以适应算法的数据流和数据位置要求来实现大部分的效率增益。这种调优消除了冗余的数据传输,并促进了紧密耦合的数据路径和存储结构的创建,允许为获取的每个指令和数据执行数百个低能耗操作。如果处理器的目标是一个领域中广泛的内核所共有的计算主题和数据流模式,那么它们也可以享受类似的能量增益。我们的CE实现了广义的map-reduce抽象,它描述了图像处理领域中数量惊人的大量操作。与通用处理器相比,最终的设计实现了高达两个数量级的低能耗,并在专用硬件加速器的23倍以内。

下一节将概述为何一般处理器会消耗如此多的能量,以及现有优化策略的局限性。第三部分介绍了卷积的抽象和我们在本研究中所针对的五个应用程序内核。第4节描述CE体系结构,主要关注提高能源效率和/或允许灵活性和重用的特性。然后,我们将此CE与具有SIMD扩展的通用核心和针对单个内核的高度定制的解决方案进行比较,以提高能源和面积效率。第5节表明,对于大多数应用,CE是定制单元的23倍,几乎比SIMD解决方案好10倍。

回到顶部

2.背景

通用处理器的低效率是在图1,它比较了一个极其简单的RISC处理器的各种算术运算的能量耗散与整体指令能量。在计算中执行有用工作的算术操作的能量耗散比在指令开销中浪费的能量要低得多,这些指令开销包括指令获取、解码、管道管理、程序排序等。对于媒体处理应用程序,开销甚至更大,通常操作的短数据只需要0.20.5 pJ (90 nm)的能量,结果超过99%的能量成为开销。

为了提高能源效率,这些日常开支必须大幅度减少。这给处理器的设计带来了两个限制:(i)处理器必须在每条指令上执行数百个操作,以充分摊销指令成本;(ii)处理器也必须获取很少的数据,因为即使是缓存的一次访问也需要花费25 pJ (90 nm)的内存获取,而算术操作则需要0.20.5 pJ。

这两个约束似乎是矛盾的,因为每个周期执行数百个操作通常需要从内存中读取大量数据。然而,对于大多数指令要么操作前一个指令产生的中间结果,要么重用前一个指令使用的大部分输入数据的算法,这些条件是可以调和的。如果有足够的存储结构将这些“过去的数据”保留在处理器数据路径中,那么每条指令就可以执行大量的操作,而不需要频繁访问内存。幸运的是,包括大多数图像处理和视频处理算法在内的计算绑定应用程序很好地匹配了这些约束,提供了大型数据并行性和数据重用。

目前大多数高性能处理器已经包括SIMD单元,它被广泛认为是计算密集型应用中最有效的通用优化。SIMD单元通常通过在单个周期中同时操作多个数据操作数(通常为816)来实现数量级的能量降低。然而,正如Hameed等人所解释的。7由此产生的效率仍然比专用硬件加速器低两个数量级,因为SIMD模型不能很好地扩展到更大的并行度。

为了更好地理解传统SIMD单元的体系结构限制,考虑操作在16位8 × 8块上的二维绝对差运算和(SAD),如图所示清单152D SAD运算符广泛应用于多媒体应用,如H.264视频编码器,用于为参考图像或视频帧中的2D图像子块寻找最接近的匹配。清单1执行此搜索的每一个位置srchWinHeight×srch-Win-Width在参考框架中搜索窗口,结果是四个嵌套循环。所有四个回路都是独立的,可以同时并行。同时,每个SAD输出在很大程度上重用了用于计算以前的垂直和水平方向输出的输入数据。

然而,寄存器行大小为128位的典型SIMD单元只能操作适合一个寄存器行的元素,限制了最内部循环的并行性。试图扩大SIMD宽度以获得更多的并行性需要同时从寄存器文件读取多个图像行(通过第2个最内部循环进行并行化),或者同时读取多个重叠的图像数据行(通过多个水平输出进行并行化)。这两种支持在SIMD模型中都不存在。

利用数据重用需要将完整的8 × 8块存储在SIMD寄存器文件的8行中,以便数据可以在本地用于计算后续输出像素。这在垂直方向上是直接的,因为每个新输出只需要一个新行,而七个旧行可以重用。然而,为了在水平方向上重用,在计算每个新的输出像素之前,8行中的每一行都必须移动一个像素,这会带来大量的指令开销。同时,由于移动过程破坏了旧的像素,我们被限制在垂直或水平方向上获得重用,而不是两者都获得重用,结果是每个数据项从内存中提取了8次,浪费了太多的内存能量。

gpu通过使用大量的简单SIMD核(每个都有本地寄存器资源)和非常大的内存带宽来保持高计算吞吐量,从而实现了更高的并行度。虽然这导致了巨大的计算吞吐量,但由于大量的数据访问成本,能源消耗也非常高。测量优化后的H.264 SAD算法GPU实现的性能和能耗13使用GPUGPUSim模拟器1与gpu - watch能源模型,9我们确定,与嵌入式128位SIMD单元相比,GPU实现的运行速度快40倍,但能耗也高30倍。这进一步说明了最小化内存访问和提供低成本本地数据访问的必要性。

如下一节所示,SAD运算符属于一大类算法,可以描述为类卷积算法,具有高效执行所需的并行性和重用特性。下一节讨论这种计算抽象,并提供一些示例应用程序。

回到顶部

3.计算模型

式(1)和(2)给出了标准离散1D和2D卷积的定义。当处理图像时,Img是从图像位置到像素值的函数,而f应用于图像的过滤器。实用核通过使滤波器尺寸小来减少计算(以很小的精度代价),对于二维卷积来说,通常是3 × 3到8 × 8的量级:

eq01.gif

eq02.gif

我们通过确定卷积的两个分量来推广卷积的概念:a地图操作和一个减少操作。式(1)和(2)中,map运算是对像素和tap系数对进行的乘法运算,reduce运算是对所有像素和tap系数对在位置处的输出值求和[n].将式(2)中的map操作替换为x·y, |xy|将reduce操作保留为求和,生成绝对值和(SAD)函数,用于H.264的运动估计。进一步替换了由到的reduce运算马克斯将产生一个最大的绝对差异操作。式(3)表示了我们CE的计算模型,其中f地图,减少(“R式3)为伪指令,且c是卷积的大小:

eq03.gif

卷积和数据流一样适用于许多应用程序,但有时会受到约简中单一关联操作的限制。有许多应用程序具有类似于卷积的数据位置模式,但需要通过特定的操作图而不是简单的约简来组合结果。这些应用程序可以由CE通过增加的复杂性来处理减少算子使能非交换函数,并允许在每个约简阶段使用不同的函数。这种广义组合网络扩展了“约简”阶段,创建了一个结构,可以输入大量的值,然后通过有效的融合超级指令计算少量的输出,如图2

这种扩展的缺点是,输入到组合树的位置现在很重要;这样,才能充分实现新泛化的潜力减少操作员,在数据供应网络中需要高度的灵活性来将所需的数据移动到正确的位置。的定义可以实现这一点地图除已支持的一组计算运算符外,还支持数据排列网络。这些新的增强功能地图而且减少操作符大大提高了它们的通用性和适用性,从而增加了支持应用程序的空间。

我们现在介绍本文中使用的几个内核,并讨论它们如何映射到我们上面定义的计算抽象中。表1总结了这一信息。

*3.1.运动估计

运动估计是包括H.264在内的许多视频编解码器的关键组成部分,消耗了约90%的H.264软件实现的执行时间。47内核对视频帧的子块进行操作,试图找到每个子块在视频流的前一个和/或未来参考帧中的位置。特别地,在H.264中,运动估计的计算分为两个步骤:

整数运动估计(IME):IME使用之前在第2节中描述的SAD运算符在参考图像中搜索匹配的块。注意SAD如何非常自然地适合于CE抽象地图函数是绝对不同的减少函数是求和。

分数运动估计(FME):FME将在IME步骤中获得的初始匹配细化到1 / 4像素分辨率。它首先对IME选择的块进行上采样,然后执行略微修改的SAD操作。上采样也很适合卷积抽象,实际上包括两种卷积操作:首先,使用一个六点可分离的二维滤波器对图像块进行上采样。这部分纯粹是卷积。其次,通过插值相邻像素对生成的图像进行上采样,再上采样2倍,可以定义为a地图操作符(用于生成新像素)减少。

*3.2.筛选

尺度不变特征变换(SIFT)在图像中寻找不同的特征。10为了保证尺度不变性,对图像进行高斯模糊和下采样,以创建一个越来越粗尺度的图像金字塔。然后通过计算每两个相邻图像尺度之间的差异来创建一个高斯差(DoG)金字塔。然后通过观察DoG金字塔中的尺度空间极值来发现感兴趣的特征。10

高斯模糊和下采样自然是二维卷积运算。寻找尺度空间极值是一种3D模板计算,但我们可以通过将来自不同图像的行交错到单个缓冲区将其转换为2D模板操作。极值运算用compare作为a映射到卷积地图运算符和逻辑and作为减少操作符。

*3.3.Demosaic

相机传感器输出通常是一个红、绿、蓝(RGB)颜色马赛克布局在拜耳模式。3.在每个位置,使用周围单元格中的亮度和颜色值插值两个缺失的颜色值。由于颜色信息采样不足,插值是棘手的;任何线性方法都会产生颜色条纹。我们使用Demosaic的一个实现,它基于自适应颜色平面插值(ACPI),8它计算图像的梯度,然后在梯度最小的方向使用三分滤波器。虽然这符合广义卷积流,但它需要一个复杂的“约简”树来实现基于梯度的选择。数据访问模式也是非平凡的,因为在执行插值之前必须分离来自马赛克的各个颜色值。

回到顶部

4.卷积引擎

卷积运算符是高度计算密集型的,特别是对于较大的模板尺寸,并且是数据并行的,它们适合于向量处理。然而,正如前面所解释的,由于寄存器文件的组织,现有的SIMD单元在利用卷积的固有并行性和局部性方面受到限制。CE通过移位寄存器结构的帮助克服了这些限制。所示图3对于二维卷积的情况,当这种存储结构增强了生成输入数据的多个移位版本的能力时,它可以从一个很小的16 × 8的二维寄存器中填充128个alu,且访问能量和面积都很低。一维水平卷积和一维垂直卷积也可能获得类似的增益。我们很快就会看到,CE通过创建第3节中介绍的融合超级指令,促进了能源开销的进一步减少。

CE是作为Tensilica可扩展RISC核心的领域特定硬件扩展而开发的。6扩展硬件采用Tensilica公司的TIE语言开发。14下一节讨论CE扩展硬件中的关键块,描述在图4

*4.1.注册文件

2D移位寄存器用于垂直和2D卷积流,并支持垂直行移位:当2D模板垂直向下移动到图像中时,一个新的像素数据行被移进来。二维移位寄存器提供对其所有元素的同时访问,使接口单元能够向alu提供任何数据元素。采用一维移位寄存器为水平卷积流提供数据。当1D模板在图像行上移动时,新的图像像素水平移动到1D寄存器中。

二维系数寄存器存储的数据不会随着模板在图像上移动而改变。这可以是过滤器系数,用于执行SAD的IME中的当前图像像素,或者Windowed Min/Max模板中心的像素。卷积运算的结果要么写入二维移位寄存器,要么写入输出寄存器。后面的一节将展示输出寄存器文件如何也作为矢量单元的矢量寄存器文件工作图4

*4.2.映射和约简逻辑

如前所述,我们将卷积抽象为地图而且减少步骤,该步骤将每个输入像素转换为输出像素。在我们的实现中,接口单元和alu一起工作来实现地图操作;接口单元根据特定映射模式的需要排列数据,功能单元执行算术。

接口单元。接口单元(IF)将来自寄存器文件的数据排列成映射操作所需的特定模式。对于二维卷积,可以从二维寄存器中同时访问多个移位的二维子块。支持2 × 2、4 × 4、8 × 8等多种块大小,并根据卷积核大小选择合适的块大小。与垂直卷积类似,可以并行访问多个2D寄存器列,并支持多个列访问大小。最后,1D IF支持从1D移位寄存器访问多个移位的1D块进行水平卷积。我们也在探索一个更广义的排列层来支持任意映射。

功能单元。由于所有的数据重排都是由接口单元处理的,所以功能单元只是一个短不动点双输入算术alu数组。除了乘数,我们还支持绝对差分,以促进SAD和其他典型的算术操作,如加减和比较。ALU的输出被馈送到Reduce阶段。

减少单位。减少的一部分使用映射-规约模式操作由可编程的减速台完成。根据我们应用程序的需要,我们目前支持算术约简阶段和逻辑约简阶段。减少的程度取决于内核的大小,例如,4 × 4 2D内核需要16比1的减少,而8锥1D内核需要8比1的减少。因此,约简阶段被实现为一个组合树,输出可以从树的多个阶段敲出。

为了创建第3节中描述的“超级指令”,我们对组合树进行了扩充,通过在树的不同级别添加对不同算术操作的支持来支持处理非交换操作。这种融合通过减少所需指令的数量和在寄存器文件中消除中间数据的临时存储来提高计算效率。因为这种更复杂的数据组合不需要是可交换的,所以必须将正确的数据(映射操作的输出)放在组合网络的每个输入上。因此,“数据洗牌阶段”也以非常灵活的混合网络的形式添加到CE中,以提供输入数据的排列。

*4.3.其他硬件

为了便于对卷积输出进行向量运算,我们增加了一个32元SIMD单元。本单元与2D输出寄存器接口,并将其用作矢量寄存器文件。该单元比典型的SIMD单元更宽,因为它操作由卷积数据路径生成的中间数据,因此不受数据内存访问的限制。尽管更宽,矢量单元仍然是轻量级的,因为它只支持基本的矢量加减法类型的操作,不支持更高成本的操作,如乘法。

因为应用程序可能执行既不符合卷积块也不符合向量单位的计算,或者可能从固定的函数实现中受益。如果设计者希望为这样的计算构建一个定制的单元,CE允许固定的功能块访问它的输出注册文件。这个模型类似于GPU,其中自定义块用于栅格化等,并与着色器核心一起工作。对于这些应用,我们创建了三个自定义功能块来计算IME和FME中的运动矢量成本以及FME中的阿达玛变换。

*4.4.资源分级

能源效率的考虑和目标应用的资源需求决定了CE内部各种资源的规模。如Hameed et al.所示,7为了分摊指令成本,对于基于8位加减操作的媒体处理应用程序,每条指令需要执行数百个ALU操作。然而,许多卷积流应用是基于更高能量的乘法运算。我们的分析表明,对于基于乘法的算法,每个指令50100个操作足以提供足够的摊销。进一步增加alu的数量会带来递减的回报,并增加保持这些单元繁忙所需的存储大小,从而增加存储面积和数据访问能量。因此,在本研究中,我们选择了一个128个ALU的ALU阵列,并相应地调整其他资源的大小,以保持这些ALU繁忙。为了提供进一步的灵活性,我们允许关闭一半的ALU阵列和计算结构。每个资源的规模和能力在表2.这些资源支持4、8和16的过滤器尺寸用于1D过滤,4 × 4、8 × 8和16 × 16的过滤器尺寸用于2D过滤。注意,为了有效地处理卷积运算中常见的边界条件,寄存器文件的大小偏离了2的幂。

*4.5.编程卷积引擎

CE被实现为处理器扩展,并向处理器ISA添加一小组指令。这些CE指令可以在需要时通过编译器内部特性在常规C代码中发出。表3列出主要的CE指令。配置指令设置内核参数,如卷积大小,在Map和reduce阶段使用的ALU操作等。然后,对每个寄存器资源进行加载和存储操作。最后,还有计算指令,分别针对三种受支持的卷积流——1D水平流、1D垂直流和2D流。例如CONVOLV_2D指令从2D和系数寄存器读取一组值,执行卷积并将结果写入2D输出寄存器的第0行。

中的代码示例清单2将所有这些整合在一起,实现一个2D 8 × 8滤波器。首先,将CE设置为在MAP阶段执行乘法,在reduce阶段执行加法,这是过滤所需的设置。然后设置卷积大小,以控制数据从寄存器馈送到alu的模式。然后将过滤器抽头系数装入系数寄存器。最后,主处理循环重复地将新的输入像素加载到2D移位寄存器中,并发出2d_卷积操作来执行过滤。虽然每次负载都读取16个新像素,但我们的128-ALU CE配置只能处理两个8 × 8的过滤操作。因此,每次迭代执行4个2d_卷积运算。为了便于演示,我们添加了一个SIMD指令,它为卷积操作产生的每个输出值加2。输出寄存器的结果被写回内存。

图5将此执行映射到CE硬件上。8 × 8系数存储在系数寄存器文件的前8行中。八行图像数据被移到2D移位寄存器的前八行。因为我们有128个功能单元,我们可以一次过滤两个8 × 8的2D位置。因此,二维接口单元生成两个移位版本的8 × 8块,它们被重新排列成一维数据,并输入到alu。功能单元对每个输入像素执行具有相应系数的元素相乘,并将输出馈送到约简阶段。减少的程度由过滤器的尺寸决定,在这种情况下是8 × 8;因此选择64:1的折减。约简阶段的两个输出被归一化并写入输出寄存器。

需要注意的是,与独立加速器不同,CE中的操作顺序完全由C代码控制,这为算法提供了完全的灵活性。例如,在上面的过滤代码中,算法可以在内存中生成一个CE输出,然后在调用CE生成另一个输出之前对该输出执行一些非CE操作。

回到顶部

5.评价

为了评估CE的效率,我们将第3节中描述的每个目标应用程序映射到由两个CE组成的芯片多处理器(CMP)上。为了量化这种可编程单元的性能和能源成本,我们还为这三个应用程序中的每一个构建了定制的异构芯片多处理器(CMP)。这些定制的cmp基于特定于应用程序的核心,每个核心都是针对应用程序所需的特定内核高度专门化的。CE和特定于应用程序的核心都是使用Tensilica的TIE语言作为处理器核心的数据路径扩展构建的。14Tensilica的TIE编译器使用该描述为每个扩展处理器配置生成仿真模型和RTL。

为了快速模拟和评估CMP配置,我们创建了一个多处理器模拟框架,该框架使用Tensilica的Xtensa建模平台(XTMP)来执行处理器和缓存的周期精确模拟。对于能量估算,我们使用Tensilica的能量探索器工具,该工具使用程序执行跟踪来给出处理器核心和存储系统的能量消耗的详细分析。预计能耗在实际耗能的30%以内。为了考虑互连能量,我们为CMP创建了一个楼层平面图,并据此估计了电线能量。然后将互连能量添加到Tensilica工具的能量估算中。仿真结果采用90 nm技术,工作电压1.1 V,目标频率450 MHz。所有单元都适当地流水线以实现频率目标。

图6而且7将所提出的CE的性能和能耗与128位数据并行(SIMD)引擎和五种相关算法的自定义加速器实现进行比较。在大多数情况下,我们使用SIMD引擎作为16路8位数据路径,但在少数示例中,我们创建了8路16位数据路径。对于我们的算法来说,使这个单元变宽并没有显著改变能源效率。

固定的功能数据点真正凸显了定制的威力:对于每个应用,定制加速器比SIMD引擎少消耗850x的能量。单位面积的性能也比SIMD实现高830倍。Demosaic实现了最小的改进(8×),因为它为从内存加载的每个像素生成两个新像素值。因此,在定制计算操作后,加载/存储和地址操作操作成为瓶颈,约占总指令的70%。

注意,最大的进步是在IME和SIFT的极值计算。两个内核都依赖于短整数加/减能量非常低的操作(相对于用于滤波和上采样)。如前所述,对于SIMD实现,相对于所做的计算量,指令开销和数据访问能量仍然很大。另一方面,自定义加速器能够利用各自内核中的并行性和数据重用,完全摊销指令和数据获取。

我们现在可以更好地理解行政长官的立场了。CE的体系结构与基于卷积算法的数据流密切匹配,因此固定函数单元与CE之间的指令流差异非常小。与SIMD实现相比,除了Demosaic的性能与面积比提高了4×外,CE的能耗减少了815×,而CE的性能与面积比提高了56×。再一次,由于大量的负载和存储,Demosaic处于收益的低端。如果我们不考虑来自Demosaic的内存操作的效果,假设它的输出被流水线传输到图像管道中的另一个类似卷积的阶段,基于ce的Demosaic大约比SIMD好7倍,比定制加速器好6倍。与自定义实现相比,更高的能量比提高了广义减少中更灵活通信的成本。

然而,就所有其他用途而言,与固定功能装置相比,CE的能源开支为适中的23倍,而面积开支仅为2倍。虽然这些日常开支很小,但为了更好地了解这些低效率的来源,图8而且9为每个应用程序创建三种不同的实现,从自定义实现,到具有灵活寄存器但计算固定的实现,再到完全灵活的CE。

数据显示,当所需的通信路径变得更加复杂时,对能源效率的影响最大。当基本计算能量较小时,这种开销更为严重。一般来说,通信路径的复杂性随着存储结构的大小而增长,因此在可编程单元中经常需要过度配置寄存器,这会损害效率。由于这种结构不仅在路由和muxing方面需要更多的逻辑,而且对泄漏能量也有直接影响,因此这种能量开销会更加严重。另一方面,更灵活的功能单位有小的管理费用,这提供了低成本的灵活性。

回到顶部

6.结论

随着专门化成为解决当前体系结构的能源限制的主要方法,人们强烈希望最大限度地利用这些专门化引擎。这反过来又使它们更加灵活,用户更容易访问。虽然灵活的专用引擎听起来有点矛盾,但我们发现,专注于广泛领域内的关键数据流和数据位置模式,可以构建高度节能的引擎,也就是说,仍然是用户可编程的。我们提出了CE,它支持许多不同的算法,从计算摄影,图像处理和视频处理,所有基于类卷积模式。单一CE设计支持具有各种大小、维度和计算类型的卷积的应用程序。为了实现能源效率,CE捕获数据重用模式,消除数据传输开销,并支持每个周期的大量操作。CE的能量和面积效率是单核加速器的23倍,在大多数应用中,与SIMD扩展的通用核相比,CE的效率提高了815倍。虽然CE只是一个单一的例子,但我们希望在其他应用领域的类似研究将带来其他高效、可编程和专门的加速器。

回到顶部

致谢

该材料基于国防高级研究计划局支持的工作,合同编号为。hr0011 - 11 - c - 0007。本材料中表达的任何意见、发现、结论或建议都是作者的观点,并不一定反映国防高级研究计划局的观点。

回到顶部

参考文献

1.Bakhoda, A., Yuan, G., Fung, W.W.L, Wong, H., Aamodt, T.M.使用详细的GPU模拟器分析CUDA工作负载。在系统和软件性能分析的IEEE国际研讨会(2009)。

2.Balfour, J., Dally, W., Black-Schaffer, D., Parikh, V., Park, J.一种用于嵌入式系统的高效处理器架构。第一版。架构师。列托人。7, 1(2007), 2932。

3.拜耳,B。彩色成像阵列。美国专利申请号3971065(1976)。

4.陈,苏耿赋。,Chien, S.-Y., Huang, Y.-W., Tsai, C.-H., Chen, C.-Y., Chen, T.-W., Chen, L.-G. Analysis and architecture design of an HDTV720p 30 frames/sec H.264/AVC encoder.IEEE反式。电路系统。视频抛光工艺。16, 6(2006), 673688。

5.Corbal, J., Valero, M., Espasa, R.在多媒体应用中开拓DLP的新水平。在第32届微建筑年度国际研讨会论文集(1999年11月),7279年。

6.冈萨雷斯(Gonzalez, R. Xtensa):一个可配置和可扩展的处理器。微IEEE 202(2000年3月),6070。

7.Hameed, R., Qadeer, W., Wachs, M., Azizi, O., Solomatnikov, A., Lee, B.C., Richardson, S., Kozyrakis, C., Horowitz, M.了解通用芯片的低效率来源。在ISCA '10:第37届计算机体系结构年度国际研讨会论文集ACM(2010)。

8.汉密尔顿,j.f.,亚当斯,J.E.单传感器彩色电子相机的自适应色彩平面插值。美国专利申请第5629734号(1997)。

9.冷,J.,吉拉尼,S.,赫瑟林顿,T.,坦托威,a.e.,金,n.s., Aamodt, t.m., Reddi, V.J. GPUWattch:在gpgpu中启用能量优化。在ISCA 2013:计算机体系结构国际研讨会(2013)。

10.来自尺度不变关键点的独特图像特征。Int。j .第一版。视觉60, 2(2004), 91110。

11.英伟达公司Tegra移动处理器。http://www.nvidia.com/object/tegra-4-processor.html

12.shaacham, O., Azizi, O., Wachs, M., Qadeer, W., Asgar, Z., Kelley, K., Stevenson, J., Solomatnikov A., Firoozshahian, A., Lee, B., Richardson, S., Horowitz, M.重新思考数字设计:为什么设计必须改变。IEEE 30微, 6(2010年11月),924。

13.斯特拉顿,J.A,罗德里格斯,C,宋,i.j。,Obeid, N., Chang, L.W., Anssari, N., Liu, G.D., Hwu, W.-M.W. Parboil: A Revised Benchmark Suite for Scientific and Commercial Throughput Computing. IMPACT Technical Report. InIMPACT-12-01, 2012年。

14.Tensilica Inc .)Tensilica指令扩展(TIE)语言参考手册。

15.德州仪器公司。OMAP 5平台。www.ti.com/omap

16.Venkatesh, G., Sampson, J., Goulding, N., Garcia, S., Bryksin, V., Lugo-Martinez, J., Swanson, S., Taylor, M.B.守恒核:减少成熟计算的能量。在ASPLOS的10ACM(2010)。

回到顶部

作者

Wajahat卡迪尔wqadeer@gmail.com),加州帕洛阿尔托。

Rehan Hameedrhameed@gmail.com),加州帕洛阿尔托。

奥弗Shachamshacham@alumni.stanford.edu),谷歌,山景城,加州。

文卡特桑Preethipreethiv@stanford.edu),英特尔公司,圣克拉拉,加州。

克里斯托Kozyrakiskozyraki@stanford.edu),斯坦福大学,斯坦福,加州。

马克·霍洛维茨horowitz@stanford.edu),斯坦福大学,斯坦福,加州。

回到顶部

脚注

这篇论文的原始版本题为“卷积引擎:平衡效率和灵活性在专业计算”,并发表在第40届计算机体系结构年度国际研讨会论文集, 2013年6月。

回到顶部

数据

F1图1。功能单位能量与典型RISC指令在90nm的比较。分摊处理器开销的策略包括每条指令执行数百个低功耗操作。

F2图2。广义约简单元将多个操作融合成一个超级指令。

F3图3。实现8 × 8 2D SAD操作,在清单1的所有四个循环中利用了并行性。引用块驻留在2D移位寄存器中,而当前块存储在2D寄存器中。因为两个寄存器都允许对8 × 8块进行二维访问,64个alu可以并行工作。为了实现更大的并行度并在水平方向上利用数据重用,移位寄存器生成多个重叠的8 × 8块对,然后通过多路复用器馈送到ALU。这些对允许并行执行128个alu,并行产生两个输出。在生成四对水平输出后,移位寄存器向上移动一个位置,以便为实现垂直数据重用的新一行搜索窗口腾出空间。

F4图4。卷积引擎框图。接口单元(IF)将寄存器文件连接到功能单元,并提供移位广播以方便卷积。数据洗牌(DS)阶段与指令图融合(IGF)阶段结合形成广义约简单元,称为复图融合单元。

F5图5。在CE上执行8 × 8的2D过滤器。灰色框表示示例中未使用的单元。

F6图6。将能耗标准化到自定义实现。

F7图7。运维/毫米2标准化自定义实现:1秒内每个核心进程的图像块数,除以核心的面积。对于H.264,图像块是一个16 × 16的宏块,而对于SIFT和Demosaic则是一个64 × 64的图像块。

F8图8。随着可编程性逐渐添加到核心,能源消耗的变化。

F9图9。随着可编程性逐渐添加到核心,增加了区域。

UF1清单1。二维8 × 8和的绝对差分运算(SAD),常用在H.264运动估计中。

UF2清单2。示例C代码实现了垂直图像条纹的8 × 8 2D滤波器,并在每个输出中添加2。

回到顶部

T1表1。映射内核到卷积抽象。

T2表2。CE中各种资源的大小。

T3表3。主要指令添加到处理器ISA。

回到顶部


©2015 0001 - 0782/15/04 ACM

允许为个人或课堂使用部分或全部作品制作数字或硬拷贝,但不得为盈利或商业利益而复制或分发,且副本在首页上附有本通知和完整的引用。除ACM外,本作品的其他组件的版权必须受到尊重。允许有信用的文摘。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,都需要事先获得特定的许可和/或费用。请求发布的权限permissions@acm.org传真(212)869-0481。

数字图书馆是由计算机协会出版的。版权所有©2015 ACM, Inc.


评论


马塞尔研究

这个计划是蓝图。建设是编译的过程。


显示1评论

Baidu
map