多线程使多个线程以重叠方式共享单个处理器功能单元.PPT
-
资源ID:59620468
资源大小:342.50KB
全文页数:17页
- 资源格式: PPT
下载积分:20金币
快捷下载
会员登录下载
微信登录下载
三方登录下载:
微信扫一扫登录
友情提示
2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
|
多线程使多个线程以重叠方式共享单个处理器功能单元.PPT
多线程使多个线程以重叠方式共享单个处理器功能单元 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life,there is hope。有生命必有希望。有生命必有希望 第一种方法:细粒度多线程技术 它在每条指令间都能进行线程的切换,从而导 致多个线程的交替执行。主要优点:能够隐藏由任何或长或短的阻塞带来的 吞吐率的损失 主要缺点:减慢了每个独立线程的执行q 目前有两种主要的多线程实现方法7.6 同时多线程 第二种方法:粗粒度多线程技术 粗粒度多线程之间的切换只在发生代价较高、时间较长的阻塞出现时。缺点:不能有效地减少吞吐率的损失。原因:由粗粒度多线程的流水线建立时间的开销造 成的。由于实现粗粒度多线程的CPU只执行单个线 程的指令,因此当发生阻塞时,流水线必须排空或 暂停。阻塞后切换的新的线程在指令执行产生结果 之前必须先填满整个流水线。7.6 同时多线程7.6.1 将线程级并行转换为指令级并行 同时多线程技术是一种在多流出、动态调度处理器上开发线程级并行和指令级并行的改进的多线程技术。1.产生的主要原因q 现代多流出处理器通常含有多个并行的功能单元,现代多流出处理器通常含有多个并行的功能单元,而单个线程不能有效地利用这些功能单元。而单个线程不能有效地利用这些功能单元。q 通过寄存器重命名和动态调度机制,来自各个独立通过寄存器重命名和动态调度机制,来自各个独立 线程的多条指令可以同时流出,而不考虑他们之间线程的多条指令可以同时流出,而不考虑他们之间 的相互依赖关系;其相互依赖关系将通过动态调度的相互依赖关系;其相互依赖关系将通过动态调度 机制得以解决。机制得以解决。7.6 同时多线程2.一个超标量处理器在以下几种配置时其性能的差别 支持多线程技术的超标量处理器 由于缺乏足够的指令级并行而限制了流出槽由于缺乏足够的指令级并行而限制了流出槽 的利用率。的利用率。支持粗粒度多线程的超标量处理器 通过线程的切换部分隐藏了长时间阻塞带来通过线程的切换部分隐藏了长时间阻塞带来 的开销。由于只有当发生阻塞时才进行线程切换,的开销。由于只有当发生阻塞时才进行线程切换,新线程还需要流水线建立时间,所以会产生一些新线程还需要流水线建立时间,所以会产生一些 完全空闲的时钟周期。完全空闲的时钟周期。7.6 同时多线程 支持细粒度多线程的超标量处理器 线程的交替执行消除了完全空闲的流出槽。由于线程的交替执行消除了完全空闲的流出槽。由于在每个时钟周期内只流出一个线程的指令,指令级并在每个时钟周期内只流出一个线程的指令,指令级并行的限制仍然导致一个时钟周期内存在不少的空闲流行的限制仍然导致一个时钟周期内存在不少的空闲流出槽。出槽。支持同时多线程的超标量处理器 通通过过在在一一个个时时钟钟周周期期内内调调度度多多个个线线程程使使用用流流出出槽槽,从而同时实现线程级并行和指令级并行。从而同时实现线程级并行和指令级并行。理理想想情情况况下下,流流出出槽槽的的使使用用率率只只受受限限于于多多个个线线程程对资源的需求和可用资源间的不平衡。对资源的需求和可用资源间的不平衡。7.6 同时多线程图图7.16:7.16:超标量处理器中的超标量处理器中的4 4种不同的流出槽使用方法种不同的流出槽使用方法q 开发的基础开发的基础:使用动态调度技术的处理器已经具有使用动态调度技术的处理器已经具有 了开发线程级并行所需的硬件设置。了开发线程级并行所需的硬件设置。动态调度超标量处理器有大量的虚拟寄存器组,可动态调度超标量处理器有大量的虚拟寄存器组,可 以用来保存每个独立线程的寄存器状态。以用来保存每个独立线程的寄存器状态。由于寄存器重命名机制提供了唯一的寄存器标识符,由于寄存器重命名机制提供了唯一的寄存器标识符,多个线程的指令可以在数据路径上混合执行,而不多个线程的指令可以在数据路径上混合执行,而不 会导致各线程间源操作数和目的操作数的混乱。会导致各线程间源操作数和目的操作数的混乱。多线程技术可以通过在一个乱序执行的处理器上为多线程技术可以通过在一个乱序执行的处理器上为 每个线程设置重命名表、保留各自的每个线程设置重命名表、保留各自的PCPC值、提供多值、提供多 个线程的指令结果提交的能力来实现。个线程的指令结果提交的能力来实现。7.6 同时多线程7.6.2 同时多线程处理器的设计q 同时多线程只有在细粒度的实现方式下才有意义q 并发多个同优先级的线程必然拉长单个线程的执 行时间 通过指定一个优先线程来减小这种影响,从通过指定一个优先线程来减小这种影响,从 而在整体性能提高的同时对单个指定的线程性能而在整体性能提高的同时对单个指定的线程性能 只产生较小的影响。只产生较小的影响。7.6 同时多线程q 多个线程的混合执行将不可避免地影响单个线程 的执行时间 为提高单个线程的性能,应该为指定的优先为提高单个线程的性能,应该为指定的优先线程尽可能多地向前取指,并且在分支预测失效和线程尽可能多地向前取指,并且在分支预测失效和预取缓冲失效的情况下清空取指单元。但是这样限预取缓冲失效的情况下清空取指单元。但是这样限制了其他线程可用来调度的指令条数,从而减少了制了其他线程可用来调度的指令条数,从而减少了吞吐率。所有的多线程处理器都必须在这里寻求一吞吐率。所有的多线程处理器都必须在这里寻求一种折衷方案。种折衷方案。7.6 同时多线程q 只要一有可能,处理器就运行指定的优先线程。q 从取指阶段开始就优先处理优先线程 只要优先线程的指令预取缓冲区未满,就为它只要优先线程的指令预取缓冲区未满,就为它 优先取指。只有当优先线程的缓冲区填满以后才为优先取指。只有当优先线程的缓冲区填满以后才为 其他线程预取指令。其他线程预取指令。q 当有两个优先线程时,需要并发预取两个指令流,这给取指部件和指令cache的设置都增添了复杂度。7.6 同时多线程q 设计同时多线程处理器时面临的其他主要问题q 指令流出单元也要优先考虑指定的优先线程,只有 当优先线程阻塞不能流出的时候才考虑其他线程。设置用来保存多个上下文所需的庞大的寄存器文件设置用来保存多个上下文所需的庞大的寄存器文件 必须保持每个时钟周期的低开销必须保持每个时钟周期的低开销 特别是在关键步骤上特别是在关键步骤上 需要保证由于并发执行多个线程带来的需要保证由于并发执行多个线程带来的cachecache冲突冲突 不会导致显著的性能下降。不会导致显著的性能下降。7.6 同时多线程q 通过研究这些问题还可以了解到 在大多情况下多线程所导致的额外性能开销是很小在大多情况下多线程所导致的额外性能开销是很小 的,简单的线程切换选择算法就足够;的,简单的线程切换选择算法就足够;目前的超标量处理器的效率是比较低的,还有很大的目前的超标量处理器的效率是比较低的,还有很大的 改进余地,同时多线程是获得吞吐率改进的最有前途改进余地,同时多线程是获得吞吐率改进的最有前途 的方法之一。的方法之一。7.6 同时多线程7.6.3 同时多线程的性能q 图7.17表示在超标量处理器上增添8个线程的同 时多线程能力时获得的性能提高q 图7.18表示SMT与基本的超标量处理器在主要内 部指标利用率和命中率上的对比 7.6 同时多线程q 两个特点 超标量处理器本身功能十分强大,它具有很超标量处理器本身功能十分强大,它具有很 大的一级大的一级cachecache、二级、二级cachecache以及大量的功能以及大量的功能 单元。仅仅采用指令级并行,不可能利用全单元。仅仅采用指令级并行,不可能利用全 部的硬件性能。部的硬件性能。同时多线程的能力也很强大,可以支持同时多线程的能力也很强大,可以支持8 8个个 线程,并为两个线程同步取指。将超标量和线程,并为两个线程同步取指。将超标量和 同时多线程结合起来,在指令级并行基础上同时多线程结合起来,在指令级并行基础上 进一步开发线程级并行,可以获得显著的性进一步开发线程级并行,可以获得显著的性 能提高。能提高。7.6 同时多线程