從主機(jī)PC端開始,用戶從操作系統(tǒng)應(yīng)用層面對SSD發(fā)出請求,文件系統(tǒng)將讀寫請求經(jīng)驅(qū)動(dòng)轉(zhuǎn)化為相應(yīng)的符合協(xié)議的讀寫和其他命令,SSD收到命令執(zhí)行相應(yīng)操作,然后輸出結(jié)果,每個(gè)命令的輸入和輸出經(jīng)協(xié)議標(biāo)準(zhǔn)組織標(biāo)準(zhǔn)化,這是標(biāo)準(zhǔn)的東西,和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)部計(jì)算和處理邏輯,輸出用戶所需要的數(shù)據(jù)或狀態(tài)。
從圖1-13可以看出,SSD主要有三大功能模塊組成:
1. 前端接口和相關(guān)的協(xié)議模塊;
2. 中間的FTL層(Flash Translation Layer)模塊;
3. 后端和閃存通訊模塊。
SSD前端負(fù)責(zé)和主機(jī)直接通訊,接收主機(jī)發(fā)來的命令和相關(guān)數(shù)據(jù),命令經(jīng)SSD處理后,最終交由前端返回命令狀態(tài)或數(shù)據(jù)給主機(jī)。SSD通過諸如SATA、SAS和PCIe等接口與主機(jī)相連,實(shí)現(xiàn)對應(yīng)的AHCI、SCSI和NVMe等協(xié)議。
表1-1 SATA/SAS/PCIe接口協(xié)議
我們看看SSD是怎么進(jìn)行讀寫的。
主機(jī)通過接口發(fā)送寫命令給SSD,SSD接收到該命令后執(zhí)行,并接收主機(jī)要寫入的數(shù)據(jù)。數(shù)據(jù)一般會先緩存在SSD內(nèi)部的RAM中,F(xiàn)TL會為每個(gè)邏輯數(shù)據(jù)塊分配一個(gè)閃存地址,當(dāng)數(shù)據(jù)湊到一定數(shù)量后,F(xiàn)TL便會發(fā)送寫閃存請求給后端,然后后端根據(jù)寫請求,把緩存中的數(shù)據(jù)寫到對應(yīng)的閃存空間。
由于閃存不能覆蓋寫,閃存塊需擦除才能寫入。主機(jī)發(fā)來的某個(gè)數(shù)據(jù)塊,它不是寫在閃存固定位置,SSD可以為其分配任何可能的閃存空間寫入。因此,SSD內(nèi)部需要FTL這樣一個(gè)東西,完成邏輯數(shù)據(jù)塊到閃存物理空間的轉(zhuǎn)換或者映射。
舉個(gè)例子,假設(shè)SSD容量為128GB,邏輯數(shù)據(jù)塊大小為4KB,所以該SSD一共有128GB/4KB = 32M個(gè)邏輯數(shù)據(jù)塊。每個(gè)邏輯塊都有一個(gè)映射,即每個(gè)邏輯塊在閃存空間都有一個(gè)存儲位置。閃存地址大小如果用4字節(jié)表示,那么存儲32M個(gè)邏輯數(shù)據(jù)塊在閃存中的地址則需要32M*4B = 128MB大小的映射表。
正因?yàn)镾SD內(nèi)部維護(hù)了一張邏輯地址到物理地址轉(zhuǎn)換的映射表,當(dāng)主機(jī)發(fā)來讀命令時(shí),SSD能根據(jù)需要讀取的邏輯數(shù)據(jù)塊,查找該映射表,獲取這些邏輯數(shù)據(jù)在閃存空間所在位置,后端便能從閃存上把對應(yīng)數(shù)據(jù)讀到SSD內(nèi)部緩存空間,然后前端負(fù)責(zé)把這些數(shù)據(jù)返回給主機(jī)。
由于前端接口協(xié)議都是標(biāo)準(zhǔn)化的,后端和閃存的接口及操作也是標(biāo)準(zhǔn)化的(閃存遵循ONFI或者Toggle協(xié)議),因此,一個(gè)SSD在前端協(xié)議及閃存確定下來后,差異化就體現(xiàn)在FTL算法上了。FTL算法決定了性能、可靠性、功耗等SSD的核心參數(shù)。
其實(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ù)。垃圾回收就是把一個(gè)或者幾個(gè)Block上的有效數(shù)據(jù)搬出來集中寫到某個(gè)空閑Block (比如Block z)。當(dāng)這些Block上的有效數(shù)據(jù)都搬走后,F(xiàn)TL便能擦除這些Block,然后這些Block又能拿出來供SSD寫入新的數(shù)據(jù)了。
還有,閃存都是有壽命的,每個(gè)閃存塊不能一直寫數(shù)據(jù),因此,為保證最大的數(shù)據(jù)寫入量,F(xiàn)TL必須盡量讓每個(gè)閃存塊均衡寫入,這就是磨損平衡(Wear Leveling)。
除此之外,F(xiàn)TL還需要實(shí)現(xiàn)壞塊管理、讀干擾處理、數(shù)據(jù)保持處理、錯(cuò)誤處理等等其它很多事情。理解了FTL,SSD的工作原理也就掌握了。關(guān)于FTL,本書有專門章節(jié)介紹,讀者可自行跳到第四章閱讀。
1.2 SSD產(chǎn)品核心參數(shù)
用戶在購買SSD之前,會關(guān)注它的一些參數(shù)指標(biāo),比如能跑多快、用的是什么閃存等等。特別是企業(yè)級用戶,需要全方位研究SSD的核心指標(biāo),解決關(guān)注什么指標(biāo),如何關(guān)注,競爭產(chǎn)品對比這些問題,最終逐一撥開產(chǎn)品內(nèi)在本質(zhì)。本節(jié)以SSD產(chǎn)品為例,帶大家一起解讀SSD產(chǎn)品的核心參數(shù)。
-
閃存
+關(guān)注
關(guān)注
16文章
1845瀏覽量
115992 -
SSD
+關(guān)注
關(guān)注
21文章
2984瀏覽量
119607
原文標(biāo)題:購買固態(tài)硬盤看哪些核心參數(shù)?
文章出處:【微信號:SSDFans,微信公眾號:SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
評論