基本概念
Foundations
自顶向下,计算机可以分为几个层次:
- 软件应用:它们规定计算机如何表达并完成某个具体工作,如 OS,编译器等。
- 指令集架构(Instruction Set Architecture,ISA):它们规定软件可见的机器行为是什么,如指令,寄存器,寻址,异常等。
- 微架构(Microarchitecture):它们规定硬件如何实现机器行为,如流水线,cache,分支预测等。
- 技术(Techonology):它们规定实现硬件的物理条件,如晶体管,连线,存储工艺,封装等。
本科期间我接触的主要是最顶层,而现在我则尝试转向最底层(技术映射 technology mapping 就是 EDA 中的一个重要环节),对于其他层次,我的掌握是很不够的。
架构设计是一个非常复杂的多优化问题,它的优化目标包括正确性,可靠性,安全性,性能,通用性,能耗等等。与此同时,不同的工作负载(往往受上层影响)和约束(往往受下层影响)也需纳入考量。
在整个架构发展史上,有这么几条路线。
集成 Integration。比如说所谓的微处理器 microprocessors,实际上就是把原来分散在多颗芯片上的处理功能集成到一颗芯片上,减少跨芯片通信和制造成本。
并行 Parallelism。可说算 Evan 组的一大方向吧。并行可以分为两类:
- 显式并行(explicit parallelism):即并行通过软件显式地表达。隐式并行(implicit parallelism):即并行通过硬件隐式地发掘。
- 指令级并行(instruction-level parallelism, ILP)主要是隐式,硬件发掘指令流中的并行机会,如多发射,乱序执行等;线程级并行(thread-level parallelism, TLP)主要是显式,在软件中表达,如多线程编程;数据级并行(data-level parallelism, DLP),如 SIMD,向量运算。
专用化 Specialization。针对特定任务设计架构,提高效率。
Technology
最基础的技术元件:MOSFET。
电路时序
时序(timing)。
电路通常是同步设计(synchronous design)的,通过时钟(clock)协调。同步电路用寄存器保存状态,用组合逻辑计算下一状态。
在一个周期内:时钟沿之后,数据从前级寄存器的输出端出现,经过组合逻辑,在下一个时钟沿之前必须稳定,以便后级寄存器采样并更新保存的数据。电路中所有寄存器之间最慢的组合逻辑路径,被称为 critical path。时钟周期至少要覆盖这条路径的延迟:
一条路径的延迟主要由逻辑门的传播延迟与连线延迟组成
前者,门延迟指的是输入变化传播到输出所需的时间。晶体管的电阻为
后者,连线延迟指的是信号经过连线所需的时间。对于固定材料、横截面和周围环境的连线,有
可以在长连线中增加中继器 repeater。若忽略中继器的延迟,把长连线分为
另外一个改善连线延迟的方法是高带宽通信局部化(keep high-bandwidth communication local)。
电路能耗与功耗
电路的能耗(energy)与功耗(power)与供电,散热等因素密切相关。它们的关系如下:
总功耗可粗略分成:
动态功耗主要来自的晶体管翻转过程。器件数量为
静态功耗则来自晶体管的漏电(leakage)。阈值电压
一些优化功耗的尝试。
降电压
降频率
Clock gating。阻止时钟沿进入闲置模块。这能减少动态功耗,但不影响静态功耗(这些模块仍然连接着电源,所以会漏电)。
Power gating。切断闲置模块的供电。这能有效减少功耗,但这些模块重新工作时需要恢复供电,等待稳定,必要时还要恢复状态。
Dual
同时降电压和频率。比如同时把电压与频率降低一半,功耗会变为原来的
动态电压频率调整(dynamic voltage frequency scaling, DVFS)。OS 可以根据负载情况调整电压与频率。急需完成计算时,使用较高频率和所需电压;负载较轻时,降低频率与电压;模块闲置时还可配合 clock 与 power gating。
电路制造
在芯片上雕刻晶体管!
芯片的制造成本包括固定成本(fixed cost)与单位成本(unit cost)。
前者包括设计、验证、掩膜和制造设施等投入,工艺越复杂,相关投入就越高。固定成本通过出货量摊销。后者则包括晶圆制造、封装与测试等,以每平方毫米的投入为单位。
芯片的制造需要从圆形的晶圆(wafer)上切出裸晶片(die)。裸晶片的良率 die yield 描述了一个晶圆切出的 die 中可用的比例。在缺陷密度相近时,面积较大的 die 更容易覆盖到缺陷,且每片晶圆上能切出的 die 的数量更少。
似乎这也鼓励我们走向多核。一方面,多核可以降低单位成本:它比同样面积的单核有更高的良率,因为假如某个核出现了缺陷,我们可以将其关闭,以较低的价格售出剩下的核。另一方面,多核可以降低固定成本中的设计成本,因为其中有很多可复用的设计。
另外一个概念是芯粒(chiplet):将原本集中在一整块 die 上的功能拆分到多个较小的 die 中,再通过高速互连集成到同一封装内。与多核原理相同,它也能提高良率,降低成本。但要注意 chiplet 与核这两个东西概念上的区别:核是执行指令的计算单元,而 chiplet 是制造与封装中的物理组成单元,一个 chiplet 可以包含多个核。
摩尔定律
大名鼎鼎的摩尔定律(Moore's Law)描述了集成电路上的晶体管数量随时间快速增长的经验趋势,常见表述是大约每两年翻倍。技术缩放 technology scaling 致力于缩小器件的尺寸,长期以来是支持这一趋势的重要手段。
摩尔定律带来了以下几个影响。
首先是,晶体管的数量大大增加,单个晶体管的成本下降了。如何利用数量庞大的晶体管持续提升处理器的性能成了架构师面临的一个重要设计问题。
其次,RC delay 也降低了。这是因为降低栅极长度(gate length)能有效减少门延迟。但现在栅极的长度已经很难再继续降下去了。并且,连线延迟没有同步改善。
摩尔定律对制造成本的影响是混合的。总的来说,单位成本有升(复杂化使得良率降低)有降(单位面积的性能与功能都更好),但固定成本看来是上升了。
最后就是功耗与能耗了。Dennard Scaling 发现,在理想恒定电场缩放中,尺寸和电压共同减小,使器件更密、更快,但功率密度 大致不变。但是,Dennard Scaling 带来的收益开始被电压限制了。电压一直无法按理想比例降低,使得每个晶体管的功耗无法有效降低,由此带来的是功率密度的增加,从而更容易升温。与此相关的一个现象是 dark silicon:晶体管无法全部同时以最高频率运行。
现在怎样了?摩尔定律正在越来越接近它的物理/经济/技术极限。在此之前,还有这些能做的:
- 怎样继续扩大集成规模?=> die stacking, chiplets, wafer-scale computing
- 怎样更好的利用这么多的晶体管?=> 并行,专用化
- 怎样缓解 memory wall?(逻辑速度越来越快,但 memory 与 cross-chip wire 的速度没跟上)=> 缓存,near-data computing,局部通信
Performance
如何评价一个架构的表现?
性能:两个考量
延迟 delay,或执行时间 execution time:完成单个任务所需的时间
吞吐量 throughput,或带宽 bandwidth:单位时间完成的任务数
在不同的场景下,这两个考量可能会有完全不同的重要性。比如,对于某个用户而言,他可能关心的是 delay;而对某个需要处理大量请求的服务器而言,throughput 是一个更好的评估。
统计:三种平均
在 benchmark 上评估一个系统的性能,有这三种平均:
算术平均 arithmetic mean:
调和平均 harmonic mean:
几何平均 geometric mean:
性能铁律
也就是说,程序执行的时间
如果只考虑后面两项,有
本节课中我们主要关注优化