信创服务器发展如火如荼,为应对数据中心更多高压并行的计算需求,越来越多的国产处理器也都支持了“超线程技术”,在多核架构下计算性能有了显著提升。
但在国产处理器性能跃迁发展的同时,也有人提出了“超线程技术是国外独有,有超线程功能的信创处理器,技术都是来源于国外,不算自主可控”。
这种说法明显是有误的。
在调研基础上,咨询了相关专家,这篇文章就为大家科普下CPU多核心架构-超线程技术的前因后果。
“超线程”概念起源于营销包装
在我们日常工作、生活中接触最多的具备超线程能力的芯片应该是x86架构体系的,目前超线程(Hyper-Threading)已经被大家广泛接受,并把所有一个物理核心上有多个虚拟核心的技术都叫做超线程。
但这其实是Intel的一个营销名称,实际上这一类技术的(学术/技术)通用名称是同步多线程(SMT,Simultaneous Multithreading)技术,即一个核可以进一步分成几个逻辑核,来执行多个控制流程,它允许多个线程在同一时间间隔内运行。每个核心都被允许同时执行两个或更多的线程。这些线程共享核心的执行资源,如指令获取、指令译码、调度和执行等单元。
通过在同一个核心上同时执行多个线程,处理器可以更好地利用这些资源,从而提高了处理器的整体性能。SMT技术初衷是通过提升CPU核心后端执行单元的利用率,来提升整体的并行性能的。
只不过后来,SMT技术面向用户,常以“超线程”的说法延续了下来。
超线程技术如何物理实现?
在历史上,为了提升CPU的性能,引入超标量(Superscalar)、乱序运行(Out-of-Order Execution)、大量的寄存器及寄存器重命名、多指令解码器、预测运行、高速缓存(Cache)等特性,这些特性从而让CPU拥有大量资源,并且CPU还能智能的预测执行指令。
不过这就导致,实际上CPU在大多数时间上,其资源是被闲置的。
闲置是巨大的浪费,因此为了进一步压榨CPU的性能,工程师发现,可以通过复制一些CPU物理核心内部硬件组件,例如寄存器或一级缓存,来运行第二个线程,让这些闲置资源运行在另一个线程上,所以SMT就出现了。
SMT技术是在CPU物理核心内部增加寄存器等硬件设施,但是ALU、译码器等关键单元还是共享,在一个物理 CPU 物理核心内部,会有双份的 PC 寄存器、指令寄存器乃至条件码寄存器等。
当一个线程的指令在译码器或ALU等关键单元空闲时,另一个线程可以借用这个资源来执行自己的指令。这样可以有效地提高处理器的并行性和效率,从而提升系统的整体性能。
在物理实现上,SMT技术只增加了5%的芯片面积,就可换来15%~30%的性能提升。虽然超线程技术需要增加一些硬件资源,但这通常不会导致处理器设计复杂度增加,因为这些资源可以在多核心处理器设计时进行复用。不仅减少设计的复杂度、又能增加更多的核心、又可以降低功耗。
其实,SMT的目的就是在接收到一个线程 A 的指令,在流水线里停顿的时候,让另外一个线程去执行指令。因为这个时候,CPU 的译码器和 ALU 就空出来了,那么另外一个线程 B,就可以拿来干自己需要的事情。,这个线程 B 可以是没有对于线程 A 里面指令的关联和依赖的。
咱们打个比方:将饭店里的厨师比喻为处理器的核心,而服务员可以比喻为每个核心上的线程,在SMT支持的情况下,一个厨师可以同时处理多个服务员请求订单,每个订单可以有不同的要求和任务,比如一个服务员(一个线程)请求厨师做个炖猪脚,在炖煮的过程中,这个厨师就空闲了,另一个服务员(逻辑线程)请求拍个黄瓜,那这位厨师是有时间来做这道菜的,就像一个核心可以同时执行多个线程一样。厨师和服务员之间的协调和同步需要有效的管理,以确保任务和订单的正确执行和完成。
同样,超线程技术也需要处理器和操作系统之间的协作和同步,以确保线程的正确调度和执行。
超线程在哪些场景有用武之地?
目前业务上云成了潮流,在云服务器上,SMT技术可以提高虚拟机或物理服务器的性能和响应速度。
在虚拟化技术中,每个虚拟机都需要一定的计算资源和网络资源,而SMT技术可以让虚拟机更高效地利用其资源,使得各个虚拟机能够更快地响应用户的请求。
另外,SMT技术也可以用于云存储和云数据库等云服务中。在云存储和云数据库中,需要处理大量的数据和请求,而SMT技术可以显著提高处理器的性能和响应速度,使得各种云服务能够更快地响应用户的请求。
在云桌面中,SMT技术也可以提高用户体验和响应速度。通过将计算资源进行池化和虚拟化,SMT技术可以让每个用户都得到足够的计算和响应资源,从而使得每个用户都能够在云桌面上获得更好的体验。
SMT还可以在科学计算、图形渲染、视频编码、Web服务器、数据库、实时系统等场景下,SMT技术都可以发挥出其优势。比如说,对于一个多媒体的工作者,可以在运行编辑/编码图形密集型文件,同时跑着杀毒软件。在这些需要大量计算和处理的场景下,SMT技术可以显著提高处理器的性能和响应速度,使得计算机能够更快地处理各种任务。
国内外都有哪些处理器具备SMT能力?
最早应用超线程技术的,是英特尔在2002年的Pentium 4和Xeon处理器上引入,当时它被包装为Hyper Threading。在酷睿处理器系列中,超线程技术一度被暂停使用,但在Core i7 960发布后,它又成为了英特尔中高端CPU的一项重要技术,因为超线程技术可以使处理器在单位时间内执行更多的指令,从而提高处理器的性能和效率。
在超线程技术的支持下,一个物理核心可以虚拟出两个逻辑核心,即SMT2(Simultaneous Multithreading Technology 2)。这样,每个物理核心可以同时执行两个线程,从而提高了处理器的整体性能。
IBM于2004年推出了Power5处理器,Power5增加了并发多线程能力(SMT),每个核心可以同时运行两个线程,也就是SMT2。到Power8的时候,其处理器可支持SM2/4/8线程的能力。如下图所示。
MIPS架构在2005年首次引入了多线程技术。这项技术为MIPS成为CPU IP授权市场上引人注目的CPU架构奠定了重要基础。自从与34K一同发布以来,多线程便成为了众多MIPS CPU的支柱技术,例如1004K、interAptiv以及最新的I6400和I6500等Warrior内核。在此期间,基于MIPS多线程处理器的SoC出货量超过了7亿片,这是该技术令MIPS从同类产品中脱颖而出的重要原因。
视角转回国内,龙芯在2023年8月发布的龙芯3A6000自主桌面CPU 4核8线程,支持同时多线程技术(SMT2),全芯片共8个逻辑核。
海光在2018年发布的海光一号及后续产品,都具备超线程能力SMT2(即单物理核双线程),而且从18年至今海光CPU产品在整个商业市场上经历了行业、产业、用户的洗礼,其产品的成熟度还是很高的。据了解,海光双路7260服务器使用SPEC CPU2017测试工具,单物理核的Int Base是4.35分,开启SMT(一对逻辑核)Int Base是5.67分,开启SMT性能提升约30.3%左右的提升。在数据库场景下的测试,整体性能在开启SMT的情况下性能提升不止30%,甚至更多,已经比肩国际主流的处理器水平。
华为手机芯片麒麟9000s,也同样采用了超线程设计,为 8 核 12 线程,并以超线程、纯国产为优势特点进行宣传。
总而言之,SMT技术已成为许多个人电脑和服务器CPU的标配技术之一,能够提高处理器的性能和效率,特别是在多任务处理和高负荷运行方面表现更为突出,这项技术的广泛应用也进一步推动了处理器技术的发展。
国产处理器们勇追之下,也已经摸索消化了SMT技术,迎来性能提升。“超线程技术是国外独有,信创处理器不能用”也是纯属无稽之谈了。