2011年7月20日 星期三

Linux Undervolting - Toshiba NB550D

再調整過 MSI X410 後, 不再那麼燙手了
(最後還將最高頻率設為 1.3Ghz)
就能享受其帶來的輕薄大螢幕的好處.

於是又看看另一台 Toshiba NB550D有無機會
如之前所說, 這台使用的是 AMD APU C-50
透過搜尋, 找到了一篇文章講述詳細內容的
要降低電壓, 主要是調整 msr 中對應 VID 的數值
按照文章說得, Acer W500 使用電壓組合為
1.0625V/1Ghz, 0.9375V/800Mhz

按文查表, 發現, NB550D 使用的電壓組合為
1.2250V/1Ghz, 1.025V/800Mhz

找到方法了, 接著就是測試, 並且寫入  /etc/rc.local 中
以下為我加入的內容
主要是改為0.9375V/1Ghz, 0.8250V/800Mhz
按照文章說明, 這樣應該可以降低功耗 2~3Watt
找機會來測試電池使用時間是否增加.

#to allow msr manipulation
modprobe msr

#here we undervolting C50 to 0.9375V/1000Mhz 0.8250V/800Mhz
#original is VID:34 - 1.225V/1000Mhz, VID:54 - 1.025V/800Mhz
#CPU 0
wrmsr -p 0 0xc0010064 0x800002ba00006230
wrmsr -p 0 0xc0010065 0x8000026a00007440

#CPU 1
wrmsr -p 1 0xc0010064 0x800002ba00006230
wrmsr -p 1 0xc0010065 0x8000026a00007440

相關資訊在該文章都有, 有需要可以參考

2011年7月13日 星期三

Linux PHC Undervolting - MSI X410

老婆偶爾玩 Facebook 的 flash game, 閒買給她的 X410 慢
於是好一陣子之前, 拿先前的 MSI CX420 跟老婆換
(這麼說我還蠻愛 MSI 筆電的, MSI 是否該找我寫測試文...XD)

X410當時也是我決定買的, 主要看上輕薄又有 14" 大螢幕
安裝Ubuntu 使用一陣子後, 發現CPU效能對我倒是其次
總是最大轉速的風扇聲, 與左手腕放置地方過熱

搜尋了一下, Windows 上有人使用 RM CPU Clock Utility 來降壓
除了降低CPU電壓, 另外還可以使用額外的 P-state
而在Linux 上要靠 Linux PHC kernel, 達到相同的效果

MSI X410 使用的是 AMD Neo MV-40
基本上預設電壓 1.0V
也只提供 800Mhz 與 1.6Ghz 兩種頻率切換

有了這些資訊, 就開始使用 Linux PHC 來降壓
首先可以透過下列指令加入 Linux PHC PPA

sudo add-apt-repository ppa:linux-phc/ppa

接著更新套件庫與安裝 Linux PHC kernel
sudo apt-get update

sudo apt-get install linux-generic-pae-phc linux-headers-generic-pae-phc linux-image-generic-pae-phc

如果不需要原本 kernel 可以順便移除..
安裝完成後, grub 選擇 phc 的項目重開即可

登入後, 接著要安裝 phc-k8 module
到此下載

安裝phc-k8前請安裝 dkms
sudo apt-get install dkms

接著以 root 做下列動作
1. cp phc-k8_v0.4.4b1.tar.gz /roo
2. cd /root
3. tar jxvf phc-k8_v0.4.4b1.tar.gz
4. cd phc-k8_v0.4.4b1
5. make dkms install

到這如沒出現錯誤訊息 phc-k8 安裝就完成了
重新開機讓系統載入 phc-k8 module

要測試是否 OK 可以用下列指令
cat /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
這時候你應該會看到下列資訊
8:22 0:22

這是 FID:VID 的組合, 按照說明文件
FID 的意義是 Freq = 800Mhz + (FID*100Mhz)
以筆電預設電壓 1.0V 去看
VID 的意義似乎是 Volt = 1550mv - VID*25mv

為了能夠切換更多的頻率
編譯 /etc/modprobe.d/phc-k8.conf
將  options phc-k8 direct_transitions=1 行前的 # 移除

接著在 /etc/rc.local 加入一行
echo "8:26 4:31 0:35" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
即可
(這裡 上述的 26,31,35 是保守值, 可以自行將上述指令調整輸入, 找出最適合的數值)

重新開機後就可以感受不同了...

可以重開機後交換輸入下列指令, 去體會風扇的變化
echo "8:22 4:32 0:22" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls
echo "8:26 4:31 0:35" > /sys/devices/system/cpu/cpu0/cpufreq/phc_controls

Update:
最近看這篇, 發現, X410 其中用了散熱'墊', 其實散熱效果很不好, 於是也塗了之前存放的散熱膏, 效果的確不錯. 廢熱明顯不容易累積, 搭配上面的方法, 就不再燙手了.

Lookup Table 在 NEON 中的處理

在 SIMD Programming 中由於希望能夠每個 lane 有一致的行為, 因此有一些事情是不容易達到的 而 Lookup Table (LUT) 即是其中之一 但若是特定條件之下, 還是有可能透過 NEON 加速 而這個 直接前提是 8bit LUT (當然...