加州老李2011-10-26 04:09:38

大家都知道,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,同时执行四个线程。

加州老李2011-10-26 04:32:11
多说一句: 程序不等于线程。
baitu2011-10-26 04:33:44
谢谢科普!
LovChina2011-10-26 10:37:38
为什么intel比arm耗电多了,hp要用arm做server,intel不行了
徒劳2011-10-26 14:17:01
谢谢科普!那么多核CPU能不能跑超线程呢?
加州老李2011-10-26 15:12:46
Intel的Core i7支持Hyper-Threading。
xinliji2011-10-26 18:14:08
谢谢你!似乎还是蛮难懂的。。。是不是说,如果软件编得就是单线程或不互补
xinliji2011-10-26 18:17:32
如果能知道哪些application能更好的利用多核,就对买电脑的人有真正的指导意义了
xinliji2011-10-26 18:31:11
还有,同时run不同的applications,比方说photoshop和firefox, skype,多核应该比单核好吧?
mc33612011-10-26 20:27:28
你上面大概把process和thread搞混了吧?线程是thread 一个程序可以多线程
朱歌亮2011-10-26 21:04:30
俺也是这么认为的。
加州老李2011-10-26 21:05:51
我没记错的话,“thread”这个概念出现较晚,好像是Solaris里最先有的。
加州老李2011-10-26 21:22:04
记得80年代出版的UNIX书里,无论操作系统生成的“process”,还是被另一个process生成的“process”
mc33612011-10-26 21:51:56
但是不能把thread和process混淆,100年前还没有电脑,呵呵
mc33612011-10-26 21:52:31
20万年前连人都没有,哈哈
千里一盏灯2011-10-27 01:19:15
还是不太懂,干嘛不多用几个CPU,一块妈妈板上装10个CPU,不就快多啦?
加州老李2011-10-27 03:37:27
老朽知识老化,真的老了 :-)
加州老李2011-10-27 04:06:00
这样的话,这10个CPU之间的通讯速度和它们跟内存的通讯速度会严重约束计算机的整体速度。
企鹅肥肥2011-10-27 05:34:46
也不是,早期的Unix也是有线程的,不过是叫light process,而不是叫thread,但和thread差不多
企鹅肥肥2011-10-27 05:40:27
Intel是ASIC,而AMR是RSIC, 如果执行相同的操作,AMR的指令数要比Intel要少,
企鹅肥肥2011-10-27 05:43:15
现在的Linux,process和thread是很严格地不同的。的确无法混同。Thread
企鹅肥肥2011-10-27 05:46:18
搞IPC,完全没有必要啊,地址空间都共享了,何必还IPC。thread比process块,除非很有
kdkboy2011-10-28 05:56:38
我原来公司专门设计一个主板,调配CPU通讯和负荷,速度超快,TB级别
LovChina2011-10-28 15:22:24
HP and Calxeda have teamed up to build servers based on ARM's lo
old_taoist2011-10-29 19:51:03
没那么简单划分,现代的x86 cpu早已进入混合时代了,x86指令经片上翻译成微指令
old_taoist2011-10-29 20:01:03
现在的趋势是用GPU加速计算。cpu之作调度。
old_taoist2011-10-29 20:05:34
那也比core之间通讯慢
old_taoist2011-10-29 20:06:36
软件是按每个cpu插座收费的
企鹅肥肥2011-11-04 07:44:16
谢谢科普