引用别人的**,希望能够有更好的解释

[复制链接]
4774|12
 楼主| telnet 发表于 2007-2-9 14:17 | 显示全部楼层 |阅读模式
以下是关于功耗问题:<br /><br />1)在一个系统中功耗最大的应该是周边电路,而不应该是cpu&nbsp;本身,<br />但是如果cpu&nbsp;消耗少其提供支持的周边电路的功耗也就降低了,所以整体功耗降低。举例说明:arm&nbsp;cpu&nbsp;消耗为&nbsp;1,外围消耗为2,另一种cpu&nbsp;消耗为&nbsp;2,外围消耗为&nbsp;4,虽然比重相同&nbsp;1/2&nbsp;=&nbsp;2/4,但是&nbsp;(2&nbsp;+&nbsp;4)&nbsp;&gt(1+&nbsp;2),换句话说cpu&nbsp;是问题的主因,外围电路是结果。&nbsp;-这是否正确。<br />这里的CPU是经过抽象的结构,也就是仅进行计算(如果是5级,就只有IF,ID,&nbsp;EXE,MEM,WB)。<br />2)如果是五级流水的RISC话,能够省电的主要核心技术应该在&nbsp;ID&nbsp;阶段?(暂时不考虑芯片中对电源的管理的技术方法,并且假设大家都使用16bit指令长度,扔掉&nbsp;CACHE,memory,flash,软件的设计,指令的使用,等等这方面的考虑,仅仅是&nbsp;单纯的PIPELINE)。<br /><br />谢谢!<br /><br /><br /><br /><br />
平常人 发表于 2007-2-9 21:40 | 显示全部楼层

楼主的理论好像有问题

为什么CPU耗电多,周边电路就一定耗电多呢?两者没有必然联系。<br /><br />为什么说“能够省电的主要核心技术应该在ID阶段”?有何道理?如何得出这样的结论?
wangkj 发表于 2007-2-10 07:27 | 显示全部楼层

好的cpu在全速和慢速功耗差百倍多

外围电路同样,所以,关键的设计是软件硬件的综合控制。
 楼主| telnet 发表于 2007-3-21 16:27 | 显示全部楼层

补充

1)对于第一条更正补充一下,我们知道thumb&nbsp;指令与arm指令的区别,虽然arm指令密度大同样的操作,thumb&nbsp;需要多条指令,但是总体来说thumb指令的程序长度要更少30-40%,虽然说thumb简单的decode会节省功耗,但是我们看到thumb指令同样被decompressed&nbsp;to&nbsp;be&nbsp;compatible&nbsp;with&nbsp;arm&nbsp;instruction(还是在id&nbsp;阶段).这方面的减少功耗优势被抵消了,所以问题归结到程序的长度。因为thumb&nbsp;程序少,所以对外设的访问较少,功耗也就相应降低了。<br /><br />2)对于是id&nbsp;阶段,因为一个有趣的现象,arm&nbsp;五级流水中的id阶段没有使用累加器(用于计算跳转指令的目的地址),所以产生如果跳转指令成立将会使用3个时钟周期,但是如果不成功将不会延迟:),这是个了不起的设计,因为写代码的人都知道,我们之所以用if是因为在多数情况下if是不成立的。当然不可以否定if多数是成立的情况,符合双峰分布。但这种情况较小,如果if经常成立,我就会让他成为主流代码。所以在id阶段省掉了硬件自然省电,而总体性能不差。<br /><br /><br />以上包含猜测的成分,做过cpu的朋友更有发言权!<br /><br /><br />
平常人 发表于 2007-3-21 20:30 | 显示全部楼层

楼主的理论没有根据;现在的CPU都是静态设计,功耗与频率

谁说“thumb简单的decode会节省功耗”?<br /><br />你的理论确实有问题!<br /><br />要想说明一个理论,最好的办法是用事实说话,不要猜测,楼主最好去做一个模拟。
 楼主| telnet 发表于 2007-3-22 12:07 | 显示全部楼层

to 平常人

首先在多数情况下,同样的任务thumb&nbsp;指令集编写的程序&nbsp;一定会比arm&nbsp;指令集耗电少。而省电的原因在于用thumb&nbsp;指令集编写的程序小,所以对外设的访问少。<br /><br />我们从各种资料都可以获得对指令长度起决定作用是cpu&nbsp;的译码阶段。<br /><br />thumb&nbsp;得译码比arm&nbsp;简单,我们可以很容易的从他的指令结构看到。<br /><br />thumb&nbsp;使用2个寄存器,&nbsp;arm&nbsp;使用3个,而且thumb&nbsp;没有判定条件。。<br />对于简单的操作来说当然会节省功耗。这里重述一下,但这不意味着<br />arm&nbsp;一条指令的功耗&nbsp;会小于&nbsp;同样完成工作的thumb多条指令。这里也暂时不包括&nbsp;cpu&nbsp;强制将thumb指令转换成arm&nbsp;指令的逻辑单元的功耗。
HWM 发表于 2007-3-22 12:38 | 显示全部楼层

ARM核的设计初衷之一就是为了降低功耗,以便采用电池供电

所以采用了先进的RISC技术(从ARM的本意就知道)。<br />从CISC到RISC,CPU的结构大大地简化了,而一个MCU或ARM芯片的耗能主角就是CPU,至于片上的外围设备在不使用的时候可以“关掉”。所以在总体上说,只要CPU的功耗降下来了,整个芯片的功耗就会下降。
XZL 发表于 2007-3-22 13:44 | 显示全部楼层

同意楼上的意见

现在问题是CPU的功耗下不来
平常人 发表于 2007-3-22 16:20 | 显示全部楼层

对telnet理论的质疑

不错,Thumb指令比ARM指令简单,因此Thumb指令的译码和执行也简单,但关键的问题是,在执行Thumb指令时,ARM指令的译码和执行电路并没有关闭,这部分电路仍在耗电;ARM的芯片还没有设计成“隔离暂时不用的电路而减少耗电”这种理想的状态。<br /><br />同样,设想指令存放于外部的Flash中,Flash并没有被设计成闲置状态比读状态省电,只有在被Disable时(片选失效)Flash才进入低功耗状态。<br /><br />任何设备在不需要时可以被“关掉”达到省电目的,但待命不是“关掉”,待命与运行的功耗没有明显差异,至少对CPU是这样。<br /><br />RISC比CISC因电路简化而省电,但不等于“待命”部分的电路也省电。<br /><hr><br />楼主所说的是理想状态,但因为控制太复杂,目前没有一款芯片能实现。
 楼主| telnet 发表于 2007-3-22 16:36 | 显示全部楼层

还有问题

我们都知道最耗电的是状态的变化。<br />比如&nbsp;0到1&nbsp;,1到0,&nbsp;而保持某种状态,倒不是矛盾的主要方面。<br />设计的简单就代表更少的电路参与了状态的变化。<br /><br />同样的道理,取数据的时候如果指令少,外设的变化也就会相应的降低,功耗一定会降低下来。<br /><br />我们写代码的时候也知道,减少进程的冗余调用,比精简几句代码效果更好,实际上它的本质也是减少状态的变化.<br /><br /><br />
 楼主| telnet 发表于 2007-3-22 19:02 | 显示全部楼层

引用别人的**,希望能够有更好的解释

  <br /> 相关链接:<a href='https://bbs.21ic.com/upfiles/img/20073/20073221924982.pdf'>https://bbs.21ic.com/upfiles/img/20073/20073221924982.pdf</a>
 楼主| telnet 发表于 2007-3-30 11:16 | 显示全部楼层

好了,引个arm 公司的人结束这个帖子

听从了ST的浪淘沙的建议直接问了arm公司的支持得到的结果<br /><br />英语很烂不要介意!<br />Q(我):ID&nbsp;determin&nbsp;the&nbsp;length&nbsp;of&nbsp;instruction,so&nbsp;program&nbsp;may&nbsp;be&nbsp;shorter,cpu&nbsp;access&nbsp;memory&nbsp;in&nbsp;fewer&nbsp;times.&nbsp;e.g&nbsp;Program&nbsp;made&nbsp;of&nbsp;thumb&nbsp;instruction&nbsp;set&nbsp;consume&nbsp;less&nbsp;energy&nbsp;than&nbsp;arm&nbsp;instruction&nbsp;set.&nbsp;As&nbsp;well&nbsp;known,&nbsp;arm&nbsp;remove&nbsp;AlU&nbsp;in&nbsp;ID.&nbsp;It&nbsp;is&nbsp;quite&nbsp;smart&nbsp;approach!&nbsp;Here&nbsp;integrate&nbsp;compiler&nbsp;ideal.in&nbsp;one&nbsp;word,&nbsp;what&nbsp;we&nbsp;do&nbsp;is&nbsp;to&nbsp;decrease&nbsp;state&nbsp;change.<br /><br />A(support):Yes,&nbsp;16-bit&nbsp;Thumb<br />instructions&nbsp;do&nbsp;use&nbsp;less&nbsp;power&nbsp;than&nbsp;32-bit&nbsp;ARM&nbsp;instructions,&nbsp;because<br />fewer&nbsp;I/O&nbsp;pins&nbsp;change&nbsp;state.&nbsp;Using&nbsp;a&nbsp;cache&nbsp;can&nbsp;also&nbsp;save&nbsp;power&nbsp;if&nbsp;it<br />results&nbsp;in&nbsp;significantly&nbsp;less&nbsp;off-chip&nbsp;accesses.<br /><br />哈哈,他/她&nbsp;对ALU的问题没有给与回答。<br /><br /><br />
HWM 发表于 2007-3-30 12:44 | 显示全部楼层

相对而论,用Thumb指令当然要比ARM(32bit)指令省电。

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

23

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部