精華區beta CSSE 關於我們 聯絡資訊
稍微把上面各位分析的東西整理一下: 有錯請指正,謝謝啦 Bus level: 大抵是減少swithing次數,在encoding/decoding的時候動手腳,比如將資料換為 gray code ... etc. Cache: 找出比較容易Hit的部分,維持那部分的高電壓,其他的部分以低電壓對待,犧牲小部 分效能來換取大量low power可能性。 Compiler level:(or ISA level) 1. 減少bus switching,作法有很多種比如: I. 對instruction的順序做出最好的code,但不影響原有function (尤其在VLIW架構上,因為指令及很長,比較有機會) II. 找出程式常有的規則,在設計ISA時使用類似霍夫曼編碼的精神,把特定 的instruction pattern間的bus switch降到最低。 2.減少Memory Access機會,盡量提高Cache hit的可能,減少透過Bus存取Data為目的 OS level: 即時動態分析(by stochastic model ... etc),排schedule時加入low power考量, 把最省電的Task schedule找出來。 補充一點我最近聽到的,以Linux實做,當OS idle時把OS timer tick速度調慢,這樣 整個系統都會慢下來,達到省電的效果。 ------------------------------------------------------ 看來其實還有很多地方可以玩的,只是小弟我不才,想不到新花樣 不過根據上面的描述,我覺得有些地方會衝突 最明顯的應該是 compiler 跟 Bus encoder/decoder,當 compiler辛辛苦苦把 instruction排好,卻被底層的Bus encoder/decoder的演算法搞的亂七八糟 這是我觀察到的矛盾點 -- 笑年ㄟ:老闆,這是什麼啊?這麼苦! 老闆 :笑年ㄟ,這就是人蔘啊 ~~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.96.129.115
duidae:推 140.112.30.116 08/21
jeunder:其實並不矛盾. 如果每一層能夠保證處理後, 會比 61.64.150.151 08/22
jeunder:原來好, 或者至少不能比較差... 那就不會矛盾. 61.64.150.151 08/22
jeunder:當然, 所謂的好或不好的評估方法有待商確, 尤其 61.64.150.151 08/22
jeunder:在多層最佳化的情況下, 其間的交互作用所帶來的 61.64.150.151 08/22
jeunder:複雜關係, 是很難釐清的... 我知道你所顧慮的... 61.64.150.151 08/22
gwliao:兩位考慮的很周詳, 但實際狀況實在無法預期!140.112.230.224 08/22
gwliao:所以做Bus encoding研究的都有留後路,140.112.230.224 08/22
gwliao:就如jeunder說的, encode後效果差就bypass掉 XD140.112.230.224 08/22
gwliao:不過有的方法就沒這功能, 因為這樣會讓速度變慢140.112.230.224 08/22
gwliao:因為有的方法是用於on-chip bus,有的是off-chip140.112.230.224 08/22
gwliao:不過那些沒bypass的方法都宣稱在"一般情況"下,140.112.230.224 08/22
gwliao:不會變差 XD140.112.230.224 08/22