超线程技术:历史、实现与影响

超线程技术,也被称为Hyper-Threading或者同时多线程技术(Simulate MultiThreading,简称SMT),可以让单个物理CPU核心看起来像两个或者多个独立的处理器。这样,处理器可以同时处理多个任务,大大提高了CPU的使用效率。

历史上很多的CPU都应用了超线程技术,比如我这里有个多核的Intel处理器,它的内核是6个,也就是有6个物理CPU核心,但是它的逻辑处理器有12个,这就是使用了超线程技术,将每个物理CPU核心虚拟成了两个逻辑CPU核心。大家可以打开自己的Windows任务管理器看看自己的CPU是不是超线程的。

本文将从超线程技术的历史谈起,然后介绍其实现方式和优缺点,让大家有个完整的认识。

历史

首先,我们来回顾一下超线程技术的历史。 早在1973年,Edward S. Davidson和Leonard. E. Shar就在一篇论文中首次描述了通用处理器中的超线程技术。

1982年,Denelcor公司在异构元素处理器(EHP)中引入了多线程技术,它允许当一个进程的指令阻塞时,另一个进程可以继续使用这个pipeline。

1994年,Sun公司的Kenneth Okin获得了超线程技术的美国专利,但由于当时的CMOS工艺技术还不够先进,所以无法经济高效地实现超线程。

2002年,Intel在Xeon和Pentium 4处理器上开始引入超线程技术,并逐步发扬光大。

然而2013年,英特尔在Silvermont处理器内核中放弃了SMT,转而支持无序执行,因为这种方式在处理器内核数量较少时,性能更好,能效更高。

2019年,随着Coffee Lake的出现,除了最高端的Core i9部件或Pentium Gold CPU,Intel开始不再在主流Core i7桌面处理器中使用超线程技术。同时,由于新的CPU漏洞攻击的出现,Intel建议在多租户或者高安全要求的情况下禁用超线程技术。

实现方式

那么,超线程技术是如何实现的呢?

在超线程技术中,一个物理CPU核心被伪装成两个以上的逻辑CPU核心,看起来就像多个CPU在同时执行任务。这是通过在一个物理核心中创建多个线程实现的,每个线程都有自己的PC寄存器、指令寄存器和条件码寄存器。当线程A的指令停顿的时候,物理CPU核心的译码器和算术逻辑单元(ALU)就会空出来,这时线程B就可以运行自己的指令。这样就可以提高CPU的利用效率。

就像下面这条路,很笔直,但是总是空荡荡的,我们给它引入两个入口,把更大范围的车辆引入进来,提到了道路的使用效率。

图片来源:pixabay.com/zh/photos/f...

需要注意的是,如果译码器和ALU也是双份的,那么这就是真正的多个CPU核心了,不能称为超线程技术。

注意超线程技术与编程语言中的线程是不同层面上的两个东西。本文主要讲解的超线程技术是CPU硬件层面上的概念。而编程中的线程,是操作系统级别的概念,是软件层面上的概念。

编程中的线程技术,是通过编程语言的API创建和管理线程,让一个程序可以同时执行多个任务。此时,操作系统负责调度各个线程的执行,当一个线程阻塞时,可以切换到另一个线程继续执行,从而提高程序的响应性和并发性。

CPU超线程技术与操作系统线程技术一起工作,可以使计算机系统在硬件和软件两个层面上都实现并行处理,进一步提高计算性能。

优缺点

超线程技术的效果如何呢?

首先,它非常适合运行内存IO密集而非计算密集的应用程序,因为IO操作会有更多的等待时间可以被利用。大多数的业务服务程序都属于IO密集型程序,因为这种程序中主要的逻辑就是读写数据库、访问远程接口,所以服务器一般都会启用CPU超线程。

据Intel称,Pentium 4应用超线程技术后,虽然CPU多使用了5%的芯片面积,但性能却提高了15%-30%。

然而,超线程也有其弊端,例如,它会导致总体延迟的增加、能耗的增加以及CPU缓存的抖动。吞吐量能否提升和应用程序的计算类型密切相关。

此外,超线程技术还存在安全风险。比如恶意程序可以通过测量自己的执行时间,实现监视同一个核心上其他线程的内存访问情况,从而达到窃取加密信息的目的。


总的来说,超线程技术是一种提高计算机处理能力的有效手段,但它也有可能带来性能下降、能耗增加和安全风险等问题,同时随着其它优化技术的发展,我们也有了更多的选择来提升CPU等使用效率。因此,我们在使用超线程技术时,需要根据实际情况进行权衡。

更多学习资源

我注册了一个微/信/公/众/号:萤火架构,后续会分享很多架构方面的真实经验和认知,欢迎关注,以免错过精彩内容。

相关推荐
比特冬哥6 小时前
在MCU工程中优化CPU工作效率的几种方法
mcu·cpu
草捏子2 天前
从CPU原理看:为什么你的代码会让CPU"原地爆炸"?
后端·cpu
草捏子3 天前
为什么CPU缓存偏偏是三级?少一级不够,多一级浪费?
cpu
用户33766763012408 天前
cpu权限管理
cpu
用户33766763012408 天前
关于寄存器的秘密?流水线寄存器冲突的解决方案?原来真实寄存器的数量有可能上千个?
cpu
HyperAI超神经9 天前
【TVM教程】使用自定义调度规则(Sketch Rule)在 CPU 上自动调度稀疏矩阵乘法
人工智能·深度学习·矩阵·编程·cpu·计算机语言·tvm
王嘉俊9251 个月前
计算系统概述核心知识图谱(考研专项版)
考研·计算机组成原理·计组
A.sir啊1 个月前
计算机组成原理知识点精汇(一)计算机基础知识
硬件架构·cpu·计算机组成原理·冯诺依曼
不能只会打代码2 个月前
计算机组成原理—— 总线系统(十一)
fpga开发·计算机组成原理
Nicn2 个月前
考研操作系统----操作系统的概念定义功能和目标(仅仅作为王道哔站课程讲义作用)
c++·考研·系统架构·操作系统·计算机组成原理·os