作者gwliao (gwliao)
看板CSSE
标题Re: [讨论] Low Power?
时间Wed Aug 17 23:06:15 2005
※ 引述《WYchuang (打不留歪庄)》之铭言:
: ※ 引述《gwliao (gwliao)》之铭言:
: : 不过gray code在Low power的方面真的用的很多,
: : 尤其是Bus encoding方面.
: : 像我之前研究如何re-assign ARM7TDMI的instruction的Conditional Code.
: 你的意思是你本来要研究Architecture上面的改善方式
: 後来变成:compiler写得好才可以省电
: 是这样嘛?
这是两个方式, 可以单独使用, 也可以一起使用,
我原本的构想是重新设定ISA中OP-code的值,
希望能得到low-power的效果.
但做完後发现用啥compiler会对结果有很大的影响!
所以这部份不是一个好work (就我的理念来说)
我希望不论用啥compiler都可以省Power.
: 不过这种研究在bus switch上软体的solution ...
: 应该compiler比较有发挥空间
我後来去做compiler是在Code Generation时做low-power,
也是用switching数量当power.
但不好做, 在RISC上,
同样的function,其机器码的候选者实在不多! (应该是我Code Generation不够好)
所以变成"程式慢, power低",
但我不是要这个, 我要的是"程式没变慢, power低."
就这样, 我差一点专题不过(不是老师要求, 是我的理念 :( )
: 其他我还真想不出来有啥可以用软体减少bus switch ...
这个想像力还不够 XD
我还提出一个想法: A=X*Y, A=Y*X哪一个power低?
对加法, X+Y跟Y+X的power一样(针对一般常用的adder), 这个可以被证明.
对乘法, 两个就可能差很多, 且速度也差很多!
98765 23
x) 23 x) 98765 当然是左边的好算, CPU也是有这种现象!
-------- --------
???????? ????????
交换operand, 对加法来说, 是省DATA Bus的switching(Load data to Reg.),
对乘法是是省乘法器内部和DATA BUS的power.
当然也可以省instruction在DATA Bus上的Power(instruction fetch).
但我们是用硬体去交换, 只要省乘法器内部的power,
因为在compiling time, 不好预测operand的内容,
那对乘法器内部的power就猜不出来,
DATA bus的power也猜不到, 只能猜到instruction在DATA Bus上的Power.
: 之前还有听某位外国教授报告过,他说coding style也可以减少power XD
: 比如说增加cache hit的coding style方式,大抵上就是减少memory access
: 因为memory access需要Bus + memory power,他说会粉耗电 ...
: (不过这样要怎麽出paper呢,呵呵)
说一件事:
1) memory read: CPU改变1次 address bus, Memory改变一次Data Bus.
2) memory write: CPU改变1次 address bus, CPU改变一次Data Bus.
那可以看出CPU做Write时, 比较耗电, 因为改变Bus的CPU!
这是很多人算Power的方式, 我不喜欢, 因为对整体来说, 就是耗电 :(
只是将Power算在别人头上, 不是省电.
简单一个例子:
(1) A=X+Y*Z;
(2) B=Y*Z;
A=X+B;
就上面来说, 不考虑暂存器不够.....等很多情况下(就是别想太多, 这只是一个例子:),
(1)Memory要读3次,写1次, (2)是读4次,写2次.
那(2)耗电, 但是我们常常将一个长的expression猜成短一点(可读性好一点),
所以有的low-power compiler会想办法消去local Variable,
当然有的Variable不能消去.
: -------------------------------------
: 你自己写一个ARMulator+compiler出来呀?
compiler是大一大二闲暇时间写的, 针对MIPS的机器码和C语言的子集写的.
ARM7TDMI的Simulator是大三的作业 Orz
而且我们买的ARM的ARMulator不够好用,
因为我要模拟到ARM7TDMI的3 stages的pipeline, 要取出其中的data来看,
所以自己要写(我有跟ARM的ARMulator比Bus上的data要一样)
: 就算菸酒生都已经可以毕业喽 ... XD
这个只能让我专题过关 Orz
不过这样的训练对将来帮助很大! 不过对肝不好 Q_Q
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.230.224