【C++多线程编程学习(1)】-CPU个数、CPU核心数、CPU线程数

转自:CPU个数、CPU核心数、CPU线程数(by kimsimple)

 

CPU个数即CPU芯片个数。

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

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

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

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

 


多核CPU

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

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

通常,把将两个或更多独立处理器封装在一个单一集成电路(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核封顶了,因为成本控制的原因。

 


1、在Windows中,在cmd命令中输入“wmic”,然后在出现的新窗口中分别输入

“cpu get Name”,

“cpu get NumberOfCores”,

“cpu get NumberOfLogicalProcessors”

即可查看物理CPU数、CPU核心数、线程数。
如下图所示:

Name:表示物理CPU名称
NumberOfCores:表示CPU核心数 
NumberOfLogicalProcessors:表示CPU线程数

2、在cmd命令中输入“systeminfo”,可以查询物理CPU个数。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
概述采一期下位机是基于ART-PI开发板开发,服务器采用阿云学生版云服务器ECS,单机器部署支持每秒采集2000台设备温度压力据,连接对象(下称下位机)可以是设备也可以是网关(连接协议目前仅支持基于WebSocket,详情参考SocketIO),下位机采集或汇总的据并通过 WIFI 上传云端远程实时监视,也可本地连接串口与 PC 端通讯,上位机通过自定义解析据后展示到相关订阅端(可同时同步到多个Android手机)。对于物联网初创公司、自由开发者、学生,是一个相当实用的设计。据流向完全透明,不存在黑匣子,有助于开发者快速掌握物联网运行流程。 开发环境硬件:ART-PI RT-Thread版本:RT-Thread Nano v3.1.3 开发工具及版本:CubeMX v6.1.0、Keil v5.33、VSCode v1.51.1、Android Studio 4.1.1、HBuilder X v2.9.8.20201110、NodeJS v14.15.1、MongoDB v4.4.1(1主2副)、redis v6.0 RT-Thread使用情况概述内核部分:调度器。 软件包:CJSON v1.7.7 硬件框架ART-Pi是 RT-Thread 团队经过半年的精心准备,专门为嵌入式软件工程师、开源创客设计的一款极具扩展功能的 DIY 开源硬件。 软件框架说明本项目采用WebSocket协议进行设备与云端互联,本期目标,融合CubeMX、keil、RTT Nano的同时提供OTA功能和压力传感器(LPS22HH)的示例。本项目可分为4个部分: 第一部分 服务端 本期采用关键技术有nodejs、eggjs、socketio、mongodb等,主要为设备提供云端连接服务、可定制化协议解析、消息转发,报警等功能。 第二部分 后台管理端 本期采用关键技术有vue、element-ui、vue-router、vuex、monaco-editor等,主要提供一些权限分组管理,设备模型的定义(不同协议的解析),设备OTA测试。 第三部分 下位机 本期采用关键技术有RTT Nano、CJson、WebSocketClient等,主要实现了设备温度采集上传,模拟温度过载报警,OTA,以及C++14的示例代码。 第四部分 移动端 本期采用关键技术有uniapp、vue、echarts等,主要实现了设备据实时上报、据下发、模拟报警的功能。 软件模块说明sensor_thread_entry:传感器线程,采集据并通过WebSocketClient发送给云端。 led_ thread _entry:闪灯线程,用来指示当前系统的运行状态。 wifi_ thread _entry:wifi线程,用来处理来自服务器的据。 演示效果视频: 代码地址请下载附件获取代码。 若使用上有啥问题,请联系QQ: 296565890,微信:xiaosichuan2013 本项目遵循 Apache 许可证 2.0 版本,所包含4个端均可以免费在商业产品中使用,不需要公布应用程序源码,没有潜在商业风险。 真心希望有志同道合的朋友一期参与此开源项目 工作时间不一定及时回复,忘谅解! 比赛感悟纸上得来终觉浅,绝知此事要躬行。陆游的这首诗,完美的诠释了我在这次比赛中的收获。 物联网的时代,RTOS多线程核心,通过综合对比,我最终选择了国产的RT-Thread。 通过本次比赛,让我深深体会到RTT Nano的小而美,尤其是在改动部分源码后,RTT Nano支持C++ 14,lambda、auto、函重载、类模板用起来真是爽!(开启C++支持) 虽然本次比赛没有用到RT-Thread提供的软件包,但手动写一次WebSocketClient收获已经很满意了。 最后感谢主办方提供了这么好的一个平台,不仅能展示自我,也能学到很多知识,还要感谢论坛上那些解决我问题以及提供技术支持的大佬,希望有朝一日我也能给开源社区贡献一份自己力量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值