Share on Facebook

※歡迎轉載,但請註明文章引用自「語意精研所」,非常感謝!

2011年6月28日

延伸閱讀:什麼是 Windows 寫入快取緩衝區排清?這和 SSD 又有哪些關聯?

因為網路上缺乏 Windows 寫入快取緩衝區排清 (Windows Write-Cache Buffer Flushing) 相關資訊,實際上能找到的說明文件不多,先前翻譯的這篇文章也很難了解其中的奧妙,所以我將收集到的資訊彙總之後寫下這篇文章,希望能讓各位進一步了解這項功能。

先說排清 (Flush)。這是 Microsoft 給 Flush 這個英文字下的中文定義。用比喻來說,就像是沖馬桶的動作。開關按下去,水就從馬桶水箱跑出來,把馬桶給沖乾淨。

Windows 寫入快取緩衝區排清的作用,就像是馬桶沖水。不同的是,對象從馬桶水箱和馬桶,變成硬碟的快取記憶體和儲存媒體。

在繼續說明 Windows 寫入快取緩衝區排清這個功能之前,要先稍微說一下硬碟的發展。早期的硬碟只有負責儲存資料的磁性碟片 (也就是儲存媒體),後來硬碟製造商為了提高硬碟的效能,開始在硬碟上加裝作為快取 (Cache) 的記憶體。而 Windows 開發團隊當然也配合硬碟製造商,在硬碟加裝快取記憶體的同時,也為硬碟加入「啟用進階效能 (Enable advanced performance)」的功能。

到了 Windows 7 的時代。Microsoft 為了讓使用者看名字就知道有什麼作用,特別將「啟用進階效能」改名為「Windows 寫入快取緩衝區排清」。

個人認為,如果光看名字就能了解,這篇文章就沒有存在的必要。現在看不懂沒關係,請繼續看以下的說明。

現在的硬碟粗略可分為儲存媒體、韌體和快取記憶體三大部分,分別負責儲存資料、控制資料讀寫,以及暫存資料的工作。大致上來說,這三者和作業系統間的「寫入」工作流程為:

作業系統 (應用程式) 發出寫入資料的命令→硬碟韌體接到命令→硬碟韌體將資料保留到快取記憶體→硬碟韌體發出「資料寫入完成」的訊息給作業系統→硬碟韌體要求把資料寫入儲存媒體 (清空快取記憶體的資料)→等候下一次的寫入命令

基本上,這樣的流程就可以稱做寫入快取緩衝區排清。用白話一點的說法,就是把快取記憶體的資料剪下,然後貼上到硬碟的儲存媒體。但是您有沒有注意到,硬碟其實是在欺騙作業系統?資料進入快取記憶體這個階段,硬碟韌體就會告訴作業系統說「排清作業完成,請給我下一個指令」。所以 Windows 7 會發出另一個「胡說八道,你騙誰啊」的指令,要求硬碟真的將資料寫入儲存媒體之後,再發一次通知給作業系統,也就是預設為啟用的「Windows 寫入快取緩衝區排清」。

因此,啟用 Windows 寫入快取緩衝區排清,實際上的寫入流程會是:

作業系統 (應用程式) 發出寫入資料的命令→硬碟韌體接到命令→硬碟韌體將資料保留到快取記憶體→硬碟韌體發出「資料寫入完成」的訊息給作業系統→硬碟韌體交代把資料寫入儲存媒體 (清空快取記憶體的資料)→硬碟韌體再次發出「資料寫入完成」的訊息給作業系統→等候下一次的寫入命令

這麼做的目的,是為了確保資料的安全性,因為電源中斷,快取記憶體中的資料就會消失。所以啟用這項功能,能確保儲存媒體中的資料可以安全寫入儲存媒體。

因為作業系統會等待硬碟發出第二次資料寫入完成的訊息,所以作業系統的速度 (應用程式的效能),會受到硬碟寫入速度快慢的影響。但 SSD 的寫入速度是傳統機械式硬碟的 N 倍,可能會讓玩家有「關閉 Windows 寫入快取緩衝區排清,可以提升 SSD (系統整體) 效能」的感覺 (因為不需要等資料完全寫入硬碟,就讓作業系統發出下一次的寫入資料命令,可以節省等候的時間)。

現在有兩個問題:
1. 是誰負責控制資料寫入?
2. SSD 一口氣把快取記憶體內的資料寫入儲存媒體,大概需要多少時間?

不用猜,直接給答案:
1. 硬碟韌體。
2. 以 Intel 320 系列的 SSD 來看,64M 大小的快取記憶體,即使是 40G 的型號,資料實際寫入時間約一秒鐘 (容量越大的型號,寫入所需要的時間就越少)。而且,硬碟韌體不會等快取記憶體塞滿了才進行排清的工作,處理的時間會少於一秒鐘,因此 SSD 的使用者不會感覺到那微乎其微的差異。

個人推測,從這兩個問題的答案,就可以解釋「為什麼 Intel 不建議關閉 Windows 寫入快取緩衝區排清這項功能」,因為:我 (Intel) 要求資料完整性和系統穩定性,就算你從 Windows 7 關閉這項功能,我還是會要求硬碟韌體多傳一次命令給作業系統,如此才能確保資料可以平安寫入儲存媒體。也就是說,如果您關閉 Windows 7 的這項功能,作業系統會收到兩次資料寫入完成的命令而混淆,而讓 Intel SSD 的效能變成笑能 (請參閱這篇文章的圖表)。

而從 OCZ Vertex 2 240G 的測試來看,關閉這項功能前後的效能幾乎沒有差別。也就是說,您大可不必刻意花時間去關閉這項功能。

當然,您還是可以選擇關閉這項功能。根據 Microsoft 員工 Raymond Chen 個人部落格針對這個主題發佈的文章來看,如果能滿足以下條件,即可關閉這項功能:

1. 不在乎硬碟資料的完整性。
2. 硬碟有另外接到安裝 UPS 的電源供應器上。
3. 筆記型電腦雖然有電池,不過這不能算是有接到 UPS 上,因為電力有可能不小心用光,或是不小心誤拔電池 (能做到這種地步,我想應該不會去手動關閉這項功能才對)。





沒有留言:

張貼留言