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

CPU个数即CPU芯片个数

CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。

线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核心数。比如,可以通过一个CPU核心数模拟出2线程的CPU,也就是说,这个单核心的CPU被模拟成了一个类似双核心CPU的功能。我们从任务管理器的性能标签页中看到的是两个CPU。 比如Inte l赛扬G460是单核心,双线程的CPU,Intel 酷睿i3 3220是双核心 四线程,Intel 酷睿i7 4770K是四核心 八线程 ,Intel 酷睿i5 4570是四核心 四线程等等。 对于一个CPU,线程数总是大于或等于核心数的。一个核心最少对应一个线程,但通过超线程技术,一个核心可以对应两个线程,也就是说它可以同时运行两个线程。

CPU的线程数概念仅仅只针对Intel的CPU才有用,因为它是通过Intel超线程技术来实现的,最早应用在Pentium4上。如果没有超线程技术,一个CPU核心对应一个线程。所以,对于AMD的CPU来说,只有核心数的概念,没有线程数的概念。 

CPU之所以要增加线程数,是源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。 因此,线程数是一种逻辑的概念,简单地说,就是模拟出的 CPU 核心数。一个核心最少对应一个线程,但英特尔有个超线程技术可以把一个物理线程模拟出两个线程来用,充分发挥 CPU 性能,即一个核心可以有两个到多个线程。

设计决定,intel给他的x86设计了逻辑线程=2*物理核心数,ibm的power8是逻辑线程=8*物理核心数

Hyper-Threading,超线程

多核CPU

多核心cpu主要分原生多核和封装多核。
  原生多核指的是真正意义上的多核,最早由AMD提出,每个核心之间都是完全独立的,都拥有自己的前端总线,不会造成冲突,即使在高负载状况下,每个核心都能保证自己的性能不受太大的影响,通俗的说,原生多核的抗压能力强,但是需要先进的工艺,每扩展一个核心都需要很多的研发时间。
  封装多核是只把多个核心直接封装在一起,比如Intel早期的PD双核系列,就是把两个单核直接封装在一起,但两核心只能共同拥有一条前端总线,在两个核心满载时,两个核心会争抢前端总线,导致性能大幅度下降,所以早期的PD被扣上了“高频低能”的帽子,要提高封装多核的性能,在多任务的高压下尽量减少性能损失,只能不断的扩大前端总线的总体大小,来弥补多核心争抢资源带来的性能损失,但这样做只能在一定程度上弥补性能的不足,和原生的比起来还是差了很多,而且后者成本比较高,优点在于多核心的发展要比原生快的多。

核心(Die)又称为内核,是CPU最重要的组成部分。CPU中心那块隆起的芯片就是核心,是由单晶硅以一定的生产工艺制造出来的,CPU所有的计算、接受/存储命令、处理数据都由核心执行。各种CPU核心都具有固定的逻辑结构一级缓存二级缓存、执行单元、指令级单元和总线接口逻辑单元都会有科学的布局。

双内核应该具备两个物理上的运算内核

HT技术超线程技术,是造就了PENTIUM 4的一个辉煌时代的武器,尽管它被评为失败的技术,但是却对P4起一定推广作用,双核心处理器是全新推出的处理器类别;HT技术是在处理器实现2个逻辑处理器,是充分利用处理器资源,双核心处理器是集成2个物理核心,是实际意义上的双核心处理器。

多核心处理器(英语:Multi-core processor),又称多核心微处理器,是在单个计算组件中,加入两个或以上的独立实体中央处理单元(简称核心,英语:Core)。这些核心可以分别独立地运行程序指令,利用并行计算的能力加快程序的运行速度。只有两个核心的处理器,称为双核心处理器(dual-core processor)。“多核心”通常是对于中央处理器(Central Processing Unit,CPU)而论的,但是某些时候也指数字信号处理器(DSP)和系统芯片(SoC)。

通常,把将两个或更多独立处理器封装在一个单一集成电路(IC)中的方案称为多核心处理器;而封装在不同IC中的独立处理器形成的计算机系统被称为多处理器

多核心处理器!=多处理器

多核心处理器可以在不将每个核心分别独立物理封装的情况下进行多任务处理(线程级并发处理Thread-Level Parallelism,TLP),这种形式的TLP通常被认为是芯片级多处理)。

单核多CPU与多核单CPU

一台计算机的处理器部分的架构

单核多CPU,那么每一个CPU都需要有较为独立的电路支持,有自己的Cache,而他们之间通过板上的总线进行通信。(一致性问题)

假如在这样的架构上,我们要跑一个多线程的程序(常见典型情况),不考虑超线程,那么每一个线程就要跑在一个独立的CPU上,线程间的所有协作都要走总线,而共享的数据更是有可能要在好几个Cache里同时存在。这样的话,总线开销相比较而言是很大的,怎么办?那么多Cache,即使我们不心疼存储能力的浪费,一致性怎么保证?

多核单CPU,那么我们只需要一套芯片组,一套存储,多核之间通过芯片内部总线进行通信,共享使用内存。在这样的架构上,如果我们跑一个多线程的程序,那么线程间通信将比上一种情形更快。

多个CPU常见于分布式系统,用于普通消费级市场的不多,多用于cluster,云计算平台什么的。多CPU架构最大的瓶颈就是I/O,尤其是各个CPU之间的通讯,低成本的都用100M以太网做,稍微好一点的用1000M以太网,再好的就用光纤等等,但无论如何速度和通量都比不上主板的主线。所以多CPU适用于大计算量,对速度(时间)不(太)敏感的任务,比如一些工程建模,或者像SATI找外星人这种极端的,跑上几千年都不着急的。而且多CPU架构更简单清晰,可以用消费级产品简单做数量堆叠,成本上有优势。而多核单CPU则适合对通讯I/O速度要求较快的应用,(相同核数量下)成本上也高一些,好像只有在超级计算机里会用到以万为单位的核心数,普通消费级产品也就是到16核封顶了,因为成本控制的原因。

在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中分别输入“cpu get Name”,“cpu get NumberOfCores”,“cpu get NumberOfLogicalProcessors”即可查看物理CPU数、CPU核心数、线程数。
如下图所示:

Name:表示物理CPU数 
NumberOfCores:表示CPU核心数 
NumberOfLogicalProcessors:表示CPU线程数
注释:VM虚拟机中的CPU选择的核心数实际是代表线程数。

输入“cpu get *”也可

2.在cmd命令中输入“systeminfo”,以下信息表示物理CPU有两个

[转发]CPU个数、CPU核心数、CPU线程数的更多相关文章

  1. 【转】CPU个数,核心数,线程数

    我们在买电脑的时候,经常会看cpu的参数,对cpu的描述有这几种:“双核”.“双核四线程”.“四核”.“四核四线程”.“四核8线程”……. 我们接触的电脑基本上都只有一个cup.cpu的个数很容易得到 ...

  2. centos查看系统cpu个数、核心书、线程数

    1.查看物理cpu个数 grep 'physical id' /proc/cpuinfo | sort -u | wc -l 2.查看核心数量 grep 'core id' /proc/cpuinfo ...

  3. Linux查看系统cpu个数、核心书、线程数

    现在cpu核心数.线程数越来越高,本文将带你了解如何确定一台服务器有多少个cpu.每个cpu有几个核心.每个核心有几个线程. 工具/原料 Linux服务器 方法/步骤   查看物理cpu个数 grep ...

  4. powershell 获取 CPU 物理 / 逻辑核心数

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/   获取 CPU 逻辑核心数的方法为:总逻辑核心数 = 物理核心数 * 每核逻辑核心数   其中 ...

  5. cpu个数、核数、线程数、Java多线程关系的理解

    cpu个数.核数.线程数.Java多线程关系的理解 2017年12月08日 15:35:37 一 cpu个数.核数.线程数的关系 cpu个数:是指物理上,也及硬件上的核心数: 核数:是逻辑上的,简单理 ...

  6. Linux上如何查看物理CPU个数,核数,线程数

    首先,看看什么是超线程概念 超线程技术就是利用特殊的硬件指令,把两个逻辑内核模拟成两个物理芯片,让单个处理器都能使用线程级并行计算,进而兼容多线程操作系统和软件,减少了CPU的闲置时间,提高的CPU的 ...

  7. CPU的物理数、核心数、线程数

    最近了解下CPU的参数,主要是对常见的CPU参数指标:物理数.核心数以及线程数做了下了解.增长了点自己的见识,方便自己回忆和分享,记录下来.参考了网上的一些说明并加以整理,形成该随笔.主要参考链接如下 ...

  8. Linux查看 kennel , 物理CPU个数、核数、逻辑CPU个数

    other article on my list: 查看进程 https://i.cnblogs.com/PostDone.aspx?postid=9231604&actiontip=%E4% ...

  9. 【Linux】查看物理CPU个数、核数、逻辑CPU个数

    ①物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id) cat /proc/cpuinfo| grep "physical id ...

  10. CPU密集型和IO密集型(判断最大核心线程的最大线程数)

    CPU密集型和IO密集型(判断最大核心线程的最大线程数) CPU密集型 1.CPU密集型获取电脑CPU的最大核数,几核,最大线程数就是几Runtime.getRuntime().availablePr ...

随机推荐

  1. Ubuntu 下 unzip用法

    unzip [参数] <压缩文件> 参数: -P <密码> zip 压缩包的密码-f 覆盖原有文件-d <路径> 指定解压路径-n 解压缩时不覆盖原有文件-o 不经 ...

  2. Android多媒体之照相机

    1.调用系统的照相机 public void click(View view) { // 激活系统的照相机拍照 Intent intent = new Intent("android.med ...

  3. apk反编译——基础是内功,得牢,飞跃还得多看源码,不同思想的碰撞才能产生火花,加油!!!!!!!!

    1.获取java源代码 1.1 dex2jar&jd-gui dex2jar:将apk反编译成class文件(classes.dex转化成jar文件) jd-gui:查看APK中classes ...

  4. python-Lock进程同步解决互斥

    #!/usr/bin/python from multiprocessing import Process,Lock import time,sys def A(lock): with lock: f ...

  5. 用table布局和div布局的区别

    table布局的渲染是将整个table全部渲染出来,如果网路不给力的情况下,整个table会卡死在页面div布局的话,页面渲染,会一个一个的div渲染,网页出现会一个一个出来,不管网速怎样,不会全局卡 ...

  6. IDEA的学习总结

    IntelliJ IDEA是一款非常优秀的JAVA编辑器,初学都可会对其中的一些做法感到很别扭,刚开始用的时候我也感到很不习惯,在参考了网上一些文章后在这里把我的一些经验写出来,希望初学者能快速适应它 ...

  7. redis数据类型(三)hash类型

    一.hash类型   hash是一个string类型的field和value的映射表.添加,删除操作都是O(1)(平均).   hash特别适合用于存储对象.相对于将对象的每个字段存成单个string ...

  8. 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境(服务器端及客户端)(转)

    近期想改公司内部的源码管控从TFS为git,发现yubinfeng大侠有关git的超详细大作,现将其转载并记录下,以防忘记,其原博客中有更加详细的git及.net开发相关内容.原文地址:http:// ...

  9. Java代码签名证书申请和使用指南

    第1步 下载签名工具 Step 1: Download Signing Tools 如果您还没有签名工具,请到SUN公司网站免费下载:http://java.sun.com/j2se/,推荐下载JDK ...

  10. The servlets named [create_subscription] and [servlet.create] are both mapped to the url-pattern [/create] which is not permitted [duplicate]

    原因,代码中在public前已经有了默认的配置路径: 如: @WebServlet("/ShowUser")public class ShowUser extends HttpSe ...