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

超线程技术,也被称为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等使用效率。因此,我们在使用超线程技术时,需要根据实际情况进行权衡。

更多学习资源

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

相关推荐
旅僧4 天前
多处理器基本概念(SISD、SIMD、MISD、MIMD)--自用
计算机组成原理
编码时空的诗意行者6 天前
动手测试:CPU的L1~L3级缓存和内存的读取速度测试
缓存·cpu·性能
dulu~dulu7 天前
数据冒险与控制冒险
java·开发语言·计算机组成原理
dulu~dulu7 天前
I/O中断处理过程
单片机·嵌入式硬件·计算机组成原理
寅双木8 天前
如何选购笔记本电脑?要看哪些参数?
笔记·笔记本电脑·cpu·显卡·内存条·固态硬盘·机械硬盘
Sindweller553010 天前
CPU中也应用到了缓存:CPU3层高速缓存,以及它的缓存一致性问题、MESI协议和Java的一些应用
缓存·cpu·计算机基础
小新_-13 天前
第四章:存储系统:第一节——存储器概述
计算机组成原理
Fuliy9613 天前
【计算机组成原理】实验一:运算器输入锁存器数据写实验
计算机组成原理·锁存器·实验报告·clk·运算器输入锁存器数据写实验·74hc574芯片
乌云暮年14 天前
【计组】数据的表示与运算
笔记·算法·计算机组成原理
青衫客3615 天前
在系统总线的数据线上,不可能传输的是()。
计算机组成原理