乱序处理器的同时多线程
2010 ILP差不多到了尽头,程序员的免费的午餐到头了。
- TLP(多线程)
· 相同进程的线程-将大型任务切分,单个任务利用线程。
· 不同进程的线程-提高整体CPU利用率,但是降低了单个任务效率。
代价:每个线程都需要GRP、PC以及相应状态。
- SMT
· Vertical Multithreading:利用不同时钟周期issue不同指令。
缺点:不能利用指令isue宽度
· Chip Multithreading:每个线程利用部分宽度issue指令。
缺点:会导致时钟周期idle,同时单个线程也可能无法有效利用宽度。
· OOO: 最大化利用资源。
多线程架构优劣:
Power4 | Power5 |
---|---|
增加了多线程架构:+IF(取指),+D0(译码) ,+CP(完成提交) | |
相应的增加cache大小,虚拟寄存器(1.5倍左右),Core面积增加24%(cache增加),性能提高40% |
BP、Function Unit、cache等共享,PC、RS、SQ等独占。
实际上SMT性能提升并不理想(效果没有飞跃,大概20%以及以下,同时还需要增加芯片面积,如果在多核CPU会消耗更多面积)
多线程类别:
- 超标量处理器(Superscalar):单个线程,同时issue多个指令。
- 细粒度多线程(Fine-Grained):每个周期issue不同线程指令。
- 粗粒度多线程(Coarse-Grained):每几个周期issue同一个线程的指令。
- 多处理器(Multiprocessing):相当于两个Superscalar。
- 同时多线程(Simultaneous Multithreading):多个线程混合运行。(性能提升并没有飞跃,同时带来功耗、芯片面积增大)