多个线程可以读一个变量,只有一个线程可以对这个变量进行写,到底要不要加锁
6522023-08-21
老铁们,大家好,相信还有很多朋友对于cpu几核几线程重要吗和为什么不建议少用多线程的相关问题不太懂,没关系,今天就由我来为大家分享分享cpu几核几线程重要吗以及为什么不建议少用多线程的问题,文章篇幅可能偏长,希望可以帮助到大家,下面一起来看看吧!
本文目录
1、重要。
一般一个核心对应了一个线程,而intel开发出了超线程技术,1个核心能够做到2个线程计算,而6个核心则能够做到12个线程,超线程技术的好处就是无需增加物理核心就可以明显的进步CPU多线程功能,毕竟增加物理核心是需要占据非常大的核心面积,成本也随之增加。而线程数是一种逻辑的概念,说白了就是虚拟出的CPU核心数,现在无论是intel还是AMD都具备超线程技术。
举个例子,CPU可以想象成是一个银行,CPU核心就相当于柜员,而线程数就相当于开通了几个窗口,柜员和窗口越多,那么同时办理的业务就越多,速度也就越快。
如果您买电脑的用途主要是玩游戏,游戏主要是依靠显卡。由于游戏需要的是最简单粗暴的计算工作,游戏方面对多核心有些无用武之地。目前的主流游戏基本都是双核心调用,四核或者更多核心的比较少,因此多核心的CPU在玩游戏时基本核心处于半闲置状态,利用率较低,不妨考虑一些高主频CPU,单核性能更强,电脑速度更快。如果是游戏或者软件多开,那么多核的优势就显露出来了。
2、设计:渲染/建模用途
如果是一般专业3D建模的话,显卡才是重中之重。而视频渲染、3D渲染主要看重的是CPU的核心数量,多核心多线程并行处理,则显得十分重要,并需要CPU更快更大的缓存来暂存海量的运算数据,这个时候CPU频率反而是其次的。
现在主流时4核心八线程和八核心十六线程的笔记本电脑为主,最好配备八核十六线程CPU处理器的笔记本电脑,四核八线程的笔记本电脑也逐渐淘汰了,十六线程就是同时运行十六个线程,配备八核十六线程的笔记本电脑运行起来非常流畅。
超线程是英特尔基于同步多线程(SMT)的专有技术,以提高并行性。它基本上将每个物理核心表示为两个逻辑核心,每个核心可以运行一个线程。因此,四核CPU会被操作系统当作是8核CPU。
超线程背后的基本思想非常简单:有一些场景使逻辑核心陷入停滞状态。例如,在高速缓存未命中时,核心将被停顿几百个周期,直到从主存储器中取出数据。在停滞期间,另一个线程(在另一个逻辑核心上)可以开始执行大约一百个周期。也就是说,让闲置的CPU资源能更有效的利用起来。
但超线程这并不总是有益的,并且在许多现实场景中可能会妨碍性能。例如,当两个线程竞争相同的物理核心并且超线程间接地增加这种争用时,存在更多的高速缓存未命中。因此,要发挥出超线程的作用,还需要操作系统和应用软件的配合。
当然,现在应用和操作系统对超线程的优化是越来越好,我们在之前也针对超线程作过一些测试:
从测试可以看出,有超线程的Corei7-6700K它的综合性能比没有超线程的Corei5-7600K平均要好19%左右。
简单来说,超线程能让CPU的效率更高,有效地提高CPU性能,改善系统的稳定性。对于游戏玩家和办公用户来说,线程多自然是多多益善,但有个前提,它的单核性能也要足够才行啊。
我觉得你首先得知道线程是什么,线程(Thread)是操作系统能够进行运算调动的最小单位,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务。而且电脑同一时间可以执行多个进程,你以为现在的多核处理器和超线程技术是拿来做什么的……
各种多线程技术
即使是单核处理器也可以实现MultiThreading多线程,多线程的实现方式大致有两种,一个是TemporalMultiThreading时间多线程,另一个则是SimulateMultiThreading同步多线程。前者是每个时钟周期内切换多个线程,只需要处理器有单个执行单元,处理器设计相对简单,而后者则需要处理器有多个执行单元,可在同一时间内执行多个指令,这样可以充分发挥超标量处理器的能力,提升灵活性和资源利用率,不过处理器更复杂。
现在Intel与AMD的消费级处理器用的都是同步多线程,因为他们本来就是超标量处理器,所以要支持SMT在架构上并不用做太多改变,需要添加的是在一个周期中从多个线程获取指令的能力,以及一个更大的寄存器文件来保存来自多个线程的数据。
对于单个处理器核心来说来说,虽然每秒钟可以处理成千上万条指令,但是在一个时间点上只能处理一条指令(单个线程),SMT多线程就能够把一个物理处理器在软件层变成两个或以上的逻辑处理器,可以使处理器在某一时刻同步并行处理多个线程,再加上现在的处理器基本上都是多核心的,实际上现在的处理器在单一时间内可以处理多个线程任务,这个看你系统的任务管理器有多少个CPU框框就知道了。
OK,关于cpu几核几线程重要吗和为什么不建议少用多线程的内容到此结束了,希望对大家有所帮助。