第一章:硬件/软件接口

一、课程基础信息

1.1 参考教材

  1. 《计算机组成与设计:硬件/软件接口(RISC-V版)》- John L. Hennessy & David A. Patterson
  2. 《通用图形处理器设计——GPGPU编程模型与架构原理》- 景乃锋、柯晶、梁晓峣 编著,清华大学出版社

1.2 评分规则

项目 占比 说明
期末考试 40-50% 核心理论考核
项目/报告 30-40% 核心任务:实现一个RISC-V处理器,细节后续公布
课后作业 20-30% 提交周期为一周

1.3 课程核心目标

理解高级语言程序(C/Java/Python)如何翻译为机器语言、硬件如何执行程序、软硬件接口的本质,以及CPU、GPGPU、AI NPU的核心工作原理。


二、零基础前置核心铺垫(课件28页前精简内容)

这部分是理解后续性能知识的必备基础,仅保留核心概念。

  1. 冯·诺依曼架构核心:二进制、存储程序计算机,包含运算器(ALU)、控制器、存储器、输入设备、输出设备五大核心组件。
  2. 程序翻译链路:高级语言 → 编译器 → 汇编语言 → 汇编器 → 二进制机器语言(硬件可直接执行)。
  3. 软硬件抽象层级(从顶到底):应用→算法→软件/编程语言→操作系统→指令集体系结构(ISA)→微体系结构→功能部件→电路→器件。
  4. ISA核心定义:软硬件之间的核心接口,是程序员编写可正确执行的二进制程序所需了解的处理器全部属性;同一ISA可对应多种硬件实现(微体系结构),如x86有Intel/AMD实现,RISC-V是课程核心的开源ISA。
  5. CPU核心组成:数据通路(执行数据运算)、控制器(调度硬件操作)、高速缓存(Cache)。

三、核心重点内容(课件28页及以后)

3.1 性能的核心定义

性能没有唯一的“最优标准”,完全取决于应用场景,核心分为两大维度:

指标 专业定义 通俗理解
响应时间(Response Time) 完成单个任务所花费的总时间,也叫执行时间、延迟 点击软件到完全加载完成的耗时,决定单任务的使用体验
吞吐量(Throughput) 单位时间内完成的总工作量 服务器1小时处理的用户请求数,决定系统的整体处理能力

关键场景结论

  • 更换更快的处理器:同时缩短响应时间、提升吞吐量
  • 增加处理器核心数量:主要提升吞吐量,单任务响应时间的提升依赖并行编程优化

本课程核心聚焦:响应时间(执行时间),这是衡量单个程序性能的黄金标准。


3.2 执行时间的两类度量

  1. 总耗时(Elapsed Time)
    • 定义:完成任务的完整响应时间,包含CPU计算、I/O操作、操作系统开销、空闲等待的全部时间
    • 作用:决定系统的实际使用体验
  2. CPU时间(CPU Time)
    • 定义:CPU真正用于处理该任务的时间,扣除了I/O等待、其他程序占用的时间
    • 细分:用户CPU时间(程序本身的计算)+ 系统CPU时间(操作系统为程序提供的服务耗时)
    • 特点:不同程序对CPU性能的敏感度差异极大

3.3 CPU时钟与周期基础

数字硬件的所有操作都由恒定频率的时钟同步驱动,是CPU执行指令的时间基准:

术语 定义 核心关系与示例
时钟周期(Clock Period) 一个时钟脉冲的持续时间,CPU最小的时间单位 与时钟频率互为倒数
示例:4.0GHz主频对应时钟周期=0.25ns=250ps
时钟频率(主频/Clock Rate) 单位时间内的时钟周期数 单位:Hz、MHz、GHz
示例:4.0GHz = 4.0×10⁹Hz

3.4 CPU性能核心公式(重中之重,必须掌握)

这是计算机架构最核心的公式,所有性能优化都围绕该公式展开。

基础公式

\[CPU\ 执行时间 = CPU\ 时钟周期数 × 时钟周期时间\]
\[CPU\ 执行时间 = \frac{CPU\ 时钟周期数}{时钟频率}\]

完整拆解公式

时钟周期数可进一步拆解为「指令总数 × 单指令平均时钟周期数」,最终得到完整公式:

\[CPU\ 执行时间 = 指令总数(IC) × CPI × 时钟周期时间\]
\[CPU\ 执行时间 = \frac{指令总数(IC) × CPI}{时钟频率}\]

术语零基础解释

  • 指令总数(IC):程序运行过程中,CPU需要执行的机器指令总条数
  • CPI(Cycles Per Instruction):每条指令执行平均需要的时钟周期数,CPI越小,指令执行效率越高
  • 时钟周期时间:单个时钟周期的时长,和主频成反比,主频越高,单周期时间越短

性能优化三大核心方向

  1. 减少程序的指令总数IC
  2. 降低指令的平均CPI
  3. 提高CPU的时钟频率(缩短时钟周期时间)

设计权衡:硬件设计中,主频和CPI往往需要取舍——提升主频可能增加单指令周期数,降低主频可能减少CPI,需综合优化。


3.5 加权平均CPI详解

实际场景中,不同类型指令的时钟周期数差异极大(如加法1个周期,访存10个周期),需通过加权平均计算整体CPI。

总时钟周期数公式

\[总时钟周期数 = \sum_{i=1}^{n} (CPI_i × 指令数_i)\]

含义:每类指令的CPI × 该类指令的执行数量,全部相加得到总时钟周期数。

加权平均CPI公式

\[CPI = \frac{总时钟周期数}{总指令数} = \sum_{i=1}^{n} (CPI_i × \frac{指令数_i}{总指令数})\]

含义:每类指令的CPI × 该类指令在总指令中的占比,相加得到平均CPI;占比越高的指令,对整体CPI的影响越大。


3.6 功耗趋势与功率墙

3.6.1 CMOS芯片核心功耗公式

现代CPU均采用CMOS集成电路,功耗的核心计算公式为:

\[功耗 ∝ 电容负载 × 电压² × 时钟频率\]
  • 核心结论:电压对功耗的影响是平方级的,是功耗最核心的影响因素;电容负载与晶体管数量正相关。

3.6.2 功耗优化示例

课件示例:新CPU相比旧CPU,电容负载降至85%,电压降低15%,频率降低15%,功耗变化为:

\[P_{新} = \frac{C_{旧}×0.85 × (V_{旧}×0.85)² × F_{旧}×0.85}{C_{旧}×V_{旧}²×F_{旧}} = 0.85^4 ≈ 0.52\]

结论:新CPU功耗仅为旧CPU的52%,其中电压降低的贡献最大。

3.6.3 功率墙(Power Wall)

这是现代CPU设计的核心瓶颈:

  • 工作电压已无法再降低(受半导体物理极限限制)
  • 芯片散热能力达到上限,无法散去更高功耗
  • 最终结果:无法再通过单纯提升主频来提高性能,必须寻找新的技术路径。

3.7 单处理器性能瓶颈

单核心处理器的性能增长已接近停滞,不同阶段的年增长率差异极大:

  • 1978-1986年:年增长约25%
  • 1986-2003年:年增长约52%(主频+指令级并行的黄金时代)
  • 2003-2010年:年增长降至12%
  • 2010年至今:年增长仅约3.5%

核心限制因素:功率墙、指令级并行上限、内存访问延迟瓶颈。


3.8 多核处理器的架构变革

为突破单核心性能瓶颈,行业全面转向多核/多处理器架构,这是计算机架构的重大变革。

核心定义

多核微处理器:在单个芯片上集成多个独立的处理器核心(Core),不再靠单核主频提升,而是通过并行计算提升整体性能。

核心特点与挑战

  1. 必须显式并行编程
    • 指令级并行:硬件自动实现,对程序员透明,无需修改代码
    • 多核并行:必须由程序员手动编写并行代码,硬件无法自动完成
  2. 并行编程核心难点:负载均衡(任务均匀分配给核心)、通信与同步开销优化(避免并行额外开销抵消性能收益)。

3.9 SPEC标准化性能基准测试

客观衡量处理器性能,必须使用标准化的基准测试程序,行业最权威的是SPEC(标准性能评估机构) 制定的测试集。

3.9.1 SPEC CPU基准测试

  • 用途:行业通用的CPU计算性能衡量标准
  • 主流版本:SPEC CPU2006、SPEC CPU2017
  • 测试方法:运行覆盖真实工作负载的标准程序,记录完整执行时间,相对于参考机器归一化,最终以几何均值给出综合性能评分。

3.9.2 SPEC Power基准测试

  • 用途:衡量服务器不同负载下的功耗效率(性能/功耗比),是数据中心核心关注指标
  • 核心指标:整体ssj_ops per Watt = 总性能之和 / 总功耗之和
  • 测试方法:测试0%-100%负载(每10%一个梯度)下的性能与平均功耗,计算综合功耗效率。

3.10 经典性能谬误

错误认知:只关注处理器空闲时的低功耗就足够了。

  • 实际数据:i7处理器100%负载功耗258W,50%负载功耗170W(66%满载功耗),10%负载功耗121W(47%满载功耗)
  • 真实场景:谷歌数据中心服务器大部分时间运行在10%-50%负载,仅不到1%的时间跑满100%负载
  • 正确结论:必须设计功耗与负载成正比的处理器,才能在真实场景中实现最优功耗效率。



Enjoy Reading This Article?

Here are some more articles you might like to read next: