# 1.3 计算机性能指标 ## 一、计算机性能的基本概念 ### 1.1 什么是计算机性能 **计算机性能**: - 计算机完成任务的快慢程度 - 通常用时间、吞吐量、利用率等指标衡量 ### 1.2 影响计算机性能的因素 **硬件因素**: - CPU性能(时钟频率、IPC) - 存储器性能(容量、速度) - I/O性能 **软件因素**: - 算法效率 - 编译器优化 - 操作系统调度 **系统因素**: - 体系结构设计 - 存储器层次结构 - 并行处理能力 --- ## 二、时间指标 ### 2.1 响应时间(Response Time) **定义**: - 从提交任务到获得结果的时间 - 也称为执行时间、 wall-clock time **组成**: ``` 响应时间 = CPU时间 + I/O时间 + 其他时间 ``` **特点**: - 用户感受到的时间 - 受系统负载影响 ### 2.2 CPU时间 **定义**: - CPU执行程序所用的实际时间 - 不包括I/O等待时间 **分类**: - **用户CPU时间**:执行用户程序的时间 - **系统CPU时间**:执行操作系统内核的时间 **总CPU时间**: ``` CPU时间 = 用户CPU时间 + 系统CPU时间 ``` ### 2.3 时钟周期和时钟频率 **时钟周期(Clock Cycle)**: - CPU操作的最基本时间单位 - 单位:秒(s)、纳秒(ns) **时钟频率(Clock Rate)**: - 每秒的时钟周期数 - 单位:Hz、MHz、GHz **关系**: ``` 时钟周期 = 1 / 时钟频率 时钟频率 = 1 / 时钟周期 ``` **例子**: - 时钟频率 = 3 GHz - 时钟周期 = 1 / (3 × 10⁹) = 0.333 ns ### 2.4 CPU执行时间 **公式**: ``` CPU执行时间 = CPU时钟周期数 × 时钟周期 = CPU时钟周期数 / 时钟频率 ``` **CPU时钟周期数**: ``` CPU时钟周期数 = 指令条数 × CPI ``` **CPI(Cycles Per Instruction)**: - 每条指令的平均时钟周期数 **综合公式**: ``` CPU执行时间 = 指令条数 × CPI × 时钟周期 = (指令条数 × CPI) / 时钟频率 ``` --- ## 三、吞吐量指标 ### 3.1 吞吐量(Throughput) **定义**: - 单位时间内完成的任务数 - 也称为带宽(Bandwidth) **单位**: - 任务/秒 - 指令/秒 - 操作/秒 ### 3.2 MIPS **MIPS(Million Instructions Per Second)**: - 每秒百万条指令 **公式**: ``` MIPS = 指令条数 / (执行时间 × 10⁶) = 时钟频率 / (CPI × 10⁶) ``` **特点**: - 简单直观 - 受指令集影响(不同指令集不可比) - 不能反映实际性能 ### 3.3 MFLOPS **MFLOPS(Million Floating-Point Operations Per Second)**: - 每秒百万次浮点运算 **公式**: ``` MFLOPS = 浮点运算次数 / (执行时间 × 10⁶) ``` **特点**: - 适用于科学计算 - 不受指令集影响 - 不能反映整数运算性能 ### 3.4 其他FLOPS指标 | 指标 | 含义 | |-----|------| | GFLOPS | 每秒十亿次浮点运算 | | TFLOPS | 每秒万亿次浮点运算 | | PFLOPS | 每秒千万亿次浮点运算 | | EFLOPS | 每秒百亿亿次浮点运算 | --- ## 四、CPI和IPC ### 4.1 CPI(Cycles Per Instruction) **定义**: - 执行一条指令所需的平均时钟周期数 **公式**: ``` CPI = CPU时钟周期数 / 指令条数 ``` **影响因素**: - 指令类型(不同指令CPI不同) - 存储器层次结构(Cache命中率) - 流水线效率 - 分支预测准确率 ### 4.2 平均CPI **公式**: ``` CPI_avg = Σ(CPI_i × F_i) ``` 其中: - CPI_i:第i类指令的CPI - F_i:第i类指令的出现频率 ### 4.3 IPC(Instructions Per Cycle) **定义**: - 每个时钟周期执行的指令数 - CPI的倒数 **公式**: ``` IPC = 1 / CPI = 指令条数 / CPU时钟周期数 ``` **意义**: - IPC越高,性能越好 - 现代处理器IPC > 1(超标量) --- ## 五、性能比较 ### 5.1 性能比较方法 **执行时间比较**: ``` 性能比 = 执行时间_B / 执行时间_A ``` **加速比(Speedup)**: ``` 加速比 = 原执行时间 / 新执行时间 ``` ### 5.2 Amdahl定律 **Amdahl定律**: - 计算系统某部分改进后的整体性能提升 **公式**: ``` 加速比 = 1 / [(1 - F) + F/S] ``` 其中: - F:可改进部分所占比例 - S:可改进部分的加速比 **结论**: - 改进效果受可改进部分比例限制 - 应该优先改进占比大的部分 **例子**: - 某程序50%可并行化 - 使用100个处理器 - 加速比 = 1 / [(1-0.5) + 0.5/100] = 1 / 0.505 ≈ 1.98 ### 5.3 CPU性能公式总结 ``` CPU时间 = 指令条数 × CPI × 时钟周期 = (指令条数 × CPI) / 时钟频率 ``` **三个因素**: 1. **指令条数**:取决于指令集和编译器 2. **CPI**:取决于计算机组成和指令类型 3. **时钟频率**:取决于硬件技术和计算机组成 --- ## 六、其他性能指标 ### 6.1 利用率 **CPU利用率**: - CPU忙碌时间占总时间的比例 **公式**: ``` CPU利用率 = CPU忙碌时间 / 总时间 ``` ### 6.2 可靠性 **MTTF(Mean Time To Failure)**: - 平均无故障时间 **MTTR(Mean Time To Repair)**: - 平均修复时间 **MTBF(Mean Time Between Failures)**: - 平均故障间隔时间 - MTBF = MTTF + MTTR **可用性**: ``` 可用性 = MTTF / MTBF = MTTF / (MTTF + MTTR) ``` ### 6.3 功耗 **功耗指标**: - TDP(Thermal Design Power):热设计功耗 - 单位:瓦特(W) **性能功耗比**: - 单位功耗的性能 - 重要的移动设备和数据中心指标 --- ## 七、基准测试程序 ### 7.1 什么是基准测试 **基准测试程序(Benchmark)**: - 用于评价计算机性能的标准程序 - 具有代表性、可移植性、可重复性 ### 7.2 常见的基准测试 **SPEC CPU**: - 测试CPU整数和浮点性能 - SPECint、SPECfp **TPC(Transaction Processing Performance Council)**: - 测试事务处理性能 - TPC-C、TPC-H等 **LINPACK**: - 测试浮点运算性能 - 用于超级计算机排名 **Geekbench、Cinebench**: - 综合性能测试 ### 7.3 基准测试的注意事项 - 选择适合的基准测试 - 考虑实际应用场景 - 注意测试环境的一致性 - 综合多个指标评价 --- ## 八、考研重点 1. **时间指标**: - 响应时间 - CPU时间 - 时钟周期和时钟频率 - CPU执行时间公式 2. **吞吐量指标**: - 吞吐量 - MIPS - MFLOPS 3. **CPI和IPC**: - CPI的定义和计算 - 平均CPI - IPC 4. **性能比较**: - 性能比 - 加速比 - Amdahl定律 - CPU性能公式 5. **其他性能指标**: - 利用率 - 可靠性(MTTF、MTTR、MTBF、可用性) - 功耗 6. **基准测试程序** --- *第一章完,进入第二章:数据的表示和运算*