塞班智能手机论坛-Symbian NOKIA PDA PPC PocketPC Palm GPS smart phone » 诺基亚E50论坛 » CPU运行机制和效率浅析(技术普及帖,计算机专业跳过)

2007-9-11 11:03 dream_crimson
CPU运行机制和效率浅析(技术普及帖,计算机专业跳过)

最近在论坛里好像一直都在做管理的工作,很久没有发新帖子了。其实dream更喜欢跟大家做一些技术讨论的,最近在酝酿写几篇文章,对系统的整个运行机制做一些分析。这个是第一篇,主要针对CPU的运行机制和效率分析,目的是使对相关知识不熟悉的机油有一个初步的了解,有兴趣的都看看吧。
PS:为了大家能够更好的理解,下文尽量使用一些通俗的语气和比喻,避免使用太专业的术语,各位高手表笑偶[s:26]

先说一下本文要说明的几个概念(看不懂不要紧,下面就会解释):

精简指令集,计算机CPU的一种设计模式,也被称为RISC(Reduced Instruction Set Computing 的缩写)。这种CPU指令集的特点是指令数目少,每条指令都采用标准字长、执行时间短、CPU的实现细节对于机器级程序是可见的等等。RISC设计的根本原则是针对流水线的优化。


复杂指令集,计算机CPU的一种设计模式,也被称为CISC(Complex Instruction Set Computer的缩写)。这种CPU指令集的特点是指令数目较多,每条指令专有功能、执行时间较长。在CISC微处理器中,程序的各条指令是按顺序串行执行的,每条指令中的各个操作也是按顺序串行执行的。顺序执行的优点是控制简单,但计算机各部分的利用率不高,执行速度慢。

流水线:CPU的重要运行机制,把一个重复的过程分解为若干个子过程,每个子过程可以与其他子过程并行进行。在运行一个子过程的同时可以运行其他不相关的过程,达到提高运行效率的目的。

跳转:在流水线执行过程中遭遇同时间遇到相同子过程时,将其中一个后延以避免资源冲突。

好了,现在可以打比方了。CPU的运行机制就是解决某个任务的过程,我们挑一个简单的任务来打比方,大家都是要吃饭的,就用做饭作为我们的任务好了。这个任务有两种解决办法,分别叫做RISC和CISC。
RISC需要分三个步骤来做,每一步都很简单,它的过程时这样的:米=〉(淘米+放水+加热)=>饭,括号内就是我们的运行机制。
CISC一步就可以做完了,米=〉(煮饭)=>饭。
这样我们就可以分析它们的特点了,RISC需要更好的控制(好比是饭还是需要人去做的),而CISC则完全是自动的(好比是一台全自动的机器,把米放进去就行)。RISC的步骤相互独立,具有更好的灵活性,我们把淘米换成洗菜就能变成煮青菜了(青菜=〉(洗菜+放水+加热)=>煮青菜);而CISC功能单一,煮饭机只能煮饭,要煮青菜找青菜机去。反应在现实系统中,RISC功能更灵活,但是对编程要求很高(控制是由程序完成的),CISC指令数目更多(煮饭要有煮饭机,青菜要有青菜机,红烧肉要有...........),但是编程就很方便了。

接下来分析运行效率。假设RISC的每一个步骤都需要花费1个单位时间,而CISC的每个步骤需要花费2个单位时间(真人VS煮饭机,机器的单一效率总要比人快那么一点点吧[s:26] ),那么做一锅饭RISC需要3个单位时间,CISC需要2个单位时间。
但是塞班大家庭人气旺啊,一锅饭大家哪够吃呢?同志们,动手做饭吧!
问题出来了,锅只有一个(人穷啊,咱们买不起双核CPU),来不及喂饱这么多人啊。于是聪明人站出来了,我们应该充分利用资源,咱们人多啊,放水的同时我们可以淘第二锅米嘛,加热的时候也可以放第二锅水吗嘛,你你你,还有你,全部下去干活!于是,流水线正式登场!
流水线的原理,我们可以很容易的用下面的图来解释:

时间   1     2     3      4      5      6      
       淘米 放水 加热                         (路人甲友情操作)
               淘米 放水 加热                 (宋兵乙热情支持)
                       淘米 放水 加热         (看客丙倾情演绎)
                               淘米 放水 加热  (替补丁激情奉献)

同志们,群众的力量是无限的,在甲乙丙丁4位好同志的努力下,煮饭这一神圣而伟大的任务效率大大提高了。显而易见,参与工作的人员越多,工作的效率越高,在现实的系统中,这一参数称为流水线的级数,级数的多少决定了系统效率的高低,同时也决定了所付出的成本代价(雇人煮饭总要发工资吧)。
但是对于单一的CISC而言,流水线没有意义,没办法,煮饭机只有一个,人再多也是白搭,看下面:

时间  1    2    3    4    5    6   
        煮饭      煮饭      煮饭     

现在肯定有人要说了,6单位时间内,4位好同志已经煮完4锅饭了,煮饭机才干掉3锅,明显人力完胜机器,那我们还要CISC干吗?
对不起,兄弟,你太没追求了。现在都和谐奔小康了,几锅白米饭你就满足了?至少要做点菜吧,先简单点,就煮青菜好了,价格便宜量又足,我们一直都吃它。甲乙丙丁,开工了!

时间   1    2    3      4      5      6    7      8     9    10
      淘米 放水 加热 [color=red]洗菜[/color] [color=yellowgreen]放水[/color] [color=blue]加热[/color]      
              淘米 放水 加热 洗菜 放水 加热  
                      淘米 放水 加热 洗菜 放水 加热
                              [color=red]淘米[/color] [color=yellowgreen]放水[/color] [color=blue]加热[/color] 洗菜 放水 加热
                  
问题出现了,水池只有一个,水龙头只有一个,锅子也只有一个;淘米的同时就不能洗菜,两者不可能同时加水和加热。没办法,只有先把青菜放回冰箱,等到资源有空余的时候再继续流水。在现实系统中,资源无法共用的情况称作资源冲突,判断资源冲突和流水线等待的过程称为跳转,跳转的时间耗费取决于流水线的级数(人越多锅子越抢手)和任务的繁复程度(煮的东西越多锅子使用越紧张)。采用跳转的流水线如下:

时间   1    2    3    4    5    6    7    8    9    10
       淘米 放水 加热 洗菜 放水 加热  
               淘米 放水 加热 洗菜 放水 加热
                       淘米 放水 加热 洗菜 放水 加热
                       跳转=========>淘米 放水 加热 洗菜 放水 加热

对于CISC而言,因为两个任务相互独立(煮饭机+煮菜机),不存在系统冲突,流水线如下:

时间   1    2    3    4    5    6    7    8    9    10
          煮饭      煮菜      
                       煮饭      煮菜           
                                    煮饭      煮菜
                                                 煮饭      煮菜

OK,在这种情况下,10个单位时间内,RISC完成3个任务,CISC完成了4个,复杂指令集的优势体现出来了。
接下来我们再把任务扩大,我们要吃红烧肉,再来份清蒸鱼,再来份.......................直到满汉全席被干出来为止。这里不推演了,有兴趣的自己排流水线看看。最后的结论就是,对于繁复度和流水线级数较低的系统,采用RISC指令效率较快,反之则CISC具有更大的优势。

好了,相信看到这里,大家应该对以上的概念有所了解了。接下来沿着上文的思路,对其他一些概念进行解释::

中断:青菜洗好了,突然发现饭不够了,先停止煮菜,先把饭做好再回去煮菜。
顺序冲突:做饭团子必须先要有米饭,所以在流水线中必须先煮好饭再做饭团子,如果遇到没有多余的饭的时候,做饭团子的任务必须跳转等待。
混合指令机制,在使用煮饭机的同时也带动甲乙丙丁一起工作,充分利用空余的时间,具有较高的效率,但是必须有人进行调度控制(也就是需要专门的资源和设备进行管理)。

[[i] 本帖最后由 dream_crimson 于 2007-9-12 09:04 编辑 [/i]]

2007-9-11 11:04 dream_crimson
呼...............总算写完了,希望大家能够看得懂。另外请大家告诉dream是否对这些方面的内容和这种讲述方法感兴趣。如果大家觉得有帮助的话,dream会继续把这种形式的技术文章写下去。

[[i] 本帖最后由 dream_crimson 于 2007-9-11 13:50 编辑 [/i]]

2007-9-11 15:18 wujun5370
专业撒,不好懂!!多看看!

2007-9-11 17:45 homer76
很不错,解释的挺生动……不知道E50使用几级流水线的U?
RISC的U比较高效、节能,就是处理多任务,好像有点那个……其实,软件算法搞得好,可以弥补这个缺陷……
CISC的U,耗能,但是处理多任务的复杂情况有优势,而且,编程相对容易些……

2007-9-11 17:49 homer76
对了,我已经收藏本帖。另外,必要时能否上些图,展示U的工作流程……
当然,方便的话……

2007-9-11 18:07 q42001000
不错!佩服!

2007-9-11 18:15 8770375
偶八是计算机专业的,但多少也懂些这东西[s:26]

现在就是要弄清E50的U到底是什么来的?据说是阉割后的OMAP1710?

其实OMAP1710的性能还是很不错的,老诺出的6120C、5700等新机器上的369的U其实很一般的性能,这个U的代码为MXC300
MXC300的CPU频率高.但有一个至命弱点.
就是CPU的指令集比1710少了很多多媒体和无线网络的处理能力
你们看看一般用MX的CPU一般都不可能带WIFI的
还二级缓存才16K而1710有32K
而且据说只支持200W的摄像头
而6120C等的机器运行速度很快,是Symbian 9.2 FP1系统优化的好,高频的U带来的性能提升并不大,影响性能的主要是核心架构,比如CORE2 E6600才1.8G,但性能比P43.0G好的多

N95这类机皇不用说的,是另一种U,自带3D加速,支持OpenGL、、、、代码为OMAP2420,频率330[yct06]

[[i] 本帖最后由 8770375 于 2007-9-11 18:16 编辑 [/i]]

2007-9-11 18:27 罗比
[s:26] 技术强贴~~~

2007-9-11 18:53 kyocica
我也很想弄清楚E50的U
支持楼主 [s:25]

2007-9-11 20:43 列侬男爵
相当好的文章 我是很希望塞班上有很多这样的文章还有讨论 技术是很让人着迷的东西[s:23]
关于小E的CPU我研究过很多,甚至上过德文的网站,但是至今没有敢肯定地说是什么 只是个人认为小E是TI的OMAP1710   
本人发过一个这样的帖子[url]http://www.dospy.com/bbs/thread-592698-1-1.html[/url] 讨论过这个问题
希望能出来一位高人解答!
希望斑竹多搞这类东西,塞班会更专业!!!

2007-9-12 00:12 WENLEI1185
[s:27]

2007-9-12 00:13 wingless-angel
支持dream桑,支持技术贴![s:25] [s:25] [s:25]
俺的PC是野鸡派的,纯应用型,对原理了解甚少
俺认为此帖写的甚妙,把本来看了有昏睡可能的CPU原理写的这么喷饭,实在是妙!必须收藏!
期待续作[yct42] [yct42] [yct42]

[[i] 本帖最后由 wingless-angel 于 2007-9-12 00:14 编辑 [/i]]

2007-9-12 01:04 转角车神
也来学习一下,顺手偷吃口饭[s:26]

本人A饭,对高主频米有感觉...手机上更是个鸡肋...看起来很美...可效率提升的幅度就没有数据那么夸张了...

E50的u主频235,N73主频206可两部机都用过的朋友应该很清楚73响应快一些的,当然这样的对比毫无意义,我只是想说英特而你倒是再升主频啊?升到5G变烤箱算了,最终还不是放弃嚼头,性价比又那么低...

好象跑题了[yct03]

2007-9-12 13:47 8770375
[quote]原帖由 [i]转角车神[/i] 于 2007-9-12 01:04 发表 [url=http://bbs.dospy.com/redirect.php?goto=findpost&pid=7939039&ptid=647676][img]http://bbs.dospy.com/images/common/back.gif[/img][/url]
也来学习一下,顺手偷吃口饭[s:26]

本人A饭,对高主频米有感觉...手机上更是个鸡肋...看起来很美...可效率提升的幅度就没有数据那么夸张了...

E50的u主频235,N73主频206可两部机都用过的朋友应该很清楚7 ... [/quote]
N73的响应速度如果真的比E50快的话应该是N系软件优化的结果,我也用的AMD的U,对一味的高主频没什么感觉[s:26]

2007-9-12 14:54 孙楠孙
技术性太强

2007-9-12 15:39 beckham7david
看了我就头疼,路过。

2007-9-12 16:15 dzc_kr
怀念老师给俺请中断的概念啊!!![yct22]

2007-9-12 19:39 QY2Y
不错!佩服!

2007-9-12 20:01 戈尔·D·罗杰
我的偶像dream哥,希望不要怪俺顶晚了哈[s:26]

2008-1-14 12:13 zwing55
好文章,喜欢潜水也忍不住冒个泡了!支持Dream,支持技术贴!

2008-1-14 15:34 tank979
哇高手啊,让大家都看到啊,也好好学习学习啊[s:26]

2008-1-14 16:00 orderkwwl
不错!好贴!支持![s:25]

2008-1-14 19:34 conanzkn
好贴 米看懂。。。 E51的CPU工作频率是369。。。

2008-1-14 20:42 fengyeblade
好文章!  支持一下

2008-1-14 22:09 espig
好帖!!!期待下一个!!!

2008-5-13 09:11 huangyiqing1982
[s:25]

2008-5-13 14:54 liyong19850209
赞技术强帖

2008-5-13 15:17 DonJuan
通俗易懂,写得不错,当时上学时要是老师这样讲课就好了![s:26]

2008-5-22 01:25 钾肥
LZ写的好,我已经收藏了~

这种帖子才是好贴~

通俗的才是大众的~

支持楼主~~~楼主再接再厉

2008-5-22 09:16 o7ok7l
不就是线程么。。。

页: [1] 2


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.