首页 > 编程知识 正文

cpu多线程技术,核心线程多的cpu

时间:2023-05-04 12:29:56 阅读:180710 作者:3972

最近在power上,通过SMT内容,了解到旧的CPU超线程是SMT的一种,并讨论了相关内容。 PC64_CPU--SMT=on/offSMT1插座,打开/关闭core、thread

)1)插槽是指在主板上插入cpu的插槽的数量,是管理员所说的“路”

芯片制造商将一个或多个核心(称为套接字)封装在一个chip中。 如果在一个插槽中有两个内核,并且在主板中插入两个插槽,则系统将具有四个内核。

)2)酷睿是指我们平时所说的“核”,即双核、四核等。 单核(单核)和多核)也称为uniprocessor和多处理器

)3) thread是每个核心的硬件线程数,也就是超线程

作为一个具体示例,假设一个业务是双路四核超线程(通常默认为两个线程),则在cat /proc/cpuinfo中看到的是2*4*2=16个处理器,大多数人也是116个处理器

[root@x86 ~]# lscpu

Architecture: x86_64

CPUop-mode(s ) : 32位、64位

byte order :简化版

CPU(s ) : 32

在线CPU (s ) list: 0-31

thread(s ) per core: 2

酷睿(s ) per socket: 8

socket(s ) : 2

numanode(s ) : 2

vendor id :通用英特尔

CPU family: 6

模型: 45

modelname:Intel(r ) Xeon(R ) r ) CPU E5-2690 0 @ 2.90GHz

Stepping: 7

CPU MHz: 2889.125

BogoMIPS: 5804.19

虚拟化: v t-x

L1d cache: 32K

L1i cache: 32K

L2 cache: 256K

L3 cache: 20480K

numanode0CPU(s ) :0-7、16-23

numanode1CPU(s ) :8-15、24-31

该服务器有32个CPU,由两个插槽、八个插槽一个内核和两个thread组成。 另外,这些CPU可以分成两个numa节点。

2SMP、SMT、NUMA等概念core (或processor )是通用的概念,是从用户(或消费者)的角度来看计算机系统。 因此,core、processor或处理器(CPU )是一个逻辑概念,是指能够独立运算、处理的核心。

核可以以任何形式存在,例如,单个chip (通常意义上的单核处理器); 在一个chip中整合多个内核(SMP、symmetric multiprocessing等); 为了支持多线程,在一个核心中实现多个硬件上下文。 例如,SMT,Simultaneous multithreading; 等等。 这是从硬件实现的角度来看的。

最后,从操作系统进程调度的角度统一看待这些不同硬件实现的核心。 因为下面讨论的CPU(32个CPUs )具有执行过程(或线程)的共同特征。

在传统的单核时代,提高处理器性能的唯一途径是提高频率。 但是,仅限于物理过程,频率无法无限提高(例如散热问题等)。 多核处理器提供了更多的可用空间,从而更容易解决散热问题。 这就是多处理器诞生的背景。

) SMT,同时多线程Simultaneous multithreading,简称SMT。 SMT通过复制处理器上的结构状态,使同一处理器上的多个线程可以同步执行和共享处理器的执行资源,最大限度地实现宽触发、随机序列的超额处理,提高处理器运算部件的利用率,实现数据如果没有多个线程可用,则SMT处理器与传统的宽发射开销处理器几乎相同。 SMT最吸引人的地方在于,它只需对处理器内核的设计进行小规模的更改,就可以在几乎不增加额外成本的情况下大幅提高性能。 多线程技术增加了高速计算核心处理的数据量,缩短了计算核心的空闲时间。 这对桌面低端系统非常有吸引力。 从3.06 GHz奔腾4开始,所有处理器都支持SMT技术。 英特尔超线程实际上是

two-thread SMT.
(2)CMP, 片上多处理器(Chip multiprocessors,简称CMP) CMP是由美国斯坦福大学提出的,其思想是将大规模并行处理器中的SMP(对称多处理器)集成到同一芯片内,各个处理器并行执行不同的进程。与CMP比较, SMT处理器结构的灵活性比较突出。但是,当半导体工艺进入0.18微米以后,线延时已经超过了门延迟,要求微处理器的设计通过划分许多规模更小、局部性更好的基本单元结构来进行。相比之下,由于CMP结构已经被划分成多个处理器核来设计,每个核都比较简单,有利于优化设计,因此更有发展前途。目前,IBM 的Power 4芯片和Sun的 MAJC5200芯片都采用了CMP结构。多核处理器可以在处理器内部共享缓存,提高缓存利用率,同时简化多处理器系统设计的复杂度。
(3)SMP,对称多处理器(Symmetric Multi-Processors,简称SMP) 是指在一个计算机上汇集了一组处理器(多CPU),各CPU之间共享内存子系统以及总线结构。在这种技术的支持下,一个服务器系统可以同时运行多个处理器,并共享内存和其他的主机资源。像双至强,也就是我们所说的二路,这是在对称处理器系统中最常见的一种(至强MP可以支持到四路,AMD Opteron可以支持1-8路)。也有少数是16路的。但是一般来讲,SMP结构的机器可扩展性较差,很难做到100个以上多处理器,常规的一般是8个到16个,不过这对于多数的用户来说已经够用了。在高性能服务器和工作站级主板架构中最为常见,像UNIX服务器可支持最多256个CPU的系统,其实qemu从代码设计上也是最大支持256个virtual cpu。
(4)NUMA(Non-uniform Memory Access) Core之间会共享总线、memory等资源。如果Core的数量较少,则没什么问题,但随着Core的增多,对总线以及memory带宽的需求就会显著增大,最终总线和memory会成为系统性能的瓶颈。
某些Core之间,独享总线和memory,称作Node。正常情况下,Core只访问Node内的memory,因此可以减轻对总线和memory的带宽需求。但是,有些场景下,Core会不可避免的访问其它Node的memory,这会造成很大的访问延迟。
因此,NUMA(Non-uniform Memory Access),以内存访问的不一致性为代价,减轻对总线和memory的带宽需求。这种结构对进程调度算法的要求较高,尽量减少跨Node的内存访问次数,以提升系统性能。

3 SMT 3.1 MT MT,multithreading,多线程。指的是在单一核心上执行多个线程。MT技术有两种,TMD和SMT。

3.1.1 TMD,Temporal multithreading 时分多线程。类似于作业系统的的分时多任务。一段时开只执行一个线程,多个线程交替执行。

TMD技术适用于RISC架构的CPU,在服务器上被普遍采用。
TMD的分时有两种调度方式。CMT和FMT。
CMT,Coarse-grained multithreading。CMT的思路是,执行线程1,当线程1等待指令时,切换到线程2。
FMT,Fine-grained multithreading。FMT的思路是,平均调度。

在简单结构的RISC CPU中,像MIPS指令集的CPU,FMT很有优势。FMT是RISC架构最常用的MT技术。
在较复杂的RISC CPU中,FMT并不一定有优势,采用CMT的CPU也有。
3.1.2 SMT,Simultaneous Multithreading 并发多线程。所有的指令混在一起执行。
SMT技术适用于CISC架构的CPU,在桌面和低端伺服器上,已经intel采用。
3.2 SMT         同步多线程(SMT)是一种在一个CPU 的时钟周期内能够执行来自多个线程的指令的硬件多线程技术。本质上, 同步多线程是一种将线程级并行处理(多CPU)转化为指令级并行处理(同一CPU)的方法。 同步多线程是单个物理处理器从多个硬件线程上下文同时分派指令的能力。同步多线程用于在商用环境中及为周期/指令(CPI)计数较高的工作负载创造性能优势。 处理器采用超标量结构,最适于以并行方式读取及运行指令。同步多线程使您可在同一处理器上同时调度两个应用程序,从而利用处理器的超标量结构性质。

任何单个应用程序都不能完全使该处理器达到满负荷。当一个线程遇到较长等待时间事件时,同步多线程还允许另一线程中的指令使用所有执行单元。例如,当一个线程发生高速缓存不命中,另一个线程可以继续执行。同步多线程是 POWER5? 和 POWER6? 处理器的功能,可与共享处理器配合使用。

  SMT 对于商业事务处理负载的性能优化可达30%。在更加注重系统的整体吞吐量而非单独线程的吞吐量时,SMT 是一个很好地选择。

  但是并非所有的应用都能通过SMT 取得性能优化。那些性能受到执行单元限制的应用,或者那些耗尽所有处理器的内存带宽的应用,其性能都不会通过在同一个处理器上执行两个线程而得到提高。

        SMT可通过复制处理器上的结构状态, 让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。

        SMT最具吸引力的是只需小规模改变处理器核心的设计,几乎不用增加额外的成本就可以显著地提升效能。多线程技术则可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。这对于桌面低端系统来说无疑十分具有吸引力。Intel从3.06GHz Pentium 4开始,所有处理器都将支持SMT技术。



4 IBM Power处理器的SMT、HMT、HT技术
SMT并发多线程是Power5以后芯片的新技术,它支持一个CPU内核同时处理两条指令,因此可以最高达到单一CPU两倍的处理速度。平均而言,打开SMT支持比关闭SMT能提升30%的CPU处理能力。SMT的能力来源于CPU中有许多寄存器,但是由于CPU通常每一时间点只能执行一条指令,即使是流水线方式,某个时间点真正执行占据运算器的也只有一条指令,其他并行的指令只能处于解码、寻址等状态。因此大部分寄存器都没有工作,处于闲置。

针对这种情况,IBM特别设计了一种寄存器结构,能够对CPU的处理状态进行跟踪,当发现有闲置的寄存器,而此时另一个线程又可以使用它的时候,就在保持当前进程的前提下,让另一个线程同时执行,就这样在同一时间,一个CPU可以处理两个线程的指令。实际上并非如此简单,因为一个RISC CPU通常用超流水线的方式同时执行多条指令,因此实现SMT需要进行比较复杂的判断,而且也并不能保证CPU永远可以执行两个线程。所以通常SMT并不能将性能翻倍,而只是提高30%左右。

与SMT类似, HMT硬件多线程技术,也是试图同时实行多条指令线程的一种技术,但 与SMT不同的是,在HMT必须等当前指令流空闲下来,才能切换到另一条指令线程执行。在CPU 执行指令发生中断的时候,就是当前指令流空闲的时候,通常可能原因是指令/数据缓存未命中(由于跳转和地址越界,缓存中,没有当前需要执行的指令)。由于HMT对指令是否并行执行的要求更为苛刻,对性能的提高并不十分显著。

IBM的Power系列CPU支持HMT,到Power5开始增添了对SMT的支持,其中HMT是无条件使用,而SMT则可能通过操作系统开关控制使用和关闭。
SMT技术不仅需要AIX操作系统支持,更需要power芯片硬件的支持,这种技术允许在一颗物理 CPU(core)上并发的的执行两个线程,通过这种技术可以大大提高CPU处理单元的利用率,一般可以使系统(CPU成为瓶颈的系统)性能提高30%以上,下面用图示做一下对比:
--SMT关闭的情况下,CPU在一个CPU Cycle情况下处理单元的利用率


--SMT开启的情况下,CPU在一个CPU Cycle情况下处理单元的利用率




参考:

1 处理器概念: http://labs.chinamobile.com/mblog/854855_199265

2 Topology: http://www.wowotech.net/pm_subsystem/cpu_topology.html

3 http://www.itpux.com/thread-256-1-1.html

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。