超线程技术简介
什么是超线程技术?
- 超线程技术是 Intel 在奔腾4C处理器上开始投入的一种技术,目前主要应用在 Intel、AMD 的x86多核处理器上。在超线程技术中,一个物理CPU核心被伪装成两个或两个以上的逻辑CPU核心,看起来就像多个CPU在同时执行任务。如图所示,打开Windows任务管理器,该CPU的内核是6个,也就是有6个物理CPU核心,但是它的逻辑处理器有12个,这就是使用了超线程技术。
超线程技术是如何实现的?
- 超线程技术是通过在一个物理核心中创建多个线程实现的,每个线程都有自己的PC寄存器、指令寄存器和条件码寄存器。当线程A的指令停顿的时候,物理CPU核心的译码器和算术逻辑单元(ALU)就会空出来,这时线程B就可以运行自己的指令。这样就可以提高CPU的利用效率。就像下面这条路,很笔直,但是总是空荡荡的,我们给它引入两个入口,把更大范围的车辆引入进来,提到了道路的使用效率。需要注意的是,如果译码器和ALU也是双份的,那么这就是真正的多个CPU核心了,不能称为超线程技术。
超线程技术的优缺点?
- 超线程技术非常适合运行内存IO密集而非计算密集的应用程序,因为IO操作会有更多的等待时间可以被利用。大多数的业务服务程序都属于IO密集型程序,因为这种程序中主要的逻辑就是读写数据库、访问远程接口,所以服务器一般都会启用CPU超线程。通过增加5%左右的芯片面积换来15% - 30%的CPU性能提升是很划算的。
- 超线程也有其弊端,例如,它会导致总体延迟的增加、能耗的增加以及CPU缓存的抖动。吞吐量能否提升和应用程序的计算类型密切相关,计算密集型的应用程序使用超线程技术反而是有害的。此外,超线程技术还存在安全风险。比如恶意程序可以通过测量自己的执行时间,实现监视同一个核心上其他线程的内存访问情况,从而达到窃取加密信息的目的。
超线程技术的应用场景?
- 首先肯定有人会问,打游戏用的上超线程吗?目前大多数游戏对CPU核心的依赖约4-6核心,对线程的依赖相当有限,甚至部分游戏关了超线程反而帧数更高。一些较新的开放世界游戏会比较吃CPU,会用到8核甚至更多,此时超线程技术可能对游戏帧数有所帮助。
- 超线程技术目前更多的在一些专业应用上有性能体现,比如3D渲染,建模和视频编辑软件。虽然这些软件往往会应用GPU加速技术,但CPU性能依然是不可或缺的一部分。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 xgclevo的博客!
评论