從主機PC端開始,用戶從操作系統(tǒng)應(yīng)用層面對SSD發(fā)出請求,文件系統(tǒng)將讀寫請求經(jīng)驅(qū)動轉(zhuǎn)化為相應(yīng)的符合協(xié)議的讀寫和其他命令,SSD收到命令執(zhí)行相應(yīng)操作,然后輸出結(jié)果,每個命令的輸入和輸出經(jīng)協(xié)議標準組織標準化,這是標準的東西,和HDD無異,只不過HDD替換成SSD硬件存儲數(shù)據(jù),訪問的對象變成SSD。

圖1-13 SSD系統(tǒng)調(diào)用
SSD的輸入是命令(Command),輸出是數(shù)據(jù)(Data)和命令狀態(tài)(Command Status)。SSD前端(Front End)接收用戶命令請求,經(jīng)過內(nèi)部計算和處理邏輯,輸出用戶所需要的數(shù)據(jù)或狀態(tài)。
從圖1-13可以看出,SSD主要有三大功能模塊組成:
1. 前端接口和相關(guān)的協(xié)議模塊;
2. 中間的FTL層(Flash Translation Layer)模塊;
3. 后端和閃存通訊模塊。
SSD前端負責和主機直接通訊,接收主機發(fā)來的命令和相關(guān)數(shù)據(jù),命令經(jīng)SSD處理后,最終交由前端返回命令狀態(tài)或數(shù)據(jù)給主機。SSD通過諸如SATA、SAS和PCIe等接口與主機相連,實現(xiàn)對應(yīng)的AHCI、SCSI和NVMe等協(xié)議。
表1-1 SATA/SAS/PCIe接口協(xié)議

我們看看SSD是怎么進行讀寫的。
主機通過接口發(fā)送寫命令給SSD,SSD接收到該命令后執(zhí)行,并接收主機要寫入的數(shù)據(jù)。數(shù)據(jù)一般會先緩存在SSD內(nèi)部的RAM中,F(xiàn)TL會為每個邏輯數(shù)據(jù)塊分配一個閃存地址,當數(shù)據(jù)湊到一定數(shù)量后,F(xiàn)TL便會發(fā)送寫閃存請求給后端,然后后端根據(jù)寫請求,把緩存中的數(shù)據(jù)寫到對應(yīng)的閃存空間。
由于閃存不能覆蓋寫,閃存塊需擦除才能寫入。主機發(fā)來的某個數(shù)據(jù)塊,它不是寫在閃存固定位置,SSD可以為其分配任何可能的閃存空間寫入。因此,SSD內(nèi)部需要FTL這樣一個東西,完成邏輯數(shù)據(jù)塊到閃存物理空間的轉(zhuǎn)換或者映射。
舉個例子,假設(shè)SSD容量為128GB,邏輯數(shù)據(jù)塊大小為4KB,所以該SSD一共有128GB/4KB = 32M個邏輯數(shù)據(jù)塊。每個邏輯塊都有一個映射,即每個邏輯塊在閃存空間都有一個存儲位置。閃存地址大小如果用4字節(jié)表示,那么存儲32M個邏輯數(shù)據(jù)塊在閃存中的地址則需要32M*4B = 128MB大小的映射表。
正因為SSD內(nèi)部維護了一張邏輯地址到物理地址轉(zhuǎn)換的映射表,當主機發(fā)來讀命令時,SSD能根據(jù)需要讀取的邏輯數(shù)據(jù)塊,查找該映射表,獲取這些邏輯數(shù)據(jù)在閃存空間所在位置,后端便能從閃存上把對應(yīng)數(shù)據(jù)讀到SSD內(nèi)部緩存空間,然后前端負責把這些數(shù)據(jù)返回給主機。
由于前端接口協(xié)議都是標準化的,后端和閃存的接口及操作也是標準化的(閃存遵循ONFI或者Toggle協(xié)議),因此,一個SSD在前端協(xié)議及閃存確定下來后,差異化就體現(xiàn)在FTL算法上了。FTL算法決定了性能、可靠性、功耗等SSD的核心參數(shù)。
其實,F(xiàn)TL除了完成邏輯數(shù)據(jù)到閃存空間的映射,還需要做很多其它事情。
前面提到,閃存不能覆蓋寫,因此隨著用戶數(shù)據(jù)的不斷寫入,閃存空間會產(chǎn)生垃圾(無效數(shù)據(jù))。FTL需要做垃圾回收(Garbage Collection)以騰出可用閃存空間用以寫用戶數(shù)據(jù)。

圖1-14 垃圾數(shù)據(jù)回收
以圖1-14為例,在Block x和Block y上有很多垃圾數(shù)據(jù),其中Block x上A,B,C為有效數(shù)據(jù),Block y上D, E,F,G為有效數(shù)據(jù)。垃圾回收就是把一個或者幾個Block上的有效數(shù)據(jù)搬出來集中寫到某個空閑Block (比如Block z)。當這些Block上的有效數(shù)據(jù)都搬走后,F(xiàn)TL便能擦除這些Block,然后這些Block又能拿出來供SSD寫入新的數(shù)據(jù)了。
還有,閃存都是有壽命的,每個閃存塊不能一直寫數(shù)據(jù),因此,為保證最大的數(shù)據(jù)寫入量,F(xiàn)TL必須盡量讓每個閃存塊均衡寫入,這就是磨損平衡(Wear Leveling)。
除此之外,F(xiàn)TL還需要實現(xiàn)壞塊管理、讀干擾處理、數(shù)據(jù)保持處理、錯誤處理等等其它很多事情。理解了FTL,SSD的工作原理也就掌握了。關(guān)于FTL,本書有專門章節(jié)介紹,讀者可自行跳到第四章閱讀。
1.2 SSD產(chǎn)品核心參數(shù)
用戶在購買SSD之前,會關(guān)注它的一些參數(shù)指標,比如能跑多快、用的是什么閃存等等。特別是企業(yè)級用戶,需要全方位研究SSD的核心指標,解決關(guān)注什么指標,如何關(guān)注,競爭產(chǎn)品對比這些問題,最終逐一撥開產(chǎn)品內(nèi)在本質(zhì)。本節(jié)以SSD產(chǎn)品為例,帶大家一起解讀SSD產(chǎn)品的核心參數(shù)。
-
閃存
+關(guān)注
關(guān)注
16文章
1900瀏覽量
117299 -
SSD
+關(guān)注
關(guān)注
21文章
3112瀏覽量
122246
原文標題:購買固態(tài)硬盤看哪些核心參數(shù)?
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
解讀SSD基本工作原理和產(chǎn)品的核心參數(shù)
評論