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