处理器CPU概念及CPU多线程

1 socket, core, thread

(1)socket就是主板上插cpu的槽的数目,也即管理员说的”路“

芯片厂商会把一个或多个Core封装在一个chip上,称作Socket(插槽)。假设一个插槽有两个Core,主板上插2个插槽,就是4核系统。

(2)core就是我们平时说的”核“,即双核,4核等。单核(single-core)和多核(multi-core)也称作uniprocessor和multiprocessor

(3)thread就是每个core的硬件线程数,即超线程

具体例子,某个服务器是:2路4核超线程(一般默认为2个线程),那么,通过cat /proc/cpuinfo看到的是2*4*2=16个processor,很多人也习惯成为16核了!

[[email protected] ~]# lscpu

Architecture:           x86_64

CPU op-mode(s):        32-bit, 64-bit

Byte Order:             Little Endian

CPU(s):                
32

On-line CPU(s) list:   0-31

Thread(s) per core:     2

Core(s) per socket:     8

Socket(s):             2

NUMA node(s):          2

Vendor ID:             GenuineIntel

CPU family:             6

Model:                 45

Model name:            Intel(R) Xeon(R) CPU E5-2690 0 @ 2.90GHz

Stepping:               7

CPU MHz:               2889.125

BogoMIPS:               5804.19

Virtualization:         VT-x

L1d cache:             32K

L1i cache:             32K

L2 cache:               256K

L3 cache:               20480K

NUMA node0 CPU(s):     0-7,16-23

NUMA node1 CPU(s):     8-15,24-31

该服务器有32个CPU,组成方式是:2个sockets,每个socket有8个core,每个core有2个thread。另外,这些CPU可以划分为2个NUMA node。

2 SMP、SMT、NUMA等概念

core(或processor),是一个泛指,是从使用者(或消费者)的角度看计算机系统。因此,core,或者processor,或者处理器(CPU),都是逻辑概念,指的是一个可以独立运算、处理的核心。

而这个核心,可以以任何形式存在,例如:单独的一个chip(如通常意义上的单核处理器);一个chip上集成多个核心(如SMP,symmetric multiprocessing);一个核心上实现多个hardware context,以支持多线程(如SMT,Simultaneous multithreading);等等。这是从硬件实现的角度看的。

最后,从操作系统进程调度的角度,又会统一看待这些不同硬件实现的核心,如下所提及的CPU(32个CPUs),因为它们都有一个共同的特点:执行进程(或线程)。

在传统的单核时代,提升处理器性能的唯一手段就是提高频率。但受限于物理工艺,频率不能无限提高(例如散热问题等)。对多核处理器来说,可利用的空间增多,散热问题就比较容易解决。这就是multiprocessor诞生的背景。

(1)SMT,同时多线程Simultaneous multithreading,简称SMT。

SMT可通过复制处理器上的结构状态,让同一个处理器上的多个线程同步执行并共享处理器的执行资源,可最大限度地实现宽发射、乱序的超标量处理,提高处理器运算部件的利用率,缓和由于数据相关或Cache未命中带来的访问内存延时。当没有多个线程可用时,SMT处理器几乎和传统的宽发射超标量处理器一样。SMT最具吸引力的是只需小规模改变处理器核心的设计,几乎不用增加额外的成本就可以显著地提升效能。多线程技术则可以为高速的运算核心准备更多的待处理数据,减少运算核心的闲置时间。这对于桌面低端系统来说无疑十分具有吸引力。Intel从3.06GHz
Pentium 4开始,所有处理器都将支持SMT技术。 Intel的hyper-threading其实就是 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处理器几乎和传统的宽发射超标量处理器一样。

中文名 CPU多线程 外文名 Simultaneous multithreading 作    用 改变处理器核心的设计 特    点 实现宽发射、乱序的超标量处理

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情况下处理单元的利用率

并发多线程是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则可能通过操作系统开关控制使用和关闭。

参考:

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

时间: 2024-08-03 15:00:12

处理器CPU概念及CPU多线程的相关文章

iOS开发多线程网络———多线程概念及GCD

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); @import url(htt

Python学习笔记——进阶篇【第八周】———CPU运行原理与多线程

CPU运行原理与多线程 什么是线程(thread)? 线程是操作系统能够进行运算调度的最小单位.它被包含在进程之中,是进程中的实际运作单位.一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务 进程是容器,线程是真正执行的任务单元

使用GetLogicalProcessorInformation获取逻辑处理器的详细信息(NUMA节点数、物理CPU数、CPU核心数、逻辑CPU数、各级Cache)

不过必须XP SP3以上才行.所有API大全: https://msdn.microsoft.com/en-us/library/windows/desktop/aa363804(v=vs.85).aspx -------------------------------------------------------------------------------- 现在多核处理器已经很普及了,市场主流是双核处理器,还有4核.8核等高端产品.而且Intel推广了超线程技术(Hyper-Threa

cpu个数、核数、线程数、Java多线程关系的理解+物理cpu数和cpu核数和逻辑cpu数和vcpu区别

1.cpu个数.核数.线程数.Java多线程关系的理解 URL地址:https://blog.csdn.net/helloworld0906/article/details/905471592.物理cpu数和cpu核数和逻辑cpu数和vcpu区别 URL地址:https://blog.csdn.net/budonglaoshi123/article/details/84325720 原文地址:https://www.cnblogs.com/curedfisher/p/12204102.html

Linux性能优化从入门到实战:07 CPU篇:CPU性能优化方法

性能优化方法论 ??动手优化性能之前,需要明确以下三个问题: ??(1)如何评估性能优化的效果? 确定性能的量化指标.测试优化前的性能指标.测试优化后的性能指标. ??量化指标的选择.至少要从应用程序和系统资源这两个维度,分别选择不同的指标:1)应用程序的维度,我们可以用吞吐量和请求延迟来评估应用程序的性能.2)系统资源的维度,我们可以用 CPU 使用率来评估系统的 CPU 使用情况. ??行性能测试注意点:1)避免性能测试工具干扰应用程序的性能:2)避免外部环境的变化影响性能指标的评估. ??

Linux性能优化从入门到实战:03 CPU篇:CPU上下文切换

??linux操作系统是将CPU轮流分配给任务,分时执行的.而每次执行任务时,CPU需要知道CPU寄存器(CPU内置的内存)和程序计数器PC(CPU正在执行指令和下一条指令的位置)值,这些值是CPU执行任务所依赖的环境,也就是CPU上下文. ??CPU上下文切换,就是把前一个任务的CPU上下文(CPU寄存器和程序计数器)保存起来,然后加载入新任务的上下文到CPU寄存器和程序计数器中,最后跳转到程序计数器所指的位置,运行新任务. ??保存下来的上下文会在系统内核中,并在任务重新调度执行时再次加载进

主流手机CPU与电脑CPU的差距又多大

如今,主流手机CPU都是四核.八核,联发科甚至开始研发十核了,而且主频也越来越高.因此,不少人认为手机CPU已经能够媲美电脑CPU了. 其实过CPU性能不能只看核数和主频,下面小编将从架构.工艺.主频.核心等方面,为大家比较一下手机与电脑CPU的差别,看看差距到底有多大. 一.架构差异 架构只相当于一座建筑的框架,是最基本也是极为重要的部分.电脑CPU的架构有X86.X64等,而手机CPU主流是ARM架构,从ARM7.ARM9发展到Cortex-A7.A8.A9.A12.A15. PC机是冯.诺

cpu利用率和cpu 队列

SIP的第四期结束了,因为控制策略的丰富,早先的的压力测试结果已经无法反映在高并发和高压力下SIP的运行状况,因此需要重新作压力测试.跟在测试人员后面做了快一周的压力测试,压力测试的报告也正式出炉,本来也就算是告一段落,但第二天测试人员说要修改报告,由于这次作压力测试的同学是第一次作,有一个指标没有注意,因此需要修改几个测试结果.那个没有注意的指标就是load average,他和我一样开始只是注意了CPU,内存的使用状况,而没有太注意这个指标,这个指标与他们通常的限制(10左右)有差别.重新测

Linux下区分物理CPU、逻辑CPU和CPU核数

判断依据: 一个物理封装的CPU(通过physical id区分判断)可以有多个核(通过core id区分判断). 而每个核可以有多个逻辑cpu(通过processor区分判断). 一个核通过多个逻辑cpu实现这个核自己的超线程技术. cpu cores 条目包含位于相同物理封装中的内核数量. siblings 条目列出了位于相同物理封装中的逻辑处理器的数量. // proc文件用processor做索引,是因为processor是拥有其下所列所有信息的最小单位.方便查看细化信息. //例如如果