首頁    

/達人文章首頁



儲存設備

解構SSD--看完變成專家

2018/2/12 上午 08:06:34


固態硬碟(Solid State Disk、Solid State Drive,簡稱 SSD)以快閃記憶體 (Flash memory)來儲存資料,完全不同於以磁技術來儲存資料的傳統硬碟,目前市場主流 SSD 產品利用 NAND Flash 這種快閃記憶體儲存資料。

相對於傳統硬碟,SSD 有很多優勢,像是安靜、防震、省電、效能高、散熱好。另外,SSD 少了機械尋軌的時間,存取任何儲存的位址的耗費都相等,也就是 IO 性能遠快於傳統硬碟。

SSD 也有先天上的缺點,這篇文章帶讀者深入了解 SSD ,可以幫助讀者將來選購硬碟時有基礎知識來幫助做適當的選擇。

常見規格

上網選購 SSD 時,經常看到幾個規格的名詞:

    • (一) 介面

SATA3.0, mSATA, M.2

    • (二) NAND Flash
    • (三) Cell

SLC, MLC, TLC

(一) 介面

固態硬碟的介面與傳統硬碟完全相同,常見的介面規格有:SATA3.0, mSATA, M.2 等。

SATA3.0, mSATA 都走 SATA 通道。M.2 分 Socket2, Socket3 二種,Socket 2 走 SATA 通道, Socket 3 走 PCIe 通道。

怎麼判斷 M.2 固態硬碟是走哪個通道?規格如果寫 M.2 SATA ,代表走 SATA 通道。

M.2 SATA 固態硬碟比一般 2.5 吋 SATA 或 mSATA 固態硬碟更快嗎?

事實上,可能差不多。不論是 2.5 吋 SATA、mSATA 或 M.2 固態硬碟,目前大都是 SATA 3.0 規格,理論速度是 600MB/s。也要看固態硬碟的控制器、內部佈局而定。

(二) NAND Flash

SSD 利用 Flash 晶片或是 DRAM 晶片儲存資料。暫且稱為 DRAM SSDFlash SSD,Flash SSD 是目前市面上的主流 SSD 產品。

 

DRAM SSD 內部是用 SDRAM 記憶體條來儲存資料的 SSD。我們知道,這種 DRAM 記憶體的設計是用來暫存資料,電腦關機後,沒有電了,資料就不見。因此這種 DRAM SSD 就需要靠電池來保持 DRAM 的資料。

 

Flash SSD 常見使用的是 NAND Flash 晶片。Flash 晶片有 NOR FlashNAND Flash 二種。 NAND Flash 具有容量較大,改寫速度快等優點,適用於大量數據的儲存,所以我們挑選 SSD 時,經常看到的規格名稱之一就是 NAND Flash (快閃記憶體)

(三) Cell

另一個常見的 SSD 規格是 SLC, MLC, TLC 。Flash 晶片使用一種稱為「懸浮式閘極電晶體」來存資料。每個這種電晶體稱為一個「Cell」。

目前市場上有三種型態的 Cell:(1) Single Level Cell (SLC)、(1) Multi Level Cell (MLC)、(1) Triple Level Cell (TLC)。

儲存容量大小依序是:TLC > MLC > SLC。但是,容量越大可靠性越低。

不管採用哪一種儲存單元,都有出錯的可能,因此都需要額外儲存 ECC (Error Checking and Correction) 資訊來糾錯,保證資料的正確性。

認識原理

SSD 最重要的三個電子元件是負責存放資料的記憶體,和控制 SSD 的 Controller 以及緩存

Controller 主要負責以下事情:

  • 錯誤檢查和糾正(ECC)
  • 磨損平衡(Wear leveling)
  • 壞塊映射(Bad block mapping)
  • Read disturb 管理(讀取某個塊的資料的時候會影響到相鄰塊的資料)
  • 緩存控制
  • 垃圾回收
  • 加密

讀寫單位

傳統磁碟最小讀寫單位是 512 bytes 大小的磁區,SSD 最小讀寫單位稱作 Page 。每個 Page 由一堆 Cell 在邏輯上形成。Page 分兩個區域,分別存放資料及ECC 驗證資料。一個 Page 可以為 2122 bytes(含ECC)、4313 bytes(含ECC)...等。每種型號的 Flash memory Page 大小都不一樣。

每 128 個 Page 組成一個 Block 。每 2048 個 Block 組成一個 Plane。

讀取

SSD 讀取資料的最小單位是一個 Page。一般 SSD Controller 會維護一個 mapping table,紀錄著邏輯位址和物理位址的對應,每次讀寫,透過邏輯地址查表計算出物理地址。SSD Controller 將讀取的資料儲存在 SSD RAM Buffer,完成一個 Page 內容的讀出。

寫入

SSD 寫入資料的最小單位是一個 Page。每一次寫入,SSD Controller 會在 Flash 找一塊「空白」 Page,把資料寫入,並在 mapping table 記錄這筆資料寫在哪個物理位址。

這樣的寫入比較單純,問題是發生在,我們經常會刪除和修改檔案,SSD 在資料儲存方面如何處理這類動作呢?

先談刪除,從使用者觀點,當我們透過作業系統刪除資料,看起來資料好像被丟到資源回收桶,然後被系統刪除,從此「不存在」了。事實上,資料仍被保留在硬碟或 SSD。

剛才提到,Flash 儲存資料時,SSD Controller 會把這份資料的物理位址紀錄在 mapping table。要讀取這份資料時,先查 mapping table ,找出它的實際位址。

當你透過作業系統刪除資料,其實是在 mapping table 將那筆資料標註為已刪除。事實上,資料仍在 Flash 內。這些資料就成為無效的垃圾資料,佔據了可用的空間,可用的容量自然是越來越小,效能也會變差。

繼續談修改。Flash 不同於機械硬碟,Flash 不能直接把資料覆寫在已有資料的空間,必須先做「Erase」,把舊資料抹除掉。因為一些不得已的原因,每一次抹除的基本單位是 Block

Flash 讀寫最小單位是 Page。一個 Block 包含 128 個 Page,為什麼抹除資料不是以較小的 Page 為基本單位,卻用較大的 Block 做基本單位呢?這個技術問題太細節了,暫且不談。

假設你修改一個 100 MB 大小的檔案,你實際上只修改 5KB,SSD 作法是,先以 Block 為單位,整份 100 MB 的資料複製出來放在緩存,再把原本的舊資料都抹除,在緩存裡面更新你修改的 5KB 資料,然後把 100 MB 資料再寫回去。

在這個機制稱為「寫放大 (Write Amplification)」,因為你只要寫入 5KB,卻因為重新寫入而寫入了 100MB。可想見,這個機制下,SSD 的快取記憶體必須要很大。

隨著 Flash 讀寫次數增加,包裹在懸浮閘 (Floating Gate) 外的二氧化矽絕緣體的絕緣能力會逐漸耗損,最後失去絕緣性,這個電晶體 (Cell) 就算是損壞了。這個絕緣體耗損稱為 Wear off

寫放大這個機制更是加大了絕緣體的耗損,因為做了很多不必要的抹寫。

讀到這裡,你可以看到 SSD 至少有二大問題:(一)很容易產生一堆垃圾資料佔據空間、(二)覆寫造成的耗損。

垃圾回收

由於 Flash 不可覆寫的特性,容易產生許多垃圾資料,為解決這問題,SSD 有垃圾回收機制。當寫入新資料時,如果 SSD Controller 找不到可以寫入的空 page 時,會執行 GC 。用下圖來解釋比較清楚:

(一) 假設 Block X 有五個 Page 寫入了資料 A ~ E,見圖一。

(二) 我們寫入了新資料 F ~ K,修改 A ~ E 為 A' ~ E'。SSD 會將新修的資料 A' ~ E' 寫入空白 Page,將舊資料 A ~ E 標註為 Garbage。見圖二。

(三) SSD 將新的資料 F ~ E' 寫入到 Block Y 的空 Page,抹除整個 Block X 成為全部是空的 Page,見圖三。

這個做法好處是,每一次的寫入都是寫到空的 Page,減少一些讀寫次數,也清理出空的 Page,減少垃圾資訊佔住空間。

TRIM

TRIM是 ATA 指令,如果作業系統支援與啟動這個指令,當我們刪除檔案時,作業系統會即時發送指令給 SSD Controller,通知它哪些資料佔用的地址是「失效」,

啟用 TRIM 指令的好處是,隨時清空帶刪除的垃圾資訊,而不是等到要寫入新資料時才開始清空,加大 SSD Controller 負擔。

超容量快取(Over-Provisioning)與預留空間

許多 SSD 中常有 7% 的超容量快取,這是為了垃圾資料回收、備用區塊、和增強資料保護。

使用者不能使用這個超容量快取。作業系統也看不見這個容量。容量越大的 SSD 往往會配置較大比例的超容量快取容量。

所以,如果你買了 256 GB 的 SSD ,不可能讓你完全使用 256 GB 的容量。

磁碟重組問題

傳統硬碟用久了,檔案會被迫切割分散在硬碟的不連續空間中,資料的分布變得很散亂。

隨操作越久資料越分散,硬碟要找一個檔案就要到很多不連續的空間去尋找,才能湊成一個檔案,以致存取資料速度變慢,為了解決這問題,有了硬碟重組的工具,把散亂的資料依序整理好,,做優化。

那麼 SSD 用久了,也要做磁碟重組嗎?對 SSD 來說,資料不論是依序排放,或隨機放。透過電流,讀取任何一磁區所需要的時間都相同,磁碟重組不但沒有意義,還會減少它的壽命。因此,沒有磁碟重組的需要。






熱門文章

 線上諮詢
 BiNGLE 客服為您服務

目前線上暫無人服務
  線上服務時間:周一~周五 09:00~18:00
  服務時間:周一~周五 09:00 ~ 18:00