对于 CPU 的线程感到了困惑....

2017-04-07 08:15:31 +08:00
 NonClockworkChen
笔记本双核 4 线程的 i5,打开任务管理器,有 4 框.定为 ABCD. 双核为 CPU I 和 CPU II.
A 30% B 30% C 30% D 30%
是 CPU I 60%和 CPU II 60%吗

A 100% B 0% C 100% D 0%
A 100% B 100% C 100% D 100%的区别是
上一种刚好全效工作,
下一种,已经拖欠了一半性能吗
3687 次点击
所在节点    问与答
25 条回复
wevsty
2017-04-07 08:27:30 +08:00
超线程技术并和完整的物理核心是有所区别,但并不是完全就是摆设。
超线程核心你可以当成一个不完整的物理核心,某些情况下能提供大约物理核心 30%的性能。
操作系统上 4 核心占用 100%才是占满所有的性能。
xzpjerry731
2017-04-07 08:28:52 +08:00
问题的本质应该是这个百分比是怎么得到的?
NonClockworkChen
2017-04-07 08:29:53 +08:00
@wevsty 多谢,我去知乎看看超线程去.
NonClockworkChen
2017-04-07 08:30:29 +08:00
@xzpjerry731 对的,我就是不懂,这个百分比到底意味着什么
ryd994
2017-04-07 08:42:49 +08:00
两个线程其实可以各种执行一部分简单操作,但同一时间只能有一个执行复杂操作,另一个只能等。当然,在操作系统看来,等也计入使用时间
这个百分比就是使用时间 /总时间
2 个 100 和 4 个 100 的区别就在于有没有人想用那两个空的
如果有,又刚好是复杂指令,那就只能等,但也记为忙

实际上 CPU 要复杂的多, pipeline 几十个阶段,会要等的地方很多。比如分支预判错误,或者缓存 miss 之类的。没有超线程的话这时候只能干等。有超线程的时候另一个线程可以直接切入。
ryd994
2017-04-07 08:46:22 +08:00
打个比方吧,一个人,一张桌子,有一堆文件要处理
如果一个文件有问题,这时候只能干等回音
超线程有两张桌子,要等的时候立刻在另一张桌上上继续处理其他
桌子上有文件的时间比例,就是占用率
等的时候,文件也在桌子上
zmj1316
2017-04-07 09:15:40 +08:00
我记得 intel 的超线程利用的是每个核心的浮点和整数两个运算器,一个核心上的两个超线程可以分别使用浮点和整数运算器,从而提高利用率。没有超线程的话一条指令只会用到其中一个
NonClockworkChen
2017-04-07 09:21:16 +08:00
@ryd994 我想我已经 get 到关键点了,等也算使用时间,我能理解那个百分比了.
NonClockworkChen
2017-04-07 09:22:44 +08:00
@zmj1316
超线程技术是在一颗 CPU 同时执行多个程序而共同分享一颗 CPU 内的资源,理论上要像两颗 CPU 一样在同一时间执行两个线程, P4 处理器需要多加入一个 Logical CPU Pointer (逻辑处理单元)。因此新一代的 P4 HT 的 die 的面积比以往的 P4 增大了 5%。而其余部分如 ALU (整数运算单元)、 FPU (浮点运算单元)、 L2 Cache (二级缓存)则保持不变,这些部分是被分享的。

一个物理核模拟成两个逻辑核,你那个好像是一个物理核心又对应两个物理核,感觉不太对.
NonClockworkChen
2017-04-07 09:26:11 +08:00
除了 v 友的回复,还可以参考本文,一起理解.
http://bbs.zol.com.cn/diybbs/d231_821332.html
zmj1316
2017-04-07 09:29:58 +08:00
@NonClockworkChen 哪里有两个物理核了...我就是说一条普通指令一般只用到 ALU 和 FPU 中的一个,所以超线程可以让两个一起用啊。一个核心有 ALU 和 FPU 怎么就变两个物理核了....
至于百分比估计是把流水线阻塞什么的也算进去了吧
ghostheaven
2017-04-07 09:32:19 +08:00
通常情况下单核即使 100%也不能发挥全部性能,仍然有些器件经常空闲,超线程就是模拟一个核心,把这些空闲的器件用上
NonClockworkChen
2017-04-07 09:38:19 +08:00
@zmj1316 "分别使用浮点和整数元算器" 忘记是可以分开来使用的,我把他们当成一个整体,所以脑补成'分别使用对应的浮点和整数运算器了' ,以为你再说有 2 个浮点 2 个整数....抱歉.
结合 12 楼的回复,你说的也很有道理.
NonClockworkChen
2017-04-07 10:26:46 +08:00
补充一下,10 楼贴的科普文章,有一个点,作者应该没提(因为解释给装机爱好者听的,作者在文章前声明了,不能像写论文那么搞...)

作者没提到,厨师在煲汤的时候,还可以同时做凉拌菜.

煲汤(浮点运算) 凉拌菜(整数运算).

一开始没理解 5 楼说的第一句话,还好后面的 v 友(7/12 楼),又反复提到,并解释了.
NonClockworkChen
2017-04-07 10:29:37 +08:00
百度百科的超线程的工作原理,建议也看下.
QAPTEAWH
2017-04-07 10:44:12 +08:00
感觉就是 ALU 、 cache 不变,寄存器提供两套
rockyou12
2017-04-07 11:42:47 +08:00
虽然上面说技术的很多,但 lz 是 win10 嘛? win10 的任务管理器显示 cpu 占用是有 bug 的,应该会比实际占用显示的小很多
NonClockworkChen
2017-04-07 12:36:15 +08:00
@rockyou12 不是 win10,只是 win7,多谢提示.
yttyhf2006
2017-04-08 13:48:55 +08:00
@rockyou12 什么原因,有链接吗?想看看
rockyou12
2017-04-08 22:46:20 +08:00
@yttyhf2006 http://www.bilibili.com/video/av6898414/ 这个视频最后说了这个问题。和我平时用的时候感觉一直,具体什么原因就不知道了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/353090

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX