重要指标
延迟:一条指令从发出到返回结果所经历的时间间隔
吞吐量:单位时间内处理指令的条数
CPUs: 延迟导向设计
CPU特点:
设计原则:减少延迟(所以叫延迟导向设计)
-
内存大
本着空间换时间的思想,拥有多级缓存结构提高访存速度
L1 Cache, L2 Cache, L3 Cache…
把经常访问的数据放在低级缓存 L1 Cache中
不常访问的数据放在高级缓存 L3 Cache中 -
有很多复杂的 Control 单元(如图所示)
重要机制:
(i)分支预测机制 -- 在硬件中判断语言的 if esle break continue 的执行
(ii)流水线数据前送机制 -- 判断如果是马上要访问的数据,会用流水线机制把数据尽可能向前推送,减少等待时间
- 运算单元强大
支持整型浮点型数据运算
支持与或非逻辑运算
GPUs: 吞吐导向设计
设计原则:增加指令吞吐
-
缓存小(如图 L2 Cache)
缓存小 – > 使得指令访问缓存的次数显著减少 – >提升内存访问吞吐 -
控制单元简单
没有分支预测机制
没有数据转发机制 -
精简运算单元
多长延时流水线以实现高吞吐量(一行很多运算单元)
需要大量线程来容忍延迟(每一行的运算单元控制指令只有一个【如图一行的橙紫两小格】)
GPU&CPU对比
CPU比 GPU ,单条复杂指令延迟快10倍以上
GPU比 CPU ,单位时间内执行指令数量10倍以上
CPU:一个优秀的大学生
GPU: 1000个中学生
适合实用GPU的场景
1)计算密集的程序适合在GPU -- because 数值计算的比例要远大于内存操作,因此内存访问的延时可以被计算掩盖
2)并行度高的程序适合在GPU -- because 大任务可以拆解为执行相同指令的小任务,因此对复杂流程控制的需求较低
3)控制复杂的程序不适合在GPU运行
4)如果要频繁的访问缓存,则不适合使用GPU
重点
- 流水线前传机制 如何使CPU的效率显著增加
- 3级缓存(Cache)的特点 ,哪些内容适合放在哪一级别的缓存上
- 什么样的问题适合GPU