Skip to content

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

|500

硬件的组成部分:

  • 输入设备
  • 输出设备
  • 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) 的关系:

\[ \begin{align} \rm{CPU\ Time} & = \rm{CPU\ Clock\ Cycles} \times \rm{Clock\ Cycle\ Time} \notag \\ & = \dfrac{\rm{CPU\ Clock\ Cycles}}{\rm{Clock\ Rate}} \notag \end{align} \]

由此,我们可以得出性能提升的方法:

  • 降低CPU周期数(CPU clock cycle)
  • 提升CPU频率(CPU rate)
  • 但是改善其中的一个属性,就有可能会拉低另一个属性,所以需要权衡好两者

Answer

|450
|450

3.3 指令性能

周期数的计算公式:

\[ \begin{align} \mathrm{CPU\ Clock\ Cycles} & = \mathrm{Instruction\ Count} \times \mathrm{Clock\ Cycles\ per\ Instruction}\text{(CPI)} \notag \\ \mathrm{CPU\ Time} & = \mathrm{Instruction\ Count} \times \mathrm{CPI} \times \mathrm{Clock\ Cycle\ Time} \notag \\ & = \dfrac{\mathrm{Instruction\ Count} \times \mathrm{CPI}}{\mathrm{Clock\ Rate}} \notag \end{align} \]
  • 指令数(instruction count, IC):取决于指令集架构,而非具体的实现方式

    注:如果题目说这几个处理器的指令集架构是一样的,这就说明它们的指令数也是一样的。

  • CPI(clock cycles per instruction):每条指令的平均周期数,它的大小取决于很多的设计细节,包括内存系统、处理器结构等

  • 不同的指令类别(比如RISC-V的R型指令、I型指令等等)会产生不同的CPI,如果CPU执行多种类型的指令,上面的公式需要修改为以下加权形式:
\[ \mathrm{CPU\ Clock\ Cycles} = \sum\limits_{i=1}^n(\mathrm{CPI}_i \times \mathrm{Instruction\ Count_i}) \]

  • 加权平均 CPI
\[ \mathrm{CPI} = \dfrac{\mathrm{Clock\ Cycles}}{\mathrm{Instruction\ Count}} = \sum\limits_{i=1}^n(\dfrac{\mathrm{CPI}_i \times \mathrm{Instruction\ Count}_i}{\mathrm{Instruction\ Count}}) \]

总结:
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) 每条指令平均执行的时钟周期数
时钟周期长度 每个时钟周期的长度,以秒为单位

4. 功耗墙

\[ \mathrm{Power} \propto \dfrac{1}{2} \times \mathrm{Capacitive\ load} \times \mathrm{Voltage}^2 \times \mathrm{Frequency\ switched} \]

Comments