"一心不可二用"的简单科普

来源: 加州老李 2011-10-25 20:09:38 [] [博客] [旧帖] [给我悄悄话] 本文已被阅读: 次 (1093 bytes)
本文内容已被 [ 加州老李 ] 在 2011-10-26 06:04:48 编辑过。如有问题,请报告版主或论坛管理删除.

大家都知道,CPU越快越好。但大概很少人知道CPU的利用率非常低。

以及Pentium 4为例,P4有七个执行单元(Execution Unit),其中两个EU每个时钟周
期能做两次运算,其余5个能做一次运算。因为7个EU是互相独立的,这样理论上P4每
个时钟周期可以做9次运算。但是INTEL发现,典型的应用下,P4的利用率只有35%。

这是因为一个CPU只能执行一个线程(process)。如果有多个线程需要执行,CPU分时执行多个
线程。而CPU的7个EU分工做不同的运算。比如有的专门做浮点运算,有的专门做定
点运算,还有的做图形相关运算。

如果一个线程只需要大量定点运算,那么显然有的EU非常忙,而另外的EU却闲着。
INTEL推出"超线程"Pentium 4,一个CPU可以同时执行两个线程,如果这两个线程有互补性
质,比如一个大量做定点运算,另一个大量做浮点运算,那么CPU的利用率就会显著
提高。这是最早的"双核"处理器。但这只是虚拟双核。如果同时执行的两个线程没
有互补性质,CPU的速度会更慢。

后来出现了真正的双核处理器,相当于把两个CPU做在一起,每个核就是一个CPU,可
以单独执行一个线程。从操作系统角度看,一个双核CPU就是两个CPU,同时执行两
个线程。一个四核CPU就是四个CPU,同时执行四个线程。

所有跟帖: 

多说一句: 程序不等于线程。 -加州老李- 给 加州老李 发送悄悄话 加州老李 的博客首页 (123 bytes) () 10/25/2011 postreply 20:32:11

你上面大概把process和thread搞混了吧?线程是thread 一个程序可以多线程 -mc3361- 给 mc3361 发送悄悄话 (0 bytes) () 10/26/2011 postreply 12:27:28

俺也是这么认为的。 -朱歌亮- 给 朱歌亮 发送悄悄话 朱歌亮 的博客首页 (0 bytes) () 10/26/2011 postreply 13:04:30

记得80年代出版的UNIX书里,无论操作系统生成的“process”,还是被另一个process生成的“process” -加州老李- 给 加州老李 发送悄悄话 加州老李 的博客首页 (70 bytes) () 10/26/2011 postreply 13:22:04

20万年前连人都没有,哈哈 -mc3361- 给 mc3361 发送悄悄话 (0 bytes) () 10/26/2011 postreply 13:52:31

我没记错的话,“thread”这个概念出现较晚,好像是Solaris里最先有的。 -加州老李- 给 加州老李 发送悄悄话 加州老李 的博客首页 (291 bytes) () 10/26/2011 postreply 13:05:51

但是不能把thread和process混淆,100年前还没有电脑,呵呵 -mc3361- 给 mc3361 发送悄悄话 (0 bytes) () 10/26/2011 postreply 13:51:56

老朽知识老化,真的老了 :-) -加州老李- 给 加州老李 发送悄悄话 加州老李 的博客首页 (0 bytes) () 10/26/2011 postreply 19:37:27

也不是,早期的Unix也是有线程的,不过是叫light process,而不是叫thread,但和thread差不多 -企鹅肥肥- 给 企鹅肥肥 发送悄悄话 企鹅肥肥 的博客首页 (91 bytes) () 10/26/2011 postreply 21:34:46

现在的Linux,process和thread是很严格地不同的。的确无法混同。Thread -企鹅肥肥- 给 企鹅肥肥 发送悄悄话 企鹅肥肥 的博客首页 (0 bytes) () 10/26/2011 postreply 21:43:15

搞IPC,完全没有必要啊,地址空间都共享了,何必还IPC。thread比process块,除非很有 -企鹅肥肥- 给 企鹅肥肥 发送悄悄话 企鹅肥肥 的博客首页 (56 bytes) () 10/26/2011 postreply 21:46:18

谢谢科普! -baitu- 给 baitu 发送悄悄话 baitu 的博客首页 (0 bytes) () 10/25/2011 postreply 20:33:44

为什么intel比arm耗电多了,hp要用arm做server,intel不行了 -LovChina- 给 LovChina 发送悄悄话 (0 bytes) () 10/26/2011 postreply 02:37:38

Intel是ASIC,而AMR是RSIC, 如果执行相同的操作,AMR的指令数要比Intel要少, -企鹅肥肥- 给 企鹅肥肥 发送悄悄话 企鹅肥肥 的博客首页 (118 bytes) () 10/26/2011 postreply 21:40:27

HP and Calxeda have teamed up to build servers based on ARM's lo -LovChina- 给 LovChina 发送悄悄话 (91 bytes) () 10/28/2011 postreply 07:22:24

没那么简单划分,现代的x86 cpu早已进入混合时代了,x86指令经片上翻译成微指令 -old_taoist- 给 old_taoist 发送悄悄话 (340 bytes) () 10/29/2011 postreply 11:51:03

谢谢科普 -企鹅肥肥- 给 企鹅肥肥 发送悄悄话 企鹅肥肥 的博客首页 (0 bytes) () 11/03/2011 postreply 23:44:16

谢谢科普!那么多核CPU能不能跑超线程呢? -徒劳- 给 徒劳 发送悄悄话 (0 bytes) () 10/26/2011 postreply 06:17:01

Intel的Core i7支持Hyper-Threading。 -加州老李- 给 加州老李 发送悄悄话 加州老李 的博客首页 (0 bytes) () 10/26/2011 postreply 07:12:46

谢谢你!似乎还是蛮难懂的。。。是不是说,如果软件编得就是单线程或不互补 -xinliji- 给 xinliji 发送悄悄话 (86 bytes) () 10/26/2011 postreply 10:14:08

如果能知道哪些application能更好的利用多核,就对买电脑的人有真正的指导意义了 -xinliji- 给 xinliji 发送悄悄话 (23 bytes) () 10/26/2011 postreply 10:17:32

还有,同时run不同的applications,比方说photoshop和firefox, skype,多核应该比单核好吧? -xinliji- 给 xinliji 发送悄悄话 (0 bytes) () 10/26/2011 postreply 10:31:11

现在的趋势是用GPU加速计算。cpu之作调度。 -old_taoist- 给 old_taoist 发送悄悄话 (0 bytes) () 10/29/2011 postreply 12:01:03

还是不太懂,干嘛不多用几个CPU,一块妈妈板上装10个CPU,不就快多啦? -千里一盏灯- 给 千里一盏灯 发送悄悄话 千里一盏灯 的博客首页 (0 bytes) () 10/26/2011 postreply 17:19:15

这样的话,这10个CPU之间的通讯速度和它们跟内存的通讯速度会严重约束计算机的整体速度。 -加州老李- 给 加州老李 发送悄悄话 加州老李 的博客首页 (0 bytes) () 10/26/2011 postreply 20:06:00

我原来公司专门设计一个主板,调配CPU通讯和负荷,速度超快,TB级别 -kdkboy- 给 kdkboy 发送悄悄话 (0 bytes) () 10/27/2011 postreply 21:56:38

那也比core之间通讯慢 -old_taoist- 给 old_taoist 发送悄悄话 (0 bytes) () 10/29/2011 postreply 12:05:34

软件是按每个cpu插座收费的 -old_taoist- 给 old_taoist 发送悄悄话 (0 bytes) () 10/29/2011 postreply 12:06:36

请您先登陆,再发跟帖!

发现Adblock插件

如要继续浏览
请支持本站 请务必在本站关闭/移除任何Adblock

关闭Adblock后 请点击

请参考如何关闭Adblock/Adblock plus

安装Adblock plus用户请点击浏览器图标
选择“Disable on www.wenxuecity.com”

安装Adblock用户请点击图标
选择“don't run on pages on this domain”