多核cpu工作原理
我所理解的多核CPU工作原理,欢迎有兴趣的来讨论。
这几天回答了几个关于双核的问题,整理汇总如下,有些是推测的,如有明白人请指正。
双核的优势不是频率,而是对付同时处理多件事情。一个核心理论上同时只能干一件事,比如你同时在后台BT下载,前台一边看电影一边拷贝文件一边联QQ……,这么多程序同时需要CPU来响应,怎么办?靠操作系统!
window本身就是多线程操作系统(DOS就是单线程系统,dos下2核4核和单核没区别,处理一个任务时必须停下来等待处理结束才能干下一件事),它可以把每个处理任务划分为多“份”,多个处理任务按顺序排成队列,这样单核心的CPU可以一次处理一“份”,轮流处理每个程序的“份”,这样你感觉就是CPU同时在干几件事了。但如果CPU不够强劲,同时排队等待处理的东西太多了,你就会感觉系统在等待,有延时,反应慢等等症状。再或者某个程序出现错误,死机了,很可能造成后面排队的其他任务都在那里干等,造成系统无反应的情况,按热启键都没反应。理论上如果现在有颗6G频率的单核CPU,单论处理性能应该与1个3G双核近似,甚至更高一些,因为目前双核比单核也就快不到2倍。
原本计算机一直以单核心的工作频率作为性能的衡量,之所以放弃单核是因为目前的技术水平令单核性能继续提升遇到了瓶颈,4G P4的夭折让依靠频率提升性能的路子走进死胡同,不得已改走多核心路线,以核心数量来弥补处理能力的不足。不过慢慢的这些多核心的频率又开始奔3G去了,随着45nm的出现,双核上4G应该可以想象,所以一方面每个核心的性能还在发展,另一方面多核心集成的手段双管齐下,这样CPU的性能可以迅速提升,继续保持摩尔定律。
多核CPU就是基板上集成有多个单核CPU,早期PD双核需要北桥来控制分配任务,核心之间存在抢二级缓存的情况,后期酷睿自己集成了任务分配系统,再搭配操作系统就能真正同时开工,2个核心同时处理2“份”任务,速度快了,万一1个核心死机,起码另一个U还可以继续处理关机、关闭软件等任务。较早的操作系统如XP等需要装双核或多核补丁,能更好发挥性能或更稳定,Vistia下就不需要。
目前几乎所有的程序在编写时是按单核心CPU写的(多核心程序优化对程序员来说是个噩梦,目前好像还没有合适的编程软件能让程序员轻松编写针对多核心的程序),因此对多核的利用率不是很高,分配任务时,往往1个核心满负荷,另一个还有空闲(留些空闲也对,要应付随时发生的其它命令)。一般2核心性能也就比单核心高60~70%甚至更低。
4核或者将来的8核说白了还是多个核心独自处理各自的“份”,不过人多力量大,速度快,响应时间短,不易死机。当然耗电、协调性都会是个考验。
补充:
原本有个说法(有阵子我自己就持这观点):“目前的软件都是为单核心编写的,多核CPU处理起来也没什么优势。”
经过分析我们可以得知,参与任务分配的主角一是程序自己,二是操作系统,即使如单任务的SuperPI,在双核下成绩也要比同频率的单核快不少,这就是事实证明。理论分析:单线程程序很傻,不知道有2个CPU在前面等着,所以发出的请求应该也是针对单核心的,但操作系统自动将调用请求分配给了2个CPU,并在处理结束后将结果合并,所以单核心程序也能享受到多核的“照顾”。尽管操作系统分配的可能不完美,但毕竟比单CPU要快。
如果程序自己又对多线程处理进行了优化(重新编写),那么就更完美了,可以达到2倍水平,对于这点5楼的朋友已经能举出具体的例子了。非常感谢。
再推测一下,根据上面的分析,2G双核应该比2G单核快近2倍,那么2G的4核应该比2G的双核快近2倍!如果有4G的双核,那么应该和2G的4核性能近似。
标签:cpu,多核,原理