【计算机】CPU工作方式、多核心、超线程技术详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

【计算机】CPU⼯作⽅式、多核⼼、超线程技术详解
CPU架构
要谈超线程和多核,就不得不谈CPU的架构和逻辑。

⽆关的技术细节太多,这⾥略去。

我们重点谈⼀下CPU中两个相关的模块:
1)Processing Unit(运算处理单元),简称PU
2)Architectual State(),简称AS
PU⼀般就是执⾏运算,⽐如算数运算加减乘除。

AS执⾏⼀些逻辑和调度⽅⾯的操作,⽐如控制内存访问等。

单核CPU(先从简单的谈起)
⼀般⼀块传统意义的CPU上会有⼀个PU、⼀个AS。

⽐喻:⼀个⼩饭馆(单核CPU),夫妻⽼婆店,⽼板兼⼤厨厨房炒菜,⽼板娘兼服务员点单。

这不,来了⼀个客⼈,⾸先,⾛到⽼板娘的收银台前,看菜单准备点单。

差不多5分钟后,客⼈点完了⼀份盖浇饭。

⽼板娘抄好了单,递给了在后厨的⽼公。

⽼公开始炒菜。

在这个例⼦中,⽼板娘可以理解成AS,⽼板/⼤厨可以理解称PU(⼲实事的)。

多核CPU
这⾥说的多核,是多个物理核,⽐如i3的双核,i5的4核。

这中架构下,每⼀个物理核都有⼀个PU和⼀个AS。

所以。

对于i3来说,就有总共两个PU,两个AS。

对于i5来说,就有总过4个PU,4个AS。

⽐喻:上⾯⼩饭馆的列⼦,对于5、6个客⼈可能还能忙的过来。

但设想⼀下⼦来他个16个客⼈,这队估计要排到街上了。

如果再告诉你,每10分种就有16个新客⼈过来点单。

完了。

⽣意估计是做不下去了 - ⽼板、⽼板娘忙到死。

这时,我们就需要⼀个更⼤的单位⾷堂(
)。

有4个服务⽣、4个⼤厨。

4个服务⽣同时点单,4个⼤厨同时开炒(1号服务⽣专给⼀号⼤厨下单,⼆号服务神⽣专给⼆号⼤厨下单。

以此类推)。

这样相⽐⼩饭馆⼀个⽼板娘、⼀个客⼈队列,这⾥成了4个队列,效率顿时⽐⼩饭馆提⾼4倍。

16个客⼈,平均分配成4个队列,每个队列就只有4个客⼈了,情况是不是好了很多?
这个应该还是⽐较容易理解的。

超线程技术(HT)
超线程⼀般指的是硬件架构⽅⾯的:通过增加逻辑处理器5%的裸晶⾯积,模拟出两个AS ,以此换来cpu15%~30%的性能提升。

简单的说吧,在原来⼀个core包含⼀个AS和PU的基础上多模拟出⼀个AS
⽐喻:刚刚那个单位⾷堂,4个服务⽣,4个⼤厨,4个队列。

会不会效率问题?
有!
设想每个客⼈都有看单选单的时候,你能保证每个客⼈都看两眼就下单?有的客⼈难免会磨磨蹭蹭,问东问西,⼀个菜点它个15分钟。

⽽设想⼤厨平均炒⼀个菜只要10分种。

那剩下的那5分钟呢?⼤厨在厨房闲着没事⼲,喝茶看报纸。

时间全被客⼈-服务⽣点菜这个环节给浪费掉了。

那有没有解决⽅法?我想⼤家应该都能猜出来了
--- 增加服务⽣!
这时候,我们给每个⼤厨多增加⼀个服务⽣,从⼀个服务⽣变成了两个服务⽣(AS),服务⽣1A和服务⽣1B开两个队列,同时给⼀个⼤厨(PU)下单。

这样,当出现服务⽣1A的客⼈15分钟单⼦都没有下完的情况下,1B的客⼈单⼦很有可能3分钟下好送给⼤厨开炒了(PU),这样⼤厨就不会站在厨房傻等1A客⼈的订单。

这样,最⼤限度地榨⼲⼤厨的劳动⼒(⼤厨估计要骂娘了),⽽对于CPU来说,最⼤限度的提⾼了CPU的使⽤率,减少了CPU的(IDLE)空闲时间。

有的时候,真不能怪⼤厨(PU)不卖⼒,⽽是你服务⽣(AS)叫单太墨迹。

在下图中,橙⾊和蓝⾊表明⼤厨(PU/CPU)是在⼯作的,⽩⾊格⼦表明⼤厨(PU)是空闲的。

A图是单核没有没有⽤超线程,B图双核没有超线程,图C是单核启⽤了超线程。

可以清晰地看到,从单核增加到双核(在没有超线程的情况下),CPU使⽤率并没有增加。

⽽⽤了超线程后,整体CPU使⽤率提⾼了,虽然只是⼀个核。

左边的图是
,右边的图是双核,不带超线程。

看出区别了吧?
现在来看实际中多核和超线程的相关问题:
1)i3 双核4线程,和i5 4核4线程,是⼀回事吗?
⾸先先说⼀下i3,i3是双核,开了HT以后,变成4个逻辑核(4线程)。

最新的Win10我不知道,但在Win7⾥⾯逻辑核是被显⽰成物理核的,和i5⼀样。

那i3和i5⼀回事吗?如果你觉得是⼀回事,那我上⾯的东东全都是⽩写了。

i3是4个服务⽣两个厨⼦,i5是4个服务⽣4个厨⼦,你觉得⼀样吗
2)那i5 4核4线程,相⽐较开了HT的i7(4核8线程)⼀样吗?
i5是4个服务⽣4个厨⼦。

i7如果开了HT,是8个服务⽣4个厨⼦。

当然从CPU利⽤率尤其是运⾏多进程/线程程序上⾯来看,是开了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去排队,完全不知道后厨的实际情况 - 究竟有⼏个⼤厨。

相关文档
最新文档