TOP

CPU工作方式、多核心、超线程技术详解[转贴](二)
2019-08-23 00:32:12 】 浏览:260
Tags:CPU 工作 方式 核心 线程 技术 详解 转贴

PU利用率尤其是运行多进程/线程程序上面来看,是开了HT的i7好。

 

3)那i5 4核4线程,相比较关了HT的i7(4核4线程)一样吗?

i5是4个服务生4个厨子。i7如果关了HT,也是4个服务生4个厨子。乍一看差不多,至少在大厨(PU)、服务生(AS)的数量上打成平手。但是i7的单核处理能力要稍强于i5,也就是说i7的厨子是特级厨子,i5的厨子的一级厨子。所以其实i5和i7还是有差距,但是从理论上来说,差距并不是特别大。

 

总结:理论上来说,i3和i5的差距是相当的大。而i5和i7差距主要是厨子(PU)质量的好坏和多出的那4个服务生。其实差距并不是像i5-i3之间的差距那么大。

 

4)那对与同一个CPU,比如i7,开了HT有什么优点:

并行能力增强处理多进程/线程的能力加强,对于支持多线程的游戏提供比较明显。

CPU利用率增高一般理论上,总体性能提高差不多20%-30%。从这个角度上看,i3开启了超线程,提高了20%-30%整体水平。但是,这就意味着能和i5打成平手了??? 如果这是真的话,i5也不要卖了。两个大厨(i3),不是我等拿个鞭子抽抽就能顶的上4个大厨(i5)的。。。。

  

5) 开HT有什么缺点

单核性能下降

一般在5%-15%之间,主要表现在运行单线程程序。两个AS的额外开销比一个AS的开销要大

比喻:只有一个客人来点餐,指定一号大厨,但你两个服务生站在那儿,而这个客人可能就会过一下脑子,想想,我是找服务生1A呢,还是服务生1B呢?? 这么一想,半分钟过去了。。。是不是还不如只有一个服务生来的简单。

所以现实中我们超算系统测试跑分的时候一般都是要HT关掉的,因为追求极限性能。现在最新的CPU可以做到5%-15%的性能损耗,而老的超线程CPU,比如10几年前的老奔腾4/志强,我见过单核性能超过50%的性能损耗的,启动HT的额外开销极大。

 

电费增加,一般功耗平均上升30%。你多请的4个服务生,不用给工钱???

 

- 在核特别多的情况下,比如双槽服务器的情况下,容易发生拥塞

比喻:试想一个超大的食堂,有56个服务员(双CPU,28核,56线程至强E5系列CPU),来了几百个人过来,是不是会乱了套?大家刚进食堂一开始都不知道该排哪个队了(一般决定排哪个队,是操作系统定下的)。(在操作系统的安排下)一个客人,把56个队列一条一条地查一遍,看看哪条队客人最少就排哪条。。。。

我想问的是,现实中你去食堂打饭,假设有56个队,你会一条一条的检查,找出人最少的队,然后再做决定吗?估计你56条队查完,15分钟过去了,你的小伙伴饭都吃完了。这时候,是不是我将队伍减少到28个队,对你来说会相对容易一些?(当然28队也还还是够累的)

 

老系统支持的差

比如老的Win2008,Win2000,对超线程支持比较差。

比喻:如果食堂比较空,没人。这时候来了两个客人A和B来订餐,结果两个人分别跑到同一个大厨的两个服务生1A和1B上排队(一般这都是操作系统干的好事),你能发现哪儿不对劲吗?

正确的做法应该是A去一号大厨(1号物理核),B去二号大厨(2号物理核)。你让A,B都挤到一号大厨那里,二号、三号、四号大厨啥事没有,闲到死,有意义吗?

其实问题就在于,操作系统不能分辨物理核和逻辑核。看那里有两个服务生,两个队列,就以为有两个大厨,所以把客人A和B分别打发到1A和1B去排队,完全不知道后厨的实际情况 - 究竟有几个大厨。

  

回到现实,我究竟需要什么样的CPU?

这里,我分情况讨论。

 

1)上网,聊QQ,简单的办公用(比如Office文档处理),老人机

赛扬其实就可以了。赛扬是2核2线程,其实和2核4线程的i3相比,在对付这类应用时候,抛去主频,缓存的区别,i3的优势完全发挥不出来。注意i3的价格差不多是赛扬的3倍。

还有一个就是奔腾,奔腾其实就是主频稍高,缓存稍大的赛扬。同样是2核2线程,性能比赛扬只高一点点,但价格差不多可以买1.5个赛扬。个人觉得没什么意思,多出这钱,真不如买个高级点的键盘、鼠标、显示器。至少,使用方面的体验是实实在在的。

  

2)轻量级游戏,平面图形工作者(比如PS)

i3其实挺适合。小游戏,还有一些网页游戏,PS什么的,虽然是多线程程序(比如PS),但其实对CPU的负担不会特别重。反而瓶颈有可能是磁盘I/O速度等。所以开了超线程的i3对付这类情况,其实问题不大。

  

3)重量级大型3D游戏

现在的3D游戏,会将很多比如3D加速的任务交由GPU去做,GPU工作的时候,一般CPU都会处于blocking(中断等待)状态,直到GPU指令执行完毕,CPU再继续。所以这里就会出现两个瓶颈,一个来自CPU,一个来自GPU。

 

对于3D游戏来说,一般来看i5完全可以胜任,你说要不要上i7?当然,你腰包鼓上i7没问题,跑分肯定会提高。但如果预算有限的话,可能将钱投入到升级显卡上面来的更简单直接。比如,i5配中高端显卡比如970这种比较均衡,相对于i7+950。

  

拥有i7性能的E3值不值得入手?当然值得入手。但如果E3 1231v3价格被JS价格炒过了头,还不如用i5算了。

  

4) 3D图形工作者

 

如果工作中出现很多3D建模,渲染啥的。CPU很重要,GPU也重要。CPU(逻辑)核越多越好,因为各种渲染的方法,从算法上来说,都是可以高度并行的。每个逻辑核,都可以给你任务队列塞得满满的,最大程度的榨干CPU的性能。绝对不会出现偌大一个食堂,只有一两个顾客这种情况。而这时候,E3/i7,和i5的区别就有可能非常大。

 

GPU负担也重,而且普通的游戏显卡比如GTX980这种有可能不能胜任,而需要Quadro图形卡。不是说980不够强悍,而是因为一些图形相关的驱动/库是没有被加入GTX980这种游戏卡的,没驱动就没法在GPU上面跑,跑不了就只能依靠CPU来模拟运行。结果就是,CPU本身的逻辑要跑,而GPU跑不了的,最后也是通通让你CPU跑。你说CPU不足够强悍,还能活命吗?

所以这类应用,一定要挑一个强悍的CPU,比如i7, E3这种,甚至是中档志强E3系列 - 6核12线程,8核16线程的CPU。

   

进阶篇 - 为什么系统跑分测试的时候,我们是关闭超线程的

 

这时候你可能会问,既然HT能提高系统的性能,尤其是处理多线程程序的能力,为什么你们系统测试时要关掉。比如一个4核8线程的E3 1231v3关掉HT后,只剩4核4线程,也就是4个服务员,4个大厨,4个队列。性能不是会变差吗?CPU空闲时间不是会高吗?

 

这其实是个很实际、很有趣的问题,按道理来说我们应该开超线程。

 

例子:

比如来了64个客人,每个人都要一个盖浇饭,两种情况

1)到了一个8个服务生、8个队列的、4个大厨的食堂,每个队列有几个客人? - 8个。

2)到了一个4个服务生

请关注公众号获取更多资料


CPU工作方式、多核心、超线程技术详解[转贴](二) https://www.cppentry.com/bencandy.php?fid=86&id=229792

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Delphi 7~XE系列升级安装Indy10.6 下一篇没事做的Delphi版的俄罗斯方块游..

评论

验 证 码:
表  情:
内  容: