首頁 > 硬體

SSD為什麼這麼快SSD原理介紹【詳解】

2020-10-19 01:17:33

  隨著科技的不斷髮展,選擇 SSD的使用者越來越多,使用者之所以選擇 SSD是因為 SSD的速度很快, SSD為啥這麼快?下面就隨小編一起來了解下吧!

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

  SSD為啥這麼快?祕密就在這裡 ---浦科特的SSD就以True Speed不掉速

  SSD的寫入方式決定了它越用越慢的特性,資料寫入的越多效能就會越差,不過現在的SSD都支援TRIM指令與GC垃圾回收功能,在他們倆的守護下可以確保你的SSD裡面即使寫入得再多東西也不會輕易掉速,這就是 SSD為啥這麼快的主要原因。

  TRIM指令

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

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

  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模式吧。

  SSD為啥這麼快?祕密就在這裡 --- 微軟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就表示禁用狀態或者不支援。

  SSD為啥這麼快?祕密就在這裡 --- GC垃圾回收

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

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

  SSD為啥這麼快?祕密就在這裡 --- 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來說也是延長使用壽命的一種方式。

 


IT145.com E-mail:sddin#qq.com