CPU核心数与线程数详解

CPU:

        CPU就是中央处理单元,物理CPU数就是CPU的硬件个数(socket)。

核心:

        一开始,每个物理 cpu 上只有一个核心(a single core),对操作系统而言,也就是同一时刻只能运行一个进程/线程。 为了提高性能,cpu 厂商开始在单个物理 cpu 上增加核心(实实在在的硬件存在),也就出现了双核心 cpu(dual-core cpu)以及多核心 cpu(multiple cores),这样一个双核心 cpu 就是同一时刻能够运行两个进程/线程的。

同时多线程技术(simultaneous multithreading)和 超线程技术(hyper–threading/HT)

      本质一样,是为了提高单个 core 同一时刻能够执行的多线程数的技术(充分利用单个 core 的计算能力,尽量让其“一刻也不得闲”)。

       simultaneous multithreading 缩写是 SMT,AMD 和其他 cpu 厂商的称呼。 hyper–threading 是 Intel 的称呼,可以认为 hyper–threading 是 SMT 的一种具体技术实现。

在类似技术下,产生了如下等价术语:

  • 虚拟 core: virtual core
  • 逻辑 processer: logical processor
  • 线程:thread

        所以可以这样说:某款采用 SMT 技术的 4 核心 AMD cpu 提供了 8 线程同时执行的能力;某款采用 HT 技术的 2 核心 Intel cpu 提供了 4 线程同时执行的能力。

        为了给电脑更高的性能,一个cup中集成了多个内核,这样电脑的性能就成倍的提升。随着科技的发展,我们发现每个内核的性能也变的十分强大,于是一个内核又被分成两个线程。但是,我们要注意的是,一个cpu分成多个内核,这是物理的分隔,拆开cpu是可以看到的;但是一个内核被分成两个线程是一种超线程技术,也就是串代码,操作系统会认为一个线程也是一个内核,有点欺骗操作系统的感觉。

       如果操作系统说我的cpu有四核,这时我们要提高警惕,是真四核还是四线程(假四核)。

这是我的台式机windows10:

任务管理器显示有4核。

设备管理器显示依然为4核 

CPU核心数与线程数详解_第1张图片

CPU核心数与线程数详解_第2张图片

原来我的电脑是假四核。

其实windows有一个命令是可以查看的:

在cmd命令中输入“wmic”,回车;然后再输入“cpu get ”。 
NumberOfCores:表示CPU核心数 
NumberOfLogicalProcessors:表示CPU线程数 

CPU核心数与线程数详解_第3张图片

修改处理器个数:

CPU核心数与线程数详解_第4张图片
物理内核个数是不能修改的,但是假内核个数是可以修改的:

CPU核心数与线程数详解_第5张图片

CPU核心数与线程数详解_第6张图片

处理器个数修改成3,保存重启电脑。

任务管理器中已经改变:

CPU核心数与线程数详解_第7张图片

设备管理器未发生改变:

CPU核心数与线程数详解_第8张图片

如何禁用超线程技术
Hyper-Threading是Intel微处理器采用的一种技术,这种技术能够让微处理器在操作系统和应用程序中的性能表现的类似于两个处理器一样。

进入BIOS,找到   Hyper-Threading选项设置成disable。

CPU核心数与线程数详解_第9张图片

保存设置,启动电脑。

任务管理器发生了变化:

CPU核心数与线程数详解_第10张图片

设备管理器也发生了变化:变成了2核。

在window10系统中查看着些参数变的十分简单: 
打开任务管理器

CPU核心数与线程数详解_第11张图片

那么核心数和线程数到底有什么不同昵?

一、意思不同

      八核十六线程,八核是指CPU的核心有八个,核心(Core)又称为内核,是CPU最重要的组成部分,十六线程是指CPU的多线程线程数有十六个。六核十二线程是指六个核心,CPU的多线程线程数有十二个。

二、技术不同

       八核十六线程是指使用了超线程技术,把一个物理核心,模拟成两个逻辑核心,理论上要像十六颗物理核心一样在同一时间执行十六个线程,所以设备管理器和任务管理器中会显示出十六个核心,但事实上并不是真正的八个核心,八核十六线程就是物理八核加上虚拟八核。

CPU核心数与线程数详解_第12张图片

三、优势

        前者内核和线程数更高一些,在多任务运行时更有优势,但也要看CPU主频的高低,单看核心数和线程数不是很明显。

        八核十六线程在有些情况下比如任务量不大能让CPU利用率提高很多从而使其性能接近十六核CPU的水平,而在另外一些情况比如CPU占用100%满负荷工作的情况下,这时候八核十六线程和十六核的性能表现差距明显。

 

 

 

你可能感兴趣的:(服务器)