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