cpu、core、processor、thread 等概念,有的是物理的有的是逻辑的,在不同语境中含义不尽相同。“电脑有几个 cpu ?”

“多线程程序设置多少个线程数效果好?”

“linux cpuinfo / top 里展示的 cpu 的信息如何理解?”

物理 cpu 数(physical cpu)

指主板上实际插入的 cpu 硬件个数(socket)。(但是这一概念经常被泛泛的说成是 cpu 数,这很容易导致与 core 数,processor 数等概念混淆,所以此处强调是物理 cpu 数)。

由于在主板上引入多个 cpu 插槽需要更复杂的硬件支持(连接不同插槽的 cpu 到内存和其他资源),通常只会在服务器上才这样做。在家用电脑中,一般主板上只会有一个 cpu 插槽。

核心(core)

一开始,每个物理 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 线程同时执行的能力。

查看 cpu 信息

linux 系统

查看物理 cpu 数:cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l

查看每个物理 cpu 中 核心数(core 数):cat /proc/cpuinfo | grep "cpu cores" | uniq

查看总的逻辑 cpu 数(processor 数):cat /proc/cpuinfo| grep "processor"| wc -l

查看 cpu 型号:cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c

判断 cpu 是否 64 位:检查 cpuinfo 中的 flags 区段,看是否有 lm (long mode) 标识

lscpu 命令可以同时看到上述信息。比如:

...

CPU(s): 24

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

Thread(s) per core: 2

Core(s) per socket: 6

Socket(s): 2

...

window 系统

x86 与 x86_64 (摘自 维基百科)

x86

泛指一系列基于 Intel 8086 且向后兼容的中央处理器指令集架构。

x86 的 32 位架构一般又被称作 IA-32,全名为 “Intel Architecture, 32-bit”。

值得注意的是,Intel 也推出过 IA-64 架构,虽然名字上与 “IA-32” 相似,但两者完全不兼容,并不属于x86指令集架构家族。

x86-64

又称 x64,即英文词 64-bit extended,64 位拓展 的简写,是 x86 架构的 64 位拓展,向后兼容于 16 位及 32 位的 x86 架构。

不同厂商有不同的称呼:x64 于 1999 年由 AMD 设计,AMD 首次公开 64 位集以扩展给 x86,称为 “AMD64”

其后也为 Intel 所采用,Intel 称为 “Intel 64”

苹果公司和 RPM 包管理员称为 “x86-64” 或 “x86_64”

甲骨文公司及 Microsoft 称为 “x64”

BSD 家族及其他 Linux 发行版则使用 “amd64”,32 位版本则称为 “i386”(或 i486/586/686)

Arch Linux 成为 x86_64

多线程程序线程数

为了让我们的多线程程序更好的利用 cpu 资源,我们通常会先了解机器拥有的 processor 数,有若干手段可以获取这一信息:cpuinfo 中查看:比如上文中的 cat /proc/cpuinfo | grep "processor" | wc -l

top 命令查看:cpu0,cpu1,...

编程:比如在 Java 中用 Runtime.getRuntime().availableProcessors()

具体在多线程程序中设置线程数多大,对计算密集型的程序有的建议是 processor count + 1,有的建议是 processor count 的 1.5 倍,都是经验值,实测为准。

小结一台完整的计算机可能包含一到多个物理 cpu

从单个物理 cpu (physical cpu)的角度看,其可能是单核心、双核心甚至多核心的

从单个核心(core)的角度看,还有 SMT / HT 等技术让每个 core 对计算机操作系统而言用起来像多个物理 core 差不多

总的逻辑 cpu 数 = 物理 cpu 数 * 每颗物理 cpu 的核心数 * 每个核心的超线程数

线程

cpu核数和逻辑个数的区别_cpu 核心数与线程数相关推荐

  1. cpu核数和逻辑个数的区别_CPU的核心数与线程数的关系和区别

    我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面就来解释一下CPU的核心数与线程 ...

  2. cpu核数和逻辑个数的区别_CPU的核心数、线程数的关系和区别

    展开全部 一.关系:e69da5e6ba903231313335323631343130323136353331333431363030 1.线程数可以模拟出不同的CPU核心数. CPU的核心数指的是 ...

  3. cpu核数和逻辑个数的区别_CPU逻辑核心数和物理核心数是什么意思?

    展开全部 1.物理cpu数:主板上实际插入的cpu数量,可以数不重e69da5e887aa3231313335323631343130323136353331333366303666复的 physic ...

  4. cpu核数和逻辑个数的区别_CPU核数和线程数有什么作用?核心和线程哪个重要?

    [文章导读]我们在组装电脑选购硬件的时候,大多数的人群更在乎CPU的性能,除了考虑架构.工艺.单核性能等,还需要考虑核心和线程数量,CPU从早期的单核,发展到现在的双核.多核,除了核心数量之外,还有线 ...

  5. cpu核数和逻辑个数的区别_解释一下CPU的核心数与线程数的关系和区别

    我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级.CPU从早期的单核,发展到现在的双核,多核.CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与 ...

  6. cpu核数和逻辑个数的区别_区别: CPU 路数、CPU 核数、物理 CPU 个数、逻辑 CPU 个数...

    Overview CPU 路数(物理 CPU 个数) 机器的主板上实际插入插槽的 CPU 个数 CPU 核数 CPU 核数:单块 CPU 上面能处理数据的芯片组的数量,如双核.四核等 (cpu cor ...

  7. cpu核数和逻辑个数的区别_Linux下区分物理CPU、逻辑CPU和CPU核数

    判断依据: 一个物理封装的CPU(通过physical id区分判断)可以有多个核(通过core id区分判断). 而每个核可以有多个逻辑cpu(通过processor区分判断). 一个核通过多个逻辑 ...

  8. cpu核数和逻辑个数的区别_处理器个数和处理器核心数的区别

    展开全部 处理器个数和处理器核心数的区别: 1.概念不同 处理器(CPU)个数是指芯片组理论32313133353236313431303231363533e59b9ee7ad943133343137 ...

  9. 物理cpu数和cpu核数和逻辑cpu数和vcpu区别

    物理cpu数和cpu核数和逻辑cpu数和vcpu区别 1.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) 2.cpu核数:单块CPU ...

最新文章

  1. C语言中within函数,vfprintf() - C语言库函数
  2. linux6.6 ip 设置,centos 6.6默认iptable规则详解
  3. live writer 51cto博客设置
  4. ICCV 2019 开源论文 | ShapeMatchingGAN:打造炫酷动态的艺术字
  5. 【Linux】一步一步学Linux——ip命令(183)
  6. sklearn 决策树(分类树、回归树)的 重要参数、属性、方法理解
  7. 为什么 HTTP3.0 使用 UDP 协议?
  8. 使用ActiveMQ和HornetQ通过WebSocket通过STOMP轻松进行消息传递
  9. linux 安装nfs 客户端,在CentOS 7上安装NFS服务器和客户端
  10. crontab 每天凌晨8点_凌晨3点47分,嘉兴8岁女孩竟独自站在街头,原因竟是…
  11. 如何在ps中调整文字的行距和间距_Wps如何调整文字字符的间距
  12. 初步看,我要在公司赚取更多的工资,钱多活少离家近
  13. mysql基线检查_Mysql安全基线检查
  14. Delete与Top连用限制删除行
  15. 学习下新塘M0芯片的下载方法
  16. 党建活动献爱心,达飞云贷冬日送温暖
  17. Java 经纬度计算两个点的之间的距离工具类
  18. c语言图像峰值信噪比,PSNRSSIM
  19. win10系统进行电脑分盘
  20. 大数据时代的回收生意经

热门文章

  1. 【笨木头Lua专栏】基础补充01:巧说table的几种构造方式
  2. 2023年家族办公室研究报告
  3. D语言与C++做映射时需要注意的事情
  4. 模仿360安全卫士项目笔记9
  5. 深入浅出TCP/IP协议栈
  6. 判断三个String是否相等
  7. Ubuntu下GPU显存无法释放和多卡训练时候的一些总结
  8. Unity添加GIF动画
  9. Android自定义TabBar
  10. 神经网络初认识——BP神经网络(7月18,再次认识)