search
尋找貓咪~QQ 地點 桃園市桃園區 Taoyuan , Taoyuan

SSD為啥那麼快?秘密就在這裡

本文經超能網授權轉載,其它媒體轉載請經超能網同意。

使用快閃記憶體為存儲載體的SSD的讀寫過程與傳統的HDD有著本質上的不同,特別是在寫入方面,HDD是可以直接對存儲在磁碟上的數據進行覆蓋寫入的,SSD並不能這樣,快閃記憶體需要先擦除原來的數據再把新的數據寫進去,不能直接覆寫數據使得SSD多了擦除的操作,而寫入單位(Page)與擦除單位(Block)的不統一又讓SSD不停地在各個Block區塊之間折騰,SSD用久了需要擦除的區塊就會越多,性能自然也會變慢,然而現在的SSD基本都不會這樣,為什麼會這樣呢?

浦科特的SSD就以True Speed不掉速

SSD的寫入方式決定了它越用越慢的特性,數據寫入的越多性能就會越差,不過現在的SSD都支持TRIM指令與GC垃圾回收功能,在他們倆的守護下可以確保你的SSD裡面即使寫入得再多東西也不會輕易掉速。

TRIM指令

TRIM指令是微軟提出的,但是SSD廠商也有支持與不支持TRIM之分,所以還是跟SSD有一定關係。

TRIM是基於SATA控制器的一個指令,一旦有文件刪除或者分區格式化,操作系統就會發TRIM指令給SSD主控告訴它某處的數據已經刪除了,SSD因而知道那些數據是能動那些不能動的,之後就可以進行清空操作以恢復性能了。不過這個過程不是馬上就完成的,TRIM命令是即時發送到SSD主控中的,但是什麼時候開始清空數據是主控演算法的事。

對TRIM指令的支持是現在SSD主控必備的

之所以有這麼一個溝通過程還是跟SSD與HDD的讀寫方式不同有關,首先操作系統的刪除數據並不是真正把數據清空了,只是加了刪除的標籤而已(就像摘了門牌號,房子還在一樣)就是說真實的數據還在,不過普通的操作訪問不到了,但是一些專用的數據恢復軟體可以把這些數據再找回來。

HDD機械硬碟是可以直接在原有數據上直接覆蓋,但是SSD不行,必須要清空原有數據才能寫入新數據,而系統並非真正刪除數據的特性會對SSD的性能造成影響,TRIM指令的存在使得SSD能夠緊緊跟隨OS的操作意圖,擦除已刪除的無用數據以恢復SSD性能。

上圖很好的說明了TRIM指令是如何工作的,前三步分別是空數據、寫數據和刪除部分數據,在此之後TRIM指令就會通知SSD主控可以清空紅色區域的無用數據,之後SSD的性能就可以恢復如初了。

TRIM支持與否依賴於操作系統、磁碟控制器驅動以及SSD主控,Win7、Windows 2008 R2、Linux 2.6.33、MAC OS 10.6.6、Free BSD 8.2及之後的系統都支持TRIM或者類似指令,Intel 9.6.0.1014及之後的磁碟驅動都可以支持,不過TRIM指令並不強制要求AHCI,IDE模式也可以,只是SSD幾乎沒誰用IDE模式吧。

微軟PPT中專門解釋過TRIM指令的工作方式和優點

Intel在RST 11.5之後的驅動中提供RAID模式的TRIM指令支持,還有一些廠商用自己的方式解決了RAID模式下的TRIM指令問題。另外,XP系統下是不支持TRIM指令的,不過三星的工具軟體也可以讓其SSD實現類似TRIM的功能。

浦科特M8Se有著很高的TRIM效率,這可以提高產品的性能穩定性,能讓SSD能夠保持較長時間的高速運行,還可以抑制寫入放大,提高快閃記憶體的壽命:

用戶可以自行檢查TRIM指令開啟與否,打開CMD窗口定位到「fsutil behavior set DisableDeleteNotify 0」表示啟用TRIM,如果是1就表示禁用狀態或者不支持。

GC垃圾回收

垃圾回收(garbage collection,簡稱GC)是SSD恢復性能的另一大秘籍,這個主要跟廠商所用的主控有關,其意義就跟字面意思一樣,通過清理無用的垃圾數據保持SSD性能如新。

它的存在還是跟SSD的特性有關,空盤下SSD寫入數據所需時間以ns計,但是擦除數據的過程則以ms計,寫入的數據越多,需要擦除的時間也越長,SSD的寫入性能就會嚴重下降,GC機制相當於」騰籠換鳥」,把原本雜亂無章存放的數據整理一遍,然後寫入到新的空白區,之前的區塊就會進行清除操作以恢復正常性能。

GC的處理過程

由於各種寫入、刪除操作會在SSD留下雜亂的數據,其中有些是還有用的,有些就是無效的,GC功能啟動之後就把有用的數據拷貝到另外的區塊,這一步相當於「騰籠」,原來存儲數據的區域就會被 清除,恢復空盤水平以準備寫入新的數據,這就是「換鳥」了。

上面只是理論操作過程,具體怎麼做還有個選擇問題,如果在SSD讀寫數據的同時進行GC操作,這種實時GC(Real Time GC)對主控的性能是個考驗,一方面要往空白區寫入數據,同時還要照顧無效數據的「拆遷」工作,這麼頻繁折騰SSD的話估計SSD那有限的讀寫壽命也支撐不住,實時GC不可取。

浦科特在2011年的M2P就使用過相當激進的實時GC功能,性能確實不會降低,不過那個時候的快閃記憶體還是32nm的MLC,壽命相當有保障,現在無論MLC還是TLC都不夠膽這樣玩了。

目前的GC大都是在SSD閑置時才開始工作,也就是所謂的「Idle Time GC(閑置GC)」了。廠商會在主控中設定一個條件,比如空白容量達到某種比例才開始GC處理,這樣就預先釋放了空白空間,如果達到設定條件的上限,那麼GC也會停止,這樣處理比實時GC更利於延長SSD壽命。

閑置GC也不是完美無缺的,它會帶來額外的寫入放大,因為在GC處理開始之前,某些整理過的頁面(page)可能正在變髒,不過閑置GC增加的寫入放大率非常小,OCZ稱其SSD的閑置GC只有額外的1%放大率,影響非常小,整體上依然是利大於弊。

現在的SSD大都是利用TRIM和閑置GC相輔相成工作的,當用戶刪除或者修改文件時,系統就會發送TRIM指令告訴SSD那部分數據可以刪掉了,然後SSD在閑置時就會對這部分區域進行GC騰出空白的快閃記憶體空間,實時GC功能現在在啟用SLC Cache的SSD上會比較明顯,畢竟它們要快速的騰出SLC Cache空間給後續的數據,這樣才能確保SSD擁有高速的寫入。

TRIM指令通知給SSD的可刪除數據越多,GC操作需要轉移的數據就越少,寫入量也會減少,對SSD來說也是延長使用壽命的一種方式。

驅動之家

"加關注,每日最新的手機、電腦、汽車、智能硬體信息可以讓你一手全掌握。推薦關注!【

微信掃描下圖可直接關注



熱門推薦

本文由 yidianzixun 提供 原文連結

寵物協尋 相信 終究能找到回家的路
寫了7763篇文章,獲得2次喜歡
留言回覆
回覆
精彩推薦