查看單個文章
舊 2007-04-29, 02:45 AM   #1
snoopy
註冊會員
 
snoopy 的頭像
榮譽勳章
UID - 33737
在線等級: 級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時級別:49 | 在線時長:2676小時 | 升級還需:24小時
註冊日期: 2003-02-02
VIP期限: 2011-06
住址: 台南共和國
文章: 1831
精華: 0
現金: 12744 金幣
資產: 12834 金幣
預設 超快 4G 主記憶體實踐 ramdisk



最近 DDR II 狂跌
來到歷史新低價
昨天去 nova 一口氣買了 金士頓 DDR II 1G*4
667 hynix 顆粒
回家輕鬆上 800
順便跟店員殺價 四條殺了快一千

不過其實 windows 本身也用不到這麼多記憶體
所以就突發奇想 將記憶體切出一部分當作 ramdisk
先從原理講起

記憶體階層的概念
離 CPU 越近的記憶體速度越快 成本約高 容量越小
順序是
CPU快取 主記憶體 次要記憶體 (硬碟)

CPU 要執行程式時必須從記憶體中抓資料
而電腦的可用記憶體
是由主記憶體和虛擬記憶體所構成的
而虛擬記憶體存在於電腦的硬碟機中
在 windows 中
虛擬記憶體與作業系統通常再同一分割區中
並且為一個檔案
效能較低但是彈性較大
在 linux 中
虛擬記憶體會單獨存再於一個 swap 分割區中
效能較高 但較無彈性

由於虛擬記憶體存在於電腦硬碟機裡
而硬碟機存取速度只有主記憶體的千分之一不到
CPU 要執行程式時比須去主記憶體中抓資料
萬一抓不到的話則產生 page fault
這是電腦會改由虛擬記憶體中抓資料
這時你就會聽見硬碟機一直轉
然後程式突然頓頓卡住
原因就是因為硬碟機存取速度太慢

如果我們把過大的記憶體割出一塊
當作虛擬硬碟
把虛擬記憶體都塞進這個由記憶體模擬出來得硬碟機中呢
以後要是發生 page fault
電腦也是在主記憶體中抓資料了
如此一來性能將會大幅提升


補充1
為何電腦需要虛擬記憶體
答1
增加 multiprogramming degree (允許一次有更多程式被執行)
補充2
答2 主記憶體已經夠大 為什麼不把所有虛擬記憶體關閉
windows 不允許這樣做
補充3
有什麼限制
windows xp 32bit 由於某些空間位址保留給其他重要功能
因此不論你插幾G 的 RAM 永遠只能抓到 2.93G
=======================================

實作
使用 ramdisk 軟體割出一個虛擬硬碟
而我的情況是 4G RAM
xp 只能抓到 3G
因此2G 當主記憶體
1G當 ramdisk
ramdisk 分配 512mb 當做虛擬記憶體
剩下當photoshop, ie 戰存區


使用心得
速度真的快到飛起來
尤其是急速快感的貼圖 完全不 lag

http://myweb.hinet.net/home12/snoopy123/ramdisk.jpg
snoopy 目前離線  
送花文章: 623, 收花文章: 392 篇, 收花: 1288 次
回覆時引用此帖
有 12 位會員向 snoopy 送花:
<AI> (2007-05-02),1102 (2007-05-06),a471 (2009-01-13),anotherlevel (2007-04-30),chenhan2603 (2007-04-29),disoniner (2007-04-29),kedey0660 (2009-01-13),magicwoo (2009-01-13),NiGHTsC (2009-01-26),pc123 (2008-03-07),rezard (2009-01-13),莊孝偉 (2007-04-30)
感謝您發表一篇好文章