核心概念

一、计算性能基础

  1. 响应时间与吞吐量的区别

    • 响应时间:系统完成一个任务所需的时间(用户关心的)
    • 吞吐量:系统在单位时间内完成的任务数量(管理员关心的)
  2. 性能评估公式

    CPU执行时间 = 指令数 × CPI × 时钟周期时间
    
    • CPI(Cycles Per Instruction):每条指令的平均时钟周期数
    • 时钟周期时间 = 1 / 主频
  3. Amdahl定律

    • 加速比 = 1 / ((1 - f) + f/s)
    • f: 可加速部分的比例
    • s: 加速因子
    • 结论:整体性能受限于最慢的部分

二、指令集架构(ISA)

  1. RISC vs CISC

    • RISC(精简指令集):指令固定长度、单周期执行、大量寄存器
    • CISC(复杂指令集):可变长度指令、多周期执行、复杂寻址模式
    • 现代趋势:x86内部也采用RISC-like微架构
  2. ARM架构特点

    • load/store架构
    • 条件执行
    • 32/64位双模式
    • 广泛应用在手机和嵌入式领域
  3. x86-64扩展

    • 从32位到64位的平滑过渡
    • 新增16个通用寄存器
    • 保持了与x86的兼容性

三、流水线技术

  1. 五级流水线

    • IF(取指)→ ID(译码)→ EX(执行)→ MEM(访存)→ WB(写回)
    • 理想情况下,每个时钟周期完成一条指令
  2. 流水线冒险

    • 结构冒险:硬件资源冲突
    • 数据冒险:依赖关系导致
      • RAW(读后写):真依赖
      • WAR(写后读):反依赖
      • WAW(写后写):输出依赖
    • 控制冒险:分支指令
      • 解决方案:分支预测、延迟分支、推测执行
  3. 超标量与VLIW

    • 超标量:每个周期发射多条指令(动态调度)
    • VLIW:编译器静态调度,处理器动态执行

四、存储层次结构

  1. 局部性原理

    • 时间局部性:最近访问的内存位置可能被再次访问
    • 空间局部性:附近内存位置可能被访问
  2. 缓存结构

    • 直接映射缓存
    • 组相联缓存
    • 全相联缓存
    • L1/L2/L3多级缓存
  3. 缓存替换策略

    • FIFO(先进先出)
    • LRU(最近最少使用)
    • Random(随机)
  4. 虚拟内存

    • 页表:虚拟地址到物理地址的映射
    • TLB:转换后备缓冲区,加速地址转换
    • 缺页中断:页面不在内存时的处理
    • 页面置换算法:FIFO、LRU、Optimal

五、并行处理

  1. SIMD(单指令多数据)

    • SSE/AVX指令集
    • GPU并行计算
  2. 多核处理器

    • 多线程(Thread-level parallelism)
    • 多核(Core-level parallelism)
    • 共享内存 vs 分布式内存
  3. GPU计算

    • CUDA编程模型
    • 数千个核心并行处理
    • 适合数据并行任务

六、输入输出系统

  1. I/O接口标准

    • USB(通用串行总线)
    • PCIe(高速总线)
    • NVMe(固态硬盘协议)
  2. DMA(直接内存访问)

    • 允许外设直接访问内存,无需CPU干预
    • 减少CPU负担
  3. 中断与轮询

    • 中断:外设主动通知CPU
    • 轮询:CPU主动检查外设状态
    • 中断方式效率更高

关键公式汇总

  1. 响应时间 = CPU时间 / 进程数
  2. 吞吐量 = 进程数 / CPU时间
  3. CPU时间 = 指令数 × CPI × 时钟周期
  4. 加速比 = 旧系统性能 / 新系统性能
  5. Amdahl定律:Speedup = 1 / ((1-f) + f/s)

实践要点

  1. 代码优化要考虑指令级并行性
  2. 选择合适的数据结构以利用缓存局部性
  3. 理解编译器生成的汇编代码
  4. 测量实际性能,不要仅凭直觉优化
  5. 关注瓶颈:CPU、内存、I/O哪个是限制因素

与其他知识的关联