Ch4.DLP
SISD: 单指令单数据 单个处理器 可以利用指令级并行提高 SIMD: 一条指令多数据流 SIMD三种变体:Vector,向量处理,以vector为基本粒度;SIMD,AVX指令集,支持多数据并行处理;GPU, SIMT异构体系。 MIMD: 多个处理器之间实现的 每个处理器做的是不同任务
这一章讲SIMD
- 不会考array processor
- 重点考vector processor
SIMD: vector
读题, 根据题目分析
处理方式
Example
D=A(B+C)
-
Horizontal processing
-
Vertical processing
-
但是vertical要求每个向量不能太大。分组 组内纵向,组间横向
冲突
- Vi conflict: 向量寄存器有依赖关系。指令2必须等指令1 向量的 第一个 元素计算完,才开始计算
- Functional conflict: 结构冲突 两个都是乘法,用到同一个功能部件,无法并行执行。 指令2必须等指令1的 所有元素 计算完才能开始。
周期数计算
注意向量功能内部也是流水线。操作数一个一个进来
Example
load/store 6 加法6 乘法7
这里假设把数据从寄存器送到功能部件需要一拍,功能部件的结果写回到寄存器也需要一拍。把数据从内存送到 fetch function unit 需要一拍。
- serial: 前一个指令全部元素执行完 再执行下一个: V0,V1第一个元素到V2 需要1+6+1 接下来还有N-1个元素 所以要(8+N-1)+(8+N-1)+(9+N-1)=3N+22
- 前两个并行,第三个串行
- link: 相当于把3个指令的流水线连起来,看成一整条流水线 V4的第一个结果需要max(1+6+1,1+6+1)+1+7+1=17 17+N-1=N+16
LLP
怎么消除数据依赖