Chap 1: Computer Abstractions and Technology
约 1212 个字 7 张图片 预计阅读时间 4 分钟
1. ~~Eight~~ Seven Great Idea
- ~~设计紧跟摩尔定律(Design for Moore's Law)~~
- ~~意义:预测设计完成时的工艺水平,而不是设计开始时的工艺水平~~
- ~~摩尔定律:18-24 个月内集成电路的性能就会翻一番~~ (目前好像被打破了)
- 采用抽象简化设计 (Use abstraction to simplify design)
- 加速经常性事件 (Make the common case fast)
- 通过并行提高性能 (Performance via parallelism)
- 通过流水线提高性能 (Performance via pipelining)
- 通过预测提高性能 (Performance via prediction)
- 存储器分层(Hierarchy of memories)
- 速度快、容量小、价格昂贵的位于顶层
- 速度慢、容量大、价格便宜的位于底层
- 通过冗余提高可靠性 (Dependability via redundancy)
2. Computer Organization


硬件的组成部分:
- 输入设备
- 输出设备
- CPU(位于主板 (logical board))
- 控制器 (controler):根据程序指令来控制数据通路、内存和 I/O 设备
- 数据通路 (datapath):执行算术运算
- 内存:由 DRAM 芯片组成。
- 主存 (main memory):易失性 (volatile)
- 外存 (secondary memory):非易失性 (nonvolatile)
- 磁盘 (magnetic disk)
- 闪存 (flash memory)
Tip
- 内存用的是 DRAM(Dynamic Random Access Memory, 动态随机访问存储器)
- CPU 内部是高速缓存 (Cache Memory) ,使用 SRAM (Static Random Access Memory, 静态随机访问存储器),功能上作为大而慢的存储器的缓冲
- 辅存储:非易失性半导体存储(比DRAM慢,但便宜很多)
- 计算机指令系统体系结构(或简称体系结构,architecture):硬件和底层软件的接口
3. Performance
3.1 性能/执行时间
衡量计算机性能的指标:
- 响应时间/执行时间(response time/execution time):执行任务所需的时间
- 吞吐率(throughput/bandwidth):单位时间内完成的工作量
注:我们目前仅考虑响应时间(吞吐率会在介绍流水线CPU的时候提到)
-
性能 = 1 / 执行时间,即\(\text{Performance}_X = \dfrac{1}{\text{Execution time}_X}\)
-
X 的性能比 Y 快 n 倍:\(\dfrac{\rm{Performance}_X}{\rm{Performance}_Y} = \dfrac{\rm{Executino\ time}_Y}{\rm{Execution\ time}_X} = n\)

3.2 CPU 时间
执行时间的测量:
- 运行时间(elapsed/wall clock/response time):完成任务的总耗时,包括磁盘和内存的访问、I/O活动等,它反映了系统的性能
- CPU时间:CPU execution time, 只表示在CPU上花费的时间,而不包括等待I/O和运行其他程序的时间,包括:
- 用户CPU时间(user CPU Time, 程序运行耗时)
- 系统CPU时间(system CPU Time, 执行与该程序相关的操作系统任务的耗时)
区分 【用户CPU时间】和【系统CPU时间】是困难的,因此用:
- 系统性能(system performance):表示空载系统的响应时间
- CPU性能(CPU performance):表示用户CPU时间
计算CPU时间:为了方便,使用 clock cycle 来计算:
CPU时间与CPU周期(clock cycle)/CPU频率(clock rate) 的关系:
由此,我们可以得出性能提升的方法:
- 降低CPU周期数(CPU clock cycle)
- 提升CPU频率(CPU rate)
- 但是改善其中的一个属性,就有可能会拉低另一个属性,所以需要权衡好两者

Answer


3.3 指令性能
周期数的计算公式:
-
指令数(instruction count, IC):取决于指令集架构,而非具体的实现方式
注:如果题目说这几个处理器的指令集架构是一样的,这就说明它们的指令数也是一样的。
-
CPI(clock cycles per instruction):每条指令的平均周期数,它的大小取决于很多的设计细节,包括内存系统、处理器结构等
- 不同的指令类别(比如RISC-V的R型指令、I型指令等等)会产生不同的CPI,如果CPU执行多种类型的指令,上面的公式需要修改为以下加权形式:

- 加权平均 CPI
总结:
1. 公式:
$$
\mathrm{CPU\ Time} = \dfrac{\mathrm{Seconds}}{\mathrm{Program}} = \dfrac{\mathrm{Instructions}}{\mathrm{Program}} \times \dfrac{\mathrm{Clock\ cycles}}{\mathrm{Instruction}} \times \dfrac{\mathrm{Seconds}}{\mathrm{Clock\ Cycle}}
$$
2.
| 性能的构成因素 | 测量单位 |
|---|---|
| 程序的CPU执行时间 | 程序执行的时间,以秒为单位 |
| 指令总数 | 程序执行的指令数目 |
| 指令平均时钟周期数(CPI) | 每条指令平均执行的时钟周期数 |
| 时钟周期长度 | 每个时钟周期的长度,以秒为单位 |