外行人的说法,要精确地说法可能还是要请教资工系的同学.
以前作业系统一定要完全的完成一个程式,才会进行下一个,但是
程式在运行的过中,CPU并不总是满载的,有时候会有等待的时间.
所谓多线程,指的就是CPU可以利用这个时间去处理另一个任务.
例如你看医生,医生可能会帮你喷药,喷完药会要你在旁边等一阵
子.这个时候医生基本上是闲下来的.这段闲下来的时间,作业系统
会去妥善的纪录跟配置那个喷完药的病人等下回来要做些什么,然
后拿这段空出来的时间去看下一个病人.下一个病人看到一半,也许
他也需要做些处理,CPU又会空出时间来,他会再回去处理原本那个病人.
所以实际上只有一个医生,但因为医生可以利用的空下来的时间来
处理另一个个病人. 因此"看起来",我们会发现诊间里面总是挤了
两个人,这就给人一种诊间里面有两个医生(CPU)的错觉.
至于多核心,这就很好理解了,所谓双核心,就是里面真的有两个医
生,各看各的病人互不相干. 当然如果这两位医生又同时有双线程
的功能,那就会产生出一种四核心的错觉.
但讲的这么美好,双线程真的打得过双核心吗? 当然不可能,实际
上,双线程提升的效率大概只有20%.并没有想像中美好.这种多线程
的游戏,intel已经是其中的佼佼者了.
当然另一种思路就出来了,既然多线程终究只是一种多核心的"模拟"
,有没有可能我们真的尽可能做出多核心呢? 可以,这就是后来几年
AMD在作的事情.
AMD的基本思路是,他尽可能的做出完整的多核心,但是完整的多核心
,成本会相当的高,所以他做了一种特殊的CPU设计.我们想像一下,
一般我们去看医生的时候,是不是会先有很多小东西会有护士小姐帮
我们做? 量血压,量身高,询问病情等等,然后才是去看医生?
所以AMD的想法是,我把CPU的功能给切割开.什么意思呢?我们的电脑中
涉及的计算主要有两类,一个是整数运算,一个是浮点数运算.在大多数
的使用情境下,整数运算大约占80%,浮点大约占20%.AMD的想法就是,
我做出两个整数计算的CPU然后搭配一个浮点运算的CPU.让浮点运算
,是共用的,而需求量大的计算整数运算则是专用.
这就有点像是,两个医生共用一个护士,那些较少用到的计算需求,如
果真的用到了,就丢给护士处理,CPU主要就处理最常使用的部分.
所以AMD的双核心常被称为1.5核心. 因为他其实是一颗完整的CPU
(整数+浮点)再配上另一颗整点运算核心.
那这样子的搭配实际的效果如何呢? 当然比多线程的假多核心好很多,
实际上的效率大概会比单核单线程多出80%.
所以简单的说,跟原始的单核单线程相比:
多线程 ~ 120%, 残双核心 ~ 180%
后来的CPU,不管如何发展,不管如何设计,大致上也离不开这两种架构.
这么说来,AMD的CPU不是比intel好得多? 当然不! 如果是真的,AMD就不
会节节败退了. 事实上AMD主要是做设计,制程技术主要还是靠代工厂,
但是intel在CPU的制程技术上是遥遥领先所有的对手的(包括台积跟三
星),这就导致了AMD的架构,理论值虽好,但由于制程技术的落后,所以
总的效能,功耗,各方面的指标都是低于intel的,唯一可以比的可能只有
CP值.加上AMD后来更专注在显卡的发展,CPU技术自然就逐渐被intel拉
开差距了.但这几年手机芯片大行其道,其实不管intel也好,AMD也罢,
都是ARM架构下的x86苦主,两间公司都在设法挣扎出现在的泥沼中.
不过这是后话,就不多提了...