Re: [討論] Low Power?

看板CSSE (電腦科學及軟體工程)作者 (gwliao)時間19年前 (2005/08/17 22:17), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串21/23 (看更多)
※ 引述《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
文章代碼(AID): #130qSLsF (CSSE)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
0
7
完整討論串 (本文為第 21 之 23 篇):
3
10
0
2
1
1
文章代碼(AID): #130qSLsF (CSSE)