查看原文
其他

追求极限性能的芯片设计方法(一)

2017-06-03 吴臻志 StarryHeavensAbove

当今,芯片竞争的核心是性能。尤其在专用处理器和加速器设计领域,性能的互比拼非常激烈,甚至成为国际级别的刷分大赛。通常,国际高水平发物(如ISSCC)会公布出最新的“刷分结果”, 例如图1所示的一个有关CNN加速芯片的性能比拼结果。刷分结果并不代表绝对优势,但也成为设计是否能够被公认为好的设计的一个尺度。但从参考文献中获取的benchmark并不具有完全的可比性,因为每个设计都有自己的特殊之处。本文希望读者能够跳出“互刷分”的思维模式,从极限设计的角度出发,得出理论上尽可能好的设计。

本文首先给出目前性能的评估尺度及关系,之后讲述在这些关系的权衡中,如何采用归一化的尺度将众多指标归结为一个或几个重要的指标,再对这些指标进行极限突破,得到尽可能好的设计。本文仅考虑时序驱动的数字电路,尤其是高性能加速器和专用处理器的设计。而本文的目的就是阐述一个操作性较强的极限量化芯片设计方法。


图1. 在ISSCC2017会议上公布的一个“刷分”报告

ISSCC2017 Deep-Learning Processors文章学习 (一)


本文共分四大部分部分:

(1)数字逻辑芯片的性能指标;

(2)指标之间的制衡关系与权衡方法;

(3)极限量化设计方法;

(4)未达到最优性能的原因排查与分析。


本文主要介绍前两个部分。

性能指标有哪些

我们在评判一个芯片架构优劣的时候,主要需要考虑如下一些指标, 如图2所示:

图2. 数字电路性能指标的收集

a.单项标准(桔色部分)

(1).功耗:静态功耗, 动态功耗;

(2).能耗:处理完一个任务所花的能量;

(2).吞吐量:如通信基带bps, 图像images per second;

(3).硅片面积开销:mm2 @ technology;

(4).延迟:输入和输出之间的时间差。对于实时系统而言,延迟非常关键;

(5).有效计算能力:在执行某个计算时,每秒计算操作数的总和;

(6).峰值计算能力:芯片结构中每秒计算操作数的总和;

(7).时钟频率:可调的时钟频率/电压,峰值时钟频率;

(8).量化精度:输入/输出/中间各级处理的数据量化宽度。

b.归一化标准(紫色部分)

由于指标之间的制衡性,一个预期指标增高,可能导致其余不期望的指标也增高,因此需要通过归一化尺度进行衡量。这往往和芯片的应用有关,例如:对功耗归一化的计算能力(TOPS/W);对能量归一化的吞吐量,或吞吐量对能量的归一化(nJ/image, nJ/bit);对时钟频率归一化的计算能力(GOPS/MHz)等。这涉及到这些参数之间的制衡关系,待会将阐述这些关系。

c. 综合结果(浅蓝部分)

在进行前期评估或分项评估时,综合工具给出的一些综合关键指标。这些指标基于网表,因此不包括连线,只能用于初期芯片代价评估。包括:组合逻辑资源开销,非组合逻辑资源开销(主要是触发器),黑箱器件开销(如RAM),组合逻辑开销也可以用等效门数量衡量。区别是组合逻辑开销是工艺器件库相关的,而等效门数量是工艺库无关的。

 d.内存相关(深蓝部分)

内存往往以黑箱形式表示。内存片个数,每个内存片的容量、深度、宽度。是双口还是单口(双口的尺寸比单口多大概一倍),对于小于1KB的小规模的内存,或者读写端口多的内存,往往采用寄存器堆(Register File)实现,主要考察寄存器堆的尺寸。需要更小的内存或者需要复杂读写接口的存储装置时,一般选择直接用寄存器阵列搭建。寄存器阵列和寄存器堆的实现区别是,寄存器堆往往需要采用专用的编译器实现,而寄存器阵列直接采用硬件描述语言实现。寄存器堆的面积会远小于等价功能的寄存器阵列。

 e. 接口和总线相关(灰色部分)

首先是芯片提供的外部接口种类是否满足要求,如高速的SerDes接口,USB接口,DDR接口等。其次是接口的数据传输带宽,接口的电气规范。总线位于芯片内部,主要需要关心总线类型(2D-mesh片上网络,AMBA等),总线传输模式(包交换,电路交换)和传输性能。

 f. 工艺节点(青色部分)

包括采用的工艺库,布线层数,工作电压,低功耗还是高性能工艺等等。

 g. 设计成本和特殊功能(粉色部分)

首先是芯片的支持域,是否支持所期望的功能,是高效率的支持,还是弱支持(效率不高但是可用),如果需要进行算法裁减和低复杂度处理,那么算法性能下降的程度是否可以接受?其次是可配置性和可编程能力。也即灵活度。

对于工程研发,还需要考虑软件/应用的开发成本,映射新算法的能力。上市周期(TTM),不可返还工程开销(NRE)等等。

有些芯片往往在其他方面具有优势,例如启动时间优化,非易失,无风扇需求(小于4W)。动态电压频率调节,门控时钟等的功能。


指标之间的权衡关系

可以说鱼与熊掌不可兼得,一些指标的提高可能要以另一些指标的降低作为代价。那么如前所述,有这么多的性能尺度,如何建立他们之间的权衡关系呢?我们必须确定设计的主要追求是什么。多维方向图可以用于确定指标取舍,如图3所示。

图3. 指标的选择与权衡

为了阐述这张图中变量的制约关系,首先,我们从简单的制衡关系入手:

(1) 并行度= 操作数/时钟 (L = OP/Clk) = Operations per clk,即每个时钟周期下的运算操作数量,由于流水线的存在,因此时钟周期可以认为是等效时钟周期。通常表示硬件上有多少有效处理单元。

(2) 峰值计算能力 = 并行度 * 时钟频率(C = L * Clk/s) = Operations/second;

(3) 效率(e)= 有效计算个数/峰值计算个数 = Operations/Operations,因任务不同而不同;

(4) 有效计算能力 = 峰值计算能力 * 效率 = (Ce = C * e) =Operations/second,代表执行某个任务的实际计算能力;

(5) 面积开销 = 并行度* 单个运算单元的面积 = (A = L * a)= mm2

(6) 运算量 = 操作数量 /任务数量= (Q = OP/Task)= OP/Task,即单个任务的操作数量;

(7) 峰值(理论)吞吐量 = 峰值计算能力/运算量 = (O = C / Q)= Tasks/s;

(8) 吞吐量 = 有效计算能力 / 运算量= (O = Ce / Q)=Tasks/s;

(9) 负载量 (W) = 单位时间内的任务个数(Tasks/s),是需求,负载量小于吞吐量时系统可用。

(10) 总处理时间(T) = 单任务处理时间(T/task)* 任务数量(Tasks);

(11) 能耗 = 功耗 * 总处理时间(E = P * T);

(12) 功耗 = 动态功耗 + 静态功耗+ 短路电流功耗 (P = Pdyn + Psta + Psc);

(13) 总处理时间(T) = Tasks * 每任务的处理时间(t)。 其中Tasks定义为小任务的数量,例如通信中的成功传输的比特数,或者图像识别中的图像数等等。


各类设计的主要准则

a. 高吞吐设计

提高吞吐量,主要靠提升并行度,提升效率,提升时钟频率。

并行吞吐原理:其它条件一定情形下,并行度与峰值吞吐量成正比,但是有效吞吐量要根据效率决定,效率的降低来源于各类依赖关系,影响的因素很多,下文将逐一阐述。

Amadahl law:当一段代码存在哪怕很少的串行任务时,提升并行度并不能实现等比例的性能提升,而是会趋于饱和。

同步木桶效应:当系统具备多个并行模块时,其同步会影响效率。系统的性能受限于最晚的同步通信到达时间。

主频调节原理:其它条件一定的情形下,主频越高,吞吐量越大。主频越高,每个流水级的运算就越少,时序收敛困难度越高。为了保证时序收敛,综合器综合出的组合逻辑一定程度增大,寄存器数增多,时序逻辑增大。另外,动态功耗也越高。


b. 面积节省设计

如果开销允许,可以采用更先进的工艺技术节点。这是最直接且见效明显的面积节省方法。在工艺确定的情况下,在负载量一定的情况下,追求面积节省设计,在数据通路上,主要靠增加折叠(并行改串行),提升主频,往往串行系统效率高于并行系统,数据同步开销降低,因而一定程度上可以提升效率。在存储上,尽量采用内存编译器生成的寄存器堆/RAM而不是语言描述的寄存器阵列,采用少数量的内存片,尽量采用单口RAM。在量化上,尽量采用低精度。在算法上,尽量摒弃复杂算子。另外,通过关键路径的优化,时序约束放宽可以一定程度上降低综合器的收敛压力,降低组合逻辑面积开销。在任务量确定,任务处理时间可调情况下,可以适当延长处理时间降低负载量,从而降低面积开销。


面积开销 = 数据通路面积开销+控制逻辑面积开销+存储逻辑面积开销+接口等其它开销

面积开销 =(组合逻辑面积开销+时序逻辑面积开销+黑箱面积开销)/布线密度 * 版图scaling


折叠打开原理:并行度与数据通路面积开销成正比。因此降低并行度,通过并行转串行,可以节省数据通路面积开销。折叠足够多时,控制逻辑复杂化的影响需要被考虑。例如处理器的控制逻辑占用了很大的面积。

工艺缩放原理:工艺尺寸缩放比例的平方是面积缩放比例。


c.  低功耗设计

单个晶体管的功耗可以通过如下公式计算:


其中动态功耗,与电压和频率有关。静态功耗为

,与泄漏电流和电压有关。为短路电流,与短路电流能量有关,一般可以控制在很小的比例内,因此可以忽略。


追求低功耗,主要靠在能满足负载要求情况下实现降频降压,降低并行度,降低内存(Cache)用量。采用power gating技术可降低泄漏功耗。采用clock gating技术可以显著降低动态功耗,对泄露功耗稍有贡献。在动态负载下,采用动态电压频率调节技术(DVFS)降低实时功耗。算法上,采用低精度数据,规避复杂运算可以有效降低功耗。采用更先进的工艺节点,采用低功耗工艺库也对功耗降低具有明显作用。

 

并行功耗原理:其它条件一定情形下,并行度与动态功耗成正比 L∝Pdyn

主频功耗原理:其它条件一定情形下,功耗与时钟主频成正比P∝Fclk

电压功耗原理:其它条件一定情形下,功耗与电压的平方成正比P∝V2,但降压必须降频。


d.  复合设计

在实际的设计中,往往需要权衡多个指标综合考评。此时理解这些指标之间的制衡关系非常重要。这些变量中,存在着一个核心的制衡关系:

时钟主频 * 并行度 * 效率 = 有效计算能力 ∝ 吞吐量 

并行度与数据通路的面积开销具有很强的正相关关系。因此在数据通路面积开销主导的系统中,可以用面积代替并行度。计算能力与吞吐量也呈正相关关系,因此有: 

时钟主频 * 硅片面积 * 效率 * 常数 ≈ 有效计算能力

动态功耗与时钟主频和面积都有正相关性,静态功耗与面积具有正相关性,因此增加时钟主频和面积,都会增加功耗。但是功效是功耗对计算能力的归一化,增加时钟主频或者硅片面积,并不能增加功效(甚至会减少)。而功效与效率e更相关。因此提升功效的途径是提升效率e。能效和功效呈正比关系,能效作为计算能力对任务作了归一化的能量指标,具有很强的互对比能力,例如很多通信芯片的性能能效指标为nJ/bit,深度学习推理效能nJ/pred或者nJ/image。

综上所述,指标之间的相互制衡关系如图4所示。


图4. 复合设计中各个变量之间的制衡关系

从公式“时钟主频*硅片面积*效率*常数≈有效计算能力”中,我们可以得到如下结论:

在计算能力需求(GOPS)一定的情况下,时钟主频和硅片面积可以二选其一。虽然增大面积和提升主频都会导致动态功耗的增高,在并行度不高的情况下,采用更大的面积(提升并行)可能优于提升时钟主频。提升主频往往在1GHz以内具有意义,更高的主频对设计会带来很多挑战,同时需要更高的工作电压支持,导致功耗的明显增高。然而,需要注意的是,提升并行度往往会导致效率e的降低。这包括了各种冲突和同步开销。因此实现一个大并行度的高吞吐量系统并不一定容易。

总之,在工艺确定情形下,如果需要一个高吞吐的数字电路系统,那么面积开销或时钟主频就会较高。如果需要面积节省设计,那么计算能力就会降低,或者时钟主频就需要提高。如果需要低功耗,那么就需要更低的时钟主频和更小的硅片面积,因此计算能力就会受限。而这些关系中,一个最大的可调因素是效率。因此如何提升效率是获得一个性能优异、高能效的系统的关键。在一个芯片的早期设计中,我们无法预估计功耗、能效,但是我们可以计算效率e,我们称之为早期可预测的归一化性能。我们定义归一化性能为:

E ≈ 计算能力 /(时钟主频 * 硅片面积)

即计算能力(GOPS)对主频(MHz)和面积(mm2)的归一化。下文将阐述基于此的归一化极限量化设计技术,用于构建具有高能效的系统。

 

e.  高灵活度设计

最后需要阐述一下高灵活度。可重配置硬件往往需要支持多种工作模式或者工作参数,处理器往往支持更高的灵活性,即可编程性。可重配置性和可编程性归根都是需要对原先的专用电路增加一些冗余,用以提升灵活度。因此灵活度和归一化性能是一对矛盾,如果需要具有更高的灵活度,硬件的开销就会更大。

 

最后一个问题是:我们采用ASIC到底能比通用处理器到底能加速多少

回答是由应用而定,目前没有统一的结论。实际上ASIC的极限性能是确定的,但普通处理器的效率并不一致。采用恰当的ASIC设计,在微性能损失下有很多时候可以达到普通x86处理器或GPU千倍以上的吞吐量或千分之一以下的功耗,使得ASIC可以应对各种高速低功耗的场合。ASIC设计相比于FPGA设计,一般会有多于一个数量级的功耗优势。


总  结

本文是有关芯片指标关系和权衡方法的概述,可给予读者有关芯片的初期设计,评测,芯片选型,芯片优化提供一定程度的参考。由于芯片种类繁多,希望这些基础知识能起到一定的借鉴作用。欢迎各位同行对本文提出评论意见。后续文章将阐述设计数字电路的核心问题:追求极限性能指标的设计方法学。


作者简介

吴臻志博士,清华大学类脑计算研究中心助理研究员。专长通信基带专用处理器和信道译码加速器设计,神经网络和神经形态芯片设计。邮件:wuzhenzhi@gmail.com

同行及朋友可加微信:zhenzhi-wu



题图来自网络,版权归原作者所有

推荐阅读  

AI芯片架构的争论真有意义吗?

ISSCC2017 Deep-Learning Processors导读文章汇总

专用处理器设计方法&工具

从Nvidia开源深度学习加速器说起

Nvidia Volta - 架构看点

AI会给芯片设计带来什么?

如何做神经网络处理器的需求分析?

深度神经网络的模型·硬件联合优化

脉动阵列 - 因Google TPU获得新生

长按二维码关注

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存