最近 DDR II 狂跌,來到歷史新低價。昨天去台中 Nova 一口氣買了金士頓 DDR II 1G*4,667 hynix 顆粒,回家輕鬆上 800,順便跟店員殺價,四條殺了快一千。
不過其實 windows 本身也用不到這麼多記憶體,所以就突發奇想,將記憶體切出一部分當作 ramdisk,先從原理講起。
記憶體階層的概念:離 CPU 越近的記憶體速度越快、成本約高、容量越小。順序是:CPU快取,主記憶體,次要記憶體(硬碟)。CPU 要執行程式時必須從記憶體中抓資料,而電腦的可用記憶體,是由主記憶體和虛擬記憶體所構成的。
虛擬記憶體存在於電腦的硬碟機中,在 windows 中,虛擬記憶體與作業系統通常再同一分割區中,並且為一個檔案,效能較低但是彈性較大;在 linux 中,虛擬記憶體會單獨存再於一個 swap 分割區中,效能較高,但較無彈性。由於虛擬記憶體存在於電腦硬碟機裡,而硬碟機存取速度只有主記憶體的千分之一不到,CPU 要執行程式時必須去主記憶體中抓資料,萬一抓不到的話則產生 page fault。這時電腦會改由虛擬記憶體中抓資料,你就會聽見硬碟機一直轉,然後程式突然頓頓卡住,原因就是因為硬碟機存取速度太慢。
如果我們把過大的記憶體割出一塊,當作虛擬硬碟,把虛擬記憶體都塞進這個由記憶體模擬出來得硬碟機中呢?以後要是發生 page fault,電腦也是在主記憶體中抓資料了,如此一來性能將會大幅提升。
補充一:為何電腦需要虛擬記憶體?
答一:增加 multiprogramming degree(允許一次有更多程式被執行)。
補充二:主記憶體已經夠大,為什麼不把所有虛擬記憶體關閉?
答二:Windows 不允許這樣做,會發生不可預期的錯誤。
補充三:有什麼限制?
答三:Windows XP 32bit 由於某些空間位址保留給其他重要功能因此不論你插幾G 的 RAM 永遠只能抓到 3G 多。
實作:使用 ramdisk 軟體割出一個虛擬硬碟。而我的情況是 4G RAM,XP只能抓到 3G,因此2G 當主記憶體;1G當 ramdisk,ramdisk 分配 512mb 當做虛擬記憶體,剩下當Photoshop, IE 暫存區。
使用心得:速度真的快到飛起來。
沒有留言:
張貼留言