浅谈多核心CPU和SoC芯片及其工作原理

浅谈多核心CPU和SoC芯片及其工作原理,第1张

核心数表示的是这个U由多少个核心组成,核心数量越多CPU的运转速度越快,性能越好。对于同一个数据处理,一核CPU相当于1个人处理数据,双核CPU相当于2个人处理同一个数据,因此处理核心数越多,CPU的工作效率也就越高。

线程是程序运行流的最小单元,一个程序是有一个或多个线程组成。源于多任务处理的需要。线程数越多,越有利于同时运行多个程序,因为线程数等同于在某个瞬间CPU能同时并行处理的任务数。

扩展资料

CPU组成:

1、逻辑部件

英文Logic components;运算逻辑部件。可以执行定点或浮点算术运算 *** 作、移位 *** 作以及逻辑 *** 作,也可执行地址运算和转换。

2、寄存器

寄存器部件,包括寄存器、专用寄存器和控制寄存器。 通用寄存器又可分定点数和浮点数两类,它们用来保存指令执行过程中临时存放的寄存器 *** 作数和中间(或最终)的 *** 作结果。 通用寄存器是中央处理器的重要部件之一。

3、控制部件

英文Control unit;控制部件,主要是负责对指令译码,并且发出为完成每条指令所要执行的各个 *** 作的控制信号。

其结构有两种:一种是以微存储为核心的微程序控制方式;一种是以逻辑硬布线结构为主的控制方式。

参考资料来源:百度百科-CPU

没猜错的话,楼主指的应该是i5、i7的cpu吧?
核心数就是cpu的实际的物理核,我们常用的都是一个核心,一个线程。而新cpu都用了超线程技术,通过冗余硬件共享,虚拟出一个线程,所以按线程计算的话,楼主的cpu就是8核的。这个你可以查看任务管理器,点击性能,里面有8个小方块,每个代表一个核心。
其实超线程技术,早在服务器上就实现了,比台式机更霸道。当然,很多软件更注重的是单核心的效率,所以,楼主不喜欢那么多核心的话,可以在bios中关闭几个,性能吗,会有一定的折扣,不过省电。
这样回答不知楼主是否明白,可以继续留言交流讨论。。

一般的一个核心一个线程,英特尔的超线程技术使酷睿I系列的CPU,一个核心使用2个线程。
奔腾双核是2核2线程,酷睿I3是双核4线程,酷睿I5不使用超线程技术,所以是四核四线程,酷睿I7是四核八线程。
AMD的CPU全系列都不支持超线程技术,所以一个核心一个线程,6核心就是6线程,8核心就是8线程。

一般来说,CPU的线程数跟CPU的核心数一致。但是部分技术如超线程技术会让一个物理核心模拟成逻辑核心,用较少的芯片面积代价换取更强的多任务处理能力。但是更多核心的CPU,为求运行稳定所以频率都较之同Die的CPU主频要低。Intel和AMD都有自家的TurboBoot和TurboCore技术,其技术思路都是针对目前大部分游戏应用对多核心优化不足,以关闭部分核心的代价而换取其他核心在更高主频上工作,最终达到不超过TPD的情况下高效工作。
部分AMD的CPU具有所谓“开核”功能(详细解析点我),其根本原因是厂商并没从硬件层进行核心屏蔽,ACC技术(高级时钟校正)可以增强CPU的容错性能,导致部分屏蔽核心重新开启运作。
由于AMD的CPU都是由同一款晶片上通过屏蔽L3或者核心从而获得其他低端产品,所以所有AMD同代的CPU都理论上存在破解可能性,不过是否能够破解成功,一般只取决你是否额外加钱挑出能开的CPU,以及厂商的市场策略。对玩家的建议单机玩家:选择有TurboBoot和TurboCore等动态加速技术很重要,对于《幕府将军》和《GTA》以及今后的游戏应用中,多核心优化是大趋势,同时具有动态加速+多核心是游戏玩家的首选。网游玩家:网络游戏耗时通常较长,并且无法接受副本过程中蓝屏死机,带有节能效果的S系列(Intel)和e系列(AMD)的CPU更适合他们;如果考虑到多开的话,三核心到四核心的CPU更适合网游玩家。 一般就是说,核心就是工作的单位,线程就是通道。形象点来说就是:如果是双核心四线程,就是有2个工作的工人,有四条流水线来运输工人处理后的数据,如果是双核心双线程,就是有2个工作的工人,只有两条流水线来运输工人处理后的数据

简单通俗的话来介绍。,
多路处理器是服务器上的技术,就是多个CPU,
CPU最初发展的时候是一个CPU一个处理核心,CPU的性能主要靠提高核心工作频率来提高,由于物理限制,不能把CPU的核心无限提高频率,所以发展出来双核心的CPU。
两个核心一起工作需要靠软件的支持。软件要明白怎么把任务分给两个核心让他们一起工作,这样变相的提高了CPU的处理性能,现在新出的软件都支持多核心了。
本来是一个核心一个线程,不过INTEL发明了一个核心跑出两个线程,这叫超线程技术。所以有双核4线程的说法。

1、物理CPU数:机器主板上实际插入的cpu数量,比如说你的主板上安装了一块8核CPU,那么物理CPU个数就是1个,所以物理CPU个数就是主板上安装的CPU个数。

2、物理CPU核数:单个物理CPU上面有多个核,物理CPU核数=物理CPU数✖️单个物理CPU的核
3、逻辑CPU核数:一般情况,我们认为一颗CPU可以有多个核,加上intel的超线程技术(HT), 可以在逻辑上再分一倍数量的CPU core出来。逻辑CPU核数=物理CPU数✖️单个物理CPU的核2
4、超线程技术(Hyper-Threading):就是利用特殊的硬件指令,把两个逻辑CPU模拟成两个物理CPU,实现多核多线程。我们常听到的双核四线程/四核八线程指的就是支持超线程技术的CPU。

1、并行:两件(多件)事情在同一时刻一起发生。
2、并发:两件(多件)事情在同一时刻只能有一个发生,由于CPU快速切换,从而给人的感觉是同时进行。
3、进程和线程
进程是资源分配的最小单位,一个程序有至少一个进程。线程是程序执行的最小单位。一个进程有至少一个线程。
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
4、单核多线程:单核CPU上运行多线程, 同一时刻只有一个线程在跑,系统进行线程切换,系统给每个线程分配时间片来执行,看起来就像是同时在跑, 但实际上是每个线程跑一点点就换到其它线程继续跑。
5、多核多线程:每个核上各自运行线程,同一时刻可以有多个线程同时在跑。

1、对于单核:多线程和多进程的多任务是在单cpu交替执行(时间片轮转调度,优先级调度等),属于并发
2、对于多核:同一个时间多个进程运行在不同的CPU核上,或者是同一个时间多个线程能分布在不同的CPU核上(线程数小于内核数),属于并行。
3、上下文切换:上下文切换指的是内核( *** 作系统的核心)在CPU上对进程或者线程进行切换。上下文切换过程中的信息被保存在进程控制块(PCB-Process Control Block)中。PCB又被称作切换帧(SwitchFrame)。上下文切换的信息会一直被保存在CPU的内存中,直到被再次使用。

CPU 亲和性(affinity)就是进程要在某个给定的 CPU 上尽量长时间地运行而不被迁移到其他处理器的倾向性。这样可以减少上下文切换的次数,提高程序运行性能。可分为:自然亲和性和硬亲和性
1、自然亲和性:就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,Linux 内核进程调度器天生就具有被称为 软 CPU 亲和性(affinity) 的特性,这意味着进程通常不会在处理器之间频繁迁移。这种状态正是我们希望的,因为进程迁移的频率小就意味着产生的负载小。Linux调度器缺省就支持自然CPU亲和性(natural CPU affinity): 调度器会试图保持进程在相同的CPU上运行。
2、硬亲和性:简单来说就是利用linux内核提供给用户的API,强行将进程或者线程绑定到某一个指定的cpu核运行。Linux硬亲和性指定API:taskset

taskset [options] mask command [arg]
taskset [options] -p [mask] pid

taskset 命令用于设置或者获取一直指定的 PID 对于 CPU 核的运行依赖关系。也可以用 taskset 启动一个命令,直接设置它的 CPU 核的运行依赖关系。

CPU 核依赖关系是指,命令会被在指定的 CPU 核中运行,而不会再其他 CPU 核中运行的一种调度关系。需要说明的是,在正常情况下,为了系统性能的原因,调度器会尽可能的在一个 CPU 核中维持一个进程的执行。强制指定特殊的 CPU 核依赖关系对于特殊的应用是有意义的
CPU 核的定义采用位定义的方式进行,最低位代表 CPU0,然后依次排序。这种位定义可以超过系统实际的 CPU 总数,并不会存在问题。通过命令获得的这种 CPU 位标记,只会包含系统实际 CPU 的数目。如果设定的位标记少于系统 CPU 的实际数目,那么命令会产生一个错误。当然这种给定的和获取的位标记采用 16 进制标识。
0x00000001
代表 #0 CPU
0x00000003
代表 #0 和 #1 CPU
0xFFFFFFFF
代表 #0 到 #31 CPU

-p, --pid
对一个现有的进程进行 *** 作,而不是启动一个新的进程
-c, --cpu-list
使用 CPU 编号替代位标记,这可以是一个列表,列表中可以使用逗号分隔,或者使用 "-" 进行范围标记,例如:0,5,7,9
-h, --help
打印帮助信息
-V, --version
打印版本信息

如果需要设定,那么需要拥有 CAP_SYS_NICE 的权限;如果要获取设定信息,没有任何权限要求。

taskset 命令属于 util-linux-ng 包,可以使用 yum 直接安装。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/zz/13200759.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-19
下一篇 2023-06-19

发表评论

登录后才能评论

评论列表(0条)

保存