0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎么使用SSD才能避免越寫(xiě)越慢?

SSDFans ? 來(lái)源:未知 ? 作者:胡薇 ? 2018-06-02 10:58 ? 次閱讀

垃圾回收(Garbage Collection,GC)是FTL的一個(gè)重要任務(wù)。我們虛構(gòu)一個(gè)小小的SSD空間,來(lái)講垃圾回收原理,以及與之緊密聯(lián)系的WA(Write Amplification,寫(xiě)放大)和OP (Over Provisioning,預(yù)留空間)等概念。

麻雀雖小五臟俱全。翠花,上麻雀。

圖1-1 虛構(gòu)的小小SSD空間

我們假設(shè)該SSD底層有4個(gè)通道(Channel,CH0-CH3),連接著4個(gè)Die (每個(gè)Channel上的Die可并行操作),假設(shè)每個(gè)Die只有6個(gè)閃存塊(Block0-Block5),所以一共24個(gè)閃存塊。每個(gè)閃存塊內(nèi)有9個(gè)小方塊,每個(gè)小方塊的大小和邏輯頁(yè)大小一樣。24個(gè)閃存塊中,我們假設(shè)其中的20個(gè)閃存塊大小為SSD容量,就是主機(jī)端看到的SSD大?。涣硗?個(gè)閃存塊是超出SSD容量的預(yù)留空間,我們稱(chēng)之為OP (Over Provisioning)。

好,一個(gè)SSD擺在我們面前,蛋蛋開(kāi)始寫(xiě)小電影了。

圖1-2 主機(jī)寫(xiě)入4個(gè)邏輯頁(yè)數(shù)據(jù)后

我們順序?qū)懭?個(gè)邏輯頁(yè),分別寫(xiě)到不同通道上的Die上,這樣寫(xiě)的目的是增加底層的并行性,提升寫(xiě)入性能。

用戶繼續(xù)順序?qū)懭耄碳t把數(shù)據(jù)交錯(cuò)寫(xiě)入到各個(gè)Die上,直到寫(xiě)滿整個(gè)SSD空間(主機(jī)端看到的)。如下:

圖1-3 用戶空間寫(xiě)滿后的SSD

整個(gè)盤(pán)寫(xiě)滿了(從用戶角度來(lái)看整個(gè)用戶空間寫(xiě)滿了,但在閃存空間,由于OP的存在,并沒(méi)有寫(xiě)滿),如果蛋蛋想放入更多的小電影,怎么辦?不能怎么辦,只能把看過(guò)的小電影割?lèi)?ài)刪除了,騰出空間放新的小電影。

繼續(xù)拷入小電影。

圖1-4 刪除4個(gè)邏輯頁(yè)后再次寫(xiě)入4個(gè)邏輯頁(yè)

假設(shè)還是從邏輯頁(yè)1開(kāi)始寫(xiě)入。這個(gè)時(shí)候,SSD會(huì)把新寫(xiě)入的邏輯頁(yè)寫(xiě)入到所謂的OP空間。對(duì)SSD來(lái)說(shuō),不存在什么用戶空間和OP空間,它只看到閃存空間。主機(jī)端來(lái)數(shù)據(jù),SSD就往閃存空間寫(xiě)。上面有人紅了,怎么回事?因?yàn)檫壿嬳?yè)1-4的數(shù)據(jù)已更新,寫(xiě)到新的地方,那么之前那個(gè)位置上的邏輯頁(yè)1-4數(shù)據(jù)就失效了,過(guò)期了,變垃圾了。用戶更新數(shù)據(jù),由于閃存不能在原位置覆蓋寫(xiě),固件只能另找閃存空間寫(xiě)入新的數(shù)據(jù),因此導(dǎo)致原閃存空間數(shù)據(jù)過(guò)時(shí),形成垃圾。

繼續(xù)順序?qū)懭?,紅色方塊越來(lái)越多(垃圾數(shù)據(jù)越來(lái)越多)。所有閃存空間都寫(xiě)滿后,小SSD世界就是下面這個(gè)樣子:

圖1-5 閃存空間寫(xiě)滿

等所有Die上的Block 5寫(xiě)滿后,所有Die上的Block 0也全紅了(這些數(shù)據(jù)都是垃圾)。

現(xiàn)在不僅整個(gè)用戶空間都寫(xiě)滿,整個(gè)閃存空間都滿了。如果用戶想繼續(xù)寫(xiě)入后續(xù)的邏輯頁(yè)(36之后的) ,怎么辦?

這個(gè)時(shí)候,就需要垃圾回收了。我們暫時(shí)從之前的SSD系統(tǒng)中走出來(lái),看看什么是垃圾回收。

這里需要說(shuō)明的是,實(shí)際中是不會(huì)等所有閃存空間都寫(xiě)滿后才開(kāi)始做GC的,而是在滿之前就觸發(fā)GC,這里只是為描述GC而做的假設(shè)。

垃圾回收,就是把某個(gè)閃存塊上的有效數(shù)據(jù)(圖4-19中綠色的)讀出來(lái),重寫(xiě),然后把該閃存塊擦除,就得到新的可用閃存塊了。

圖1-6 垃圾回收示例

圖中,Block x上面有效數(shù)據(jù)為A,B,C,Block y上面有效數(shù)據(jù)為D,E,F,G,紅色方塊為無(wú)效數(shù)據(jù)。垃圾回收機(jī)制就是先找一個(gè)可用Block z,然后把Block x和Block y的有效數(shù)據(jù)搬移到Block z上面去,這樣Block x和Block y上面就沒(méi)有任何有效數(shù)據(jù),可以擦除變成兩個(gè)可用的閃存塊。

圖1-7 擦除垃圾數(shù)據(jù)塊變成可用數(shù)據(jù)塊

回到我們的小小SSD系統(tǒng)中來(lái)。

上例中,由于我們是順序?qū)懭耄性贐lock 0上,上面沒(méi)有任何有效數(shù)據(jù),我們把它們擦除就可以騰出新的寫(xiě)入空間。用戶就可以把新的數(shù)據(jù)寫(xiě)入到垃圾回收完成的Block 0上了。 從這個(gè)例子中,我們可以看到:順序?qū)懀词故情W存空間寫(xiě)滿后的寫(xiě)(Full Drive寫(xiě)),性能也是比較好的,因?yàn)槔厥湛梢院芸焱瓿桑ㄒ苍S僅僅只要一個(gè)擦除動(dòng)作)。

但現(xiàn)實(shí)是殘酷的:用戶寫(xiě)入數(shù)據(jù),更多的可能是隨機(jī)寫(xiě)入數(shù)據(jù)。下面是一個(gè)閃存空間經(jīng)歷隨機(jī)寫(xiě)滿后的樣子:

圖1-8 隨機(jī)寫(xiě)滿閃存空間后的SSD

用戶如果繼續(xù)往SSD上寫(xiě)入數(shù)據(jù),那么SSD怎么處理?當(dāng)然需要做垃圾回收。 可世道變了,SSD內(nèi)部狀況比之前看到的復(fù)雜多了,垃圾數(shù)據(jù)分散在每個(gè)閃存塊上,而不是集中在某幾個(gè)閃存塊上。這個(gè)時(shí)候,如何挑選需要回收的閃存塊呢?是的,挑垃圾比較多的閃存塊來(lái)回收,因?yàn)橛行?shù)據(jù)少,要搬移的數(shù)據(jù)少,這樣騰出空閃存塊的速度快。

對(duì)上面每個(gè)閃存塊的垃圾數(shù)(紅色方塊)做個(gè)統(tǒng)計(jì):

表1-1 每個(gè)閃存塊上垃圾數(shù)據(jù)統(tǒng)計(jì)

由于我們是同時(shí)往4個(gè)通道上寫(xiě),我們需要每個(gè)通道都有一個(gè)空閑的閃存塊,因此,我們做垃圾回收時(shí),不是回收某個(gè)閃存塊,而是所有通道上都要挑一個(gè)。一般選擇每個(gè)Die上塊號(hào)一樣的所有閃存塊做垃圾回收。上例中,Block 0上的垃圾數(shù)量最多(24個(gè)紅色方塊,最多),因此我們挑Block 0作為垃圾回收的閃存塊(這里忽略PE count等因素,只看垃圾數(shù))。 回收完畢,我們把之前Block 0上面的有效數(shù)據(jù)(綠色方塊)重新寫(xiě)回到這些閃存塊(這里,我們假設(shè)回收的有效數(shù)據(jù)和用戶數(shù)據(jù)寫(xiě)在同一個(gè)閃存塊,實(shí)際,它們可能是分開(kāi)寫(xiě)的)。

圖1-9 做完垃圾回收后的BLOCK0可以繼續(xù)寫(xiě)入數(shù)據(jù)

這個(gè)時(shí)候,有了空閑的空間(白色方塊),用戶就可以繼續(xù)寫(xiě)入數(shù)據(jù)了。

江湖傳言:SSD越寫(xiě)越慢。沒(méi)錯(cuò),其實(shí)這是有科學(xué)依據(jù)的:可用閃存空間富裕時(shí),SSD是無(wú)需做GC的,因?yàn)榭傆锌臻e的空間可寫(xiě)。SSD使用早期,由于沒(méi)有觸發(fā)GC,無(wú)需額外的讀寫(xiě),所以速度很快。慢慢的會(huì)發(fā)現(xiàn)SSD變慢了,主要原因是SSD需要做GC。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • SSD
    SSD
    +關(guān)注

    關(guān)注

    20

    文章

    2833

    瀏覽量

    117127
  • 固態(tài)硬盤(pán)
    +關(guān)注

    關(guān)注

    12

    文章

    1442

    瀏覽量

    57222

原文標(biāo)題:固態(tài)硬盤(pán)越寫(xiě)越慢是真的嗎?

文章出處:【微信號(hào):SSDFans,微信公眾號(hào):SSDFans】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SSD1289寫(xiě)寄存器函數(shù)

    ;}這是一個(gè)例程的關(guān)于SSD1289寫(xiě)寄存器的一個(gè)函數(shù),有兩點(diǎn)不明白:1、這個(gè) (u32)0x6c000000中的0x6c000000代表什么,為什么有這個(gè)數(shù)字,難道涉及SSD1289的寄存器地址范圍?2
    發(fā)表于 03-21 21:12

    安卓手機(jī)越慢。這是為什么呢?

    根據(jù)第三方的調(diào)研數(shù)據(jù)顯示,有77%的Android手機(jī)用戶承認(rèn)自己曾遭遇過(guò)手機(jī)變慢的影響,百度搜索“Android 卡慢”,也有超過(guò)460萬(wàn)條結(jié)果。在業(yè)內(nèi),Android手機(jī)一直有著“越慢
    發(fā)表于 09-05 09:50

    我是用ssd做引導(dǎo)盤(pán)啟動(dòng),怎么做才能用網(wǎng)口讀寫(xiě)ssd里面的文件

    我是用ssd做引導(dǎo)盤(pán)啟動(dòng),怎么做才能用網(wǎng)口讀寫(xiě)ssd里面的文件
    發(fā)表于 04-21 18:18

    急求?。?!vi運(yùn)行時(shí)間久,運(yùn)行速率越慢怎么辦

    了其他所以的程序和窗口,不會(huì)存在內(nèi)存,cpu負(fù)荷不過(guò)來(lái)的問(wèn)題。挺奇怪的是一模一樣的vi我放在一臺(tái)配置較差的筆記本上跑,傳輸頻率特別穩(wěn),半小時(shí)除了鼠標(biāo)沒(méi)移動(dòng)的時(shí)候,其他基本都是500hz的頻率收數(shù)據(jù)。兩臺(tái)電腦labview我是安裝的同一個(gè)版本,真的是不懂為什么一臺(tái)高配電腦運(yùn)行越慢
    發(fā)表于 05-01 14:51

    ALIENTEK開(kāi)發(fā)板實(shí)驗(yàn)28里面的實(shí)時(shí)時(shí)鐘越慢

    這個(gè)實(shí)時(shí)時(shí)鐘越慢啊,應(yīng)該是軟件上面的問(wèn)題,請(qǐng)問(wèn)應(yīng)該修改那個(gè)參數(shù)啊,還是說(shuō)這個(gè)STM32的RTC就是不準(zhǔn)確的?。??????請(qǐng)高手指點(diǎn)迷津!
    發(fā)表于 03-09 04:35

    EMWIN越慢的原因是什么?

    在LPC1788上跑了個(gè)EMWIN,前面幾次切換畫(huà)面(或其他動(dòng)作)都很快,但在后面會(huì)越來(lái)越慢,半天沒(méi)響應(yīng),請(qǐng)問(wèn)是怎么回事?(就是只有兩個(gè)畫(huà)面也會(huì)這樣)
    發(fā)表于 08-25 08:02

    SSD用久了速度會(huì)下降,這究竟是為什么呢?

    SSD用久了速度會(huì)下降,這究竟是為什么呢?造成SSD越慢的原因有哪些呢?
    發(fā)表于 06-18 08:49

    為什么電腦會(huì)越慢

    小白問(wèn)題如“百度與360衛(wèi)士同時(shí)占據(jù)任務(wù)欄”的喜劇場(chǎng)景讓小編哭笑不得。所以這一次,小編再次不服,于是DIY帶你走進(jìn)科學(xué)的欄目又來(lái)了:為什么您的電腦越慢
    的頭像 發(fā)表于 10-23 11:06 ?4917次閱讀

    讀、寫(xiě)、擦除是SSD對(duì)NAND的三大基本操作

    通過(guò)一系列的介紹和實(shí)驗(yàn)驗(yàn)證,我們看到了TRIM的價(jià)值和實(shí)現(xiàn)原理。在TRIM的幫助下,NVMe SSD的GC等操作效率更高,進(jìn)而達(dá)到降低寫(xiě)放大,提高產(chǎn)品性能和壽命的效果。
    的頭像 發(fā)表于 04-28 11:39 ?1w次閱讀

    SSD越慢怎么辦

    SSD早已是主流攢機(jī)的標(biāo)配,有些更陪伴小伙伴有一段日子了,有些問(wèn)題也開(kāi)始暴露出來(lái)了,最明顯的當(dāng)然就是明顯降速問(wèn)題。為啥SSD的速度。特別是存儲(chǔ)速度會(huì)下降呢?有沒(méi)有啥方法能它的速度恢復(fù)正常,至少讓降速別那么夸張呢?
    的頭像 發(fā)表于 05-20 14:37 ?3137次閱讀

    SSD越慢是什么原因

    1月14日,Intel官微又雙叒來(lái)科普了。
    的頭像 發(fā)表于 01-14 11:01 ?2047次閱讀

    SSD為什么會(huì)越慢,究竟是哪方面的原因

    首先SSD的寫(xiě)入方式意味著它無(wú)法直接覆蓋數(shù)據(jù),全新的SSD因?yàn)榇饲盁o(wú)數(shù)據(jù)可以隨意寫(xiě)入,但使用一段時(shí)間后,SSD就需要先進(jìn)行空間回收擦除再進(jìn)行寫(xiě)入,會(huì)導(dǎo)致速度變慢。
    發(fā)表于 01-14 11:41 ?1240次閱讀

    如何衡量SSD的壽命水平?SSD硬盤(pán)多久才能寫(xiě)死?

    隨著SSD閃存才MLC轉(zhuǎn)向TLC、QLC,不僅寫(xiě)入性能越來(lái)低,壽命、可靠性也愈發(fā)引人關(guān)注,總有網(wǎng)友擔(dān)心SSD會(huì)被寫(xiě)死,所以寫(xiě)入壽命很重要。 如何衡量
    的頭像 發(fā)表于 11-27 15:54 ?6266次閱讀

    SSD越慢的原因分析

    每當(dāng)選購(gòu)電腦時(shí),你會(huì)發(fā)現(xiàn),配置存儲(chǔ)介紹總是不一樣,要么純固態(tài)(SSD),要么純機(jī)械,要么固態(tài)+機(jī)械的組合硬盤(pán)。
    發(fā)表于 01-21 10:11 ?2228次閱讀
    <b class='flag-5'>SSD</b><b class='flag-5'>越</b>用<b class='flag-5'>越慢</b>的原因分析

    憶聯(lián)SSD智慧算法關(guān)注用戶痛點(diǎn),為消費(fèi)級(jí)SSD帶來(lái)極致性能與功耗體驗(yàn)

    隨著智能設(shè)備的演進(jìn),PC的形態(tài)越來(lái)豐富,超極本、游戲本、PC平板二合一等不斷涌現(xiàn),PC端對(duì)SSD性能、功耗的要求也日益增高,用戶面臨SSD越慢
    的頭像 發(fā)表于 01-04 10:52 ?1450次閱讀