文档介绍:多线程使多个线程以重叠的方式共享单个处理器的功能单元。
同时多线程
为实现共享,处理器必须保存各个线程的独立状态。
硬件必须能够较快地完成线程间的切换。线程的切
换应该比进程的切换要高效的多,进程的切换一般
需要成百上千个处理器时钟周期。
第7章多处理机
第一种方法:细粒度多线程技术
它在每条指令间都能进行线程的切换,从而导
致多个线程的交替执行。
主要优点:能够隐藏由任何或长或短的阻塞带来的
吞吐率的损失
主要缺点:减慢了每个独立线程的执行
目前有两种主要的多线程实现方法
同时多线程
第二种方法:粗粒度多线程技术
粗粒度多线程之间的切换只在发生代价较高、
时间较长的阻塞出现时。
缺点:不能有效地减少吞吐率的损失。
原因:由粗粒度多线程的流水线建立时间的开销造
成的。由于实现粗粒度多线程的CPU只执行单个线
程的指令,因此当发生阻塞时,流水线必须排空或
暂停。阻塞后切换的新的线程在指令执行产生结果
之前必须先填满整个流水线。
同时多线程
将线程级并行转换为指令级并行
同时多线程技术是一种在多流出、动态调度处理器上开发线程级并行和指令级并行的改进的多线程技术。
1. 产生的主要原因
现代多流出处理器通常含有多个并行的功能单元,
而单个线程不能有效地利用这些功能单元。
通过寄存器重命名和动态调度机制,来自各个独立
线程的多条指令可以同时流出,而不考虑他们之间
的相互依赖关系;其相互依赖关系将通过动态调度
机制得以解决。
同时多线程
2. 一个超标量处理器在以下几种配置时其性能的差别
支持多线程技术的超标量处理器
由于缺乏足够的指令级并行而限制了流出槽
的利用率。
支持粗粒度多线程的超标量处理器
通过线程的切换部分隐藏了长时间阻塞带来
的开销。由于只有当发生阻塞时才进行线程切换,
新线程还需要流水线建立时间,所以会产生一些
完全空闲的时钟周期。
同时多线程
支持细粒度多线程的超标量处理器
线程的交替执行消除了完全空闲的流出槽。由于在每个时钟周期内只流出一个线程的指令,指令级并行的限制仍然导致一个时钟周期内存在不少的空闲流出槽。
支持同时多线程的超标量处理器
通过在一个时钟周期内调度多个线程使用流出槽,从而同时实现线程级并行和指令级并行。
理想情况下,流出槽的使用率只受限于多个线程对资源的需求和可用资源间的不平衡。
同时多线程
: 超标量处理器中的4种不同的流出槽使用方法
开发的基础: 使用动态调度技术的处理器已经具有
了开发线程级并行所需的硬件设置。
动态调度超标量处理器有大量的虚拟寄存器组,可
以用来保存每个独立线程的寄存器状态。
由于寄存器重命名机制提供了唯一的寄存器标识符,
多个线程的指令可以在数据路径上混合执行,而不
会导致各线程间源操作数和目的操作数的混乱。
多线程技术可以通过在一个乱序执行的处理器上为
每个线程设置重命名表、保留各自的PC值、提供多
个线程的指令结果提交的能力来实现。
同时多线程
同时多线程处理器的设计
同时多线程只有在细粒度的实现方式下才有意义
并发多个同优先级的线程必然拉长单个线程的执
行时间
通过指定一个优先线程来减小这种影响,从
而在整体性能提高的同时对单个指定的线程性能
只产生较小的影响。
同时多线程
多个线程的混合执行将不可避免地影响单个线程
的执行时间
为提高单个线程的性能,应该为指定的优先线程尽可能多地向前取指,并且在分支预测失效和预取缓冲失效的情况下清空取指单元。但是这样限制了其他线程可用来调度的指令条数,从而减少了吞吐率。所有的多线程处理器都必须在这里寻求一种折衷方案。
同时多线程