大家好,我是噩夢飄雷!今天我們繼續來討論一些關於SSD的小秘密。
選擇SSD就像挑選跑鞋一樣,既要考慮速度,也要看耐力。想象一下,你正在玩一款超火的遊戲,或者處理一堆繁重的工作文件,這時候,一款響應迅速且持久穩定的SSD就顯得尤為重要了。
但市面上的SSD種類繁多,特別是分為帶有獨立DRAM緩存的“有緩SSD”和沒有DRAM緩存的“無緩SSD”,它們之間的區別可不小,也讓不少朋友面臨了選擇恐懼症。
不過不用擔心,今天我們就來一探究竟,看看這兩種SSD到底有啥不同,以及如何根據自己的需求,挑選出最適合自己的那一款。
本次用來做對比測試的,是兩款同一家廠商出品的滿速PCIe4.0 NVMe SSD,分別是宏碁掠奪者GM7與GM7000。
宏碁掠奪者GM7是典型的DRAM-Less無緩SSD,採用了致態TiPlus7100同款的國產聯芸MAP1602主控+長江存儲TLC顆粒硬件方案,支持HMB技術,2TB版最高順序讀取速度7200MB/s,寫入速度6300MB/s:
宏碁掠奪者GM7000則是旗艦級有緩SSD,採用了英韌IG5236+美光B47R TLC顆粒的硬件方案,2TB版最高順序讀取速度7400MB/s,寫入速度6700MB/s:
一、獨立DRAM緩存是什麼?
一般來講,在消費級領域,我們提及SSD中的緩存時,實際是分為DRAM緩存和SLC緩存(SLC Cache)兩個概念。
部分不學無術的KOL會把二者混為一談,言必稱大文件傳輸要用有緩SSD之類的謬論。咱們真金白銀自己掏錢包買SSD時可別被忽悠了,還是得搞清楚二者區別,才能讓自己的錢花得更值。
對於搭載獨立DRAM緩存顆粒有緩SSD來說,其普遍特點是隨機讀寫和混合讀寫性能更好,所以各家存儲大廠的高端旗艦產品多為此類,典型代表有Solidigm P44 Pro、西數SN850X、三星990Pro以及今天用到的宏碁掠奪者GM7000等。
就像下圖中這條2TB的宏碁掠奪者GM7000,在PCB板的正面,分別放置了NAND閃存顆粒、主控芯片和一枚1GB的DRAM緩存顆粒:
同時在GM7000的背面,還有NAND閃存顆粒和DRAM緩存顆粒,也就是我們常說的雙面顆粒佈局:
其實DRAM緩存並不神秘,其本質就是咱們在電腦內存條上可以看到的內存顆粒而已;與之相反的是,SLC緩存只是一個算法上的概念,並非是具備實體的硬件。
“那麼,古爾丹,代價是什麼呢?”
有緩SSD雖然在性能方面更好些,但也不是沒有代價的。額外的DRAM緩存顆粒會帶來更大的功耗,對主控的性能也提出了更高的要求,由此也帶來了更大發熱和更高的溫度,在價格方面整體也要相比DRAM-Less無緩盤更貴些。
無緩SSD是啥樣的?
顧名思義,沒有獨立DRAM緩存的SSD則稱之為DRAM-Less無緩SSD,例如致態TiPlus7100、宏碁掠奪者GM7等等都屬於這個範疇。
目前國產SSD大量採用了搭載聯芸MAP1602系列主控的最新無緩方案,會採用HMB技術,通過佔用一小部分電腦內存(一般在40MB以內)來替代SSD上的獨立DRAM緩存顆粒,以達成存儲簡化版的FTL映射表的目的。
事實上,由於消費級SSD普遍有著SLC Cache技術的加持,所以在SLC Cache容量範圍內可以提供更加精簡的FTL映射結構、更低的讀寫延遲和更高的混合性能,這也使得HMB技術得以借用較小的主機內存容量,來達成接近有緩SSD的FTL映射表查找效率。
DRAM-Less無緩SSD在隨機讀寫性能方面稍弱於有緩SSD,不過在目前日趨成熟的HMB技術和SLC Cache機制的加持下,二者在中輕度負載場景中的使用體驗已經非常接近了。
同時,無緩SSD還有價格便宜、發熱更低的優點,尤其特別適合適合筆記本、迷你主機等散熱空間狹小的設備,這也是目前更推薦大家入手的SSD種類。
這裡我把宏碁掠奪者GM7這款DRAM-Less無緩SSD的散熱貼紙也給揭了下來,可以看到在GM7的PCB板上沒有DRAM顆粒,只有一枚主控芯片和四枚NAND閃存顆粒:
對比宏碁掠奪者GM7000和GM7的背面,可以看到身為無緩SSD的GM7只有一枚標籤貼紙,並沒有其他零件了:
綜合來看,旗艦有緩SSD雖然性能更強,但是個人覺得其實更適合發燒友和生產力用戶選擇,像家用、辦公以及玩遊戲等需求的話,其實發揮不出有緩SSD的性能優勢來。
二、DRAM緩存的作用是什麼?
上一節只是簡要介紹了SSD的有緩/無緩方案,下面我們就從技術的角度分析,來看看DRAM緩存的作用到底是什麼。
該部分內容有點枯燥,看不進去的朋友可以直接跳轉至結尾看選購總結哈。
1.DRAM緩存可以存儲FTL閃存映射表
閃存顆粒的物理特性決定了它不能覆蓋寫入,一般來說,其擦除以Block(塊)為單位,而寫入以Page(頁)為單位。
Page中含有非常多的存儲單元,是閃存顆粒寫入數據的最小單位:
同時Block是Page的上級單位,一個Block中有很多個Page:
一般來講,足量的消費級有緩SSD中,DRAM緩存的主要作用是存儲FTL閃存映射表,其與閃存顆粒的容量比例為1:1000,FTL映射表在SSD中就像一本書的目錄一樣,儲存著數據從邏輯地址到物理地址的映射關係。
當主機發來讀命令時,SSD能根據需要讀取的邏輯數據塊查找FTL映射表,獲取這些邏輯數據在閃存空間所在的位置,後端便能從閃存上把對應數據讀到SSD內部緩存空間,然後前端負責把這些數據返回給主機。
由於DRAM緩存的讀寫性能和低延遲表現要遠遠優於閃存顆粒,所以有緩SSD會充分利用這個特性,在SSD通電時將保存在SSD預留空間中的FTL映射表寫入DRAM顆粒中。
咱們想要讀寫閃存顆粒中的數據時,可以通過DRAM緩存中保存的FTL快速找到相應位置,從而提高一塊固態硬盤的隨機讀寫速度、降低查找數據保存位置時的延遲。清注意,這個機制對於隨機讀寫的加成較大,對順序讀寫的性能影響很小很小。
2.DRAM緩存還可以在髒盤狀態下提高讀寫性能
在使用閃存顆粒作為存儲介質的SSD中,如果我們要對一個已有數據的Page進行寫入,那麼必須先要把這個Page所在的Block中的數據讀出,暫時保存到一個空白的Block中,待第一個Block清空後再把所有數據寫進去。
從示意圖可以看出來,在我們眼裡一個簡單的對SSD的寫入數據操作,一旦遇到髒盤情況下,就會分解成先讀再擦後寫(READ-ERASE-WRITE)三個步驟,並在過程中會造成寫入放大問題。
顯而易見的,這會增加閃存顆粒的寫入量,消耗寫入壽命,同時在寫入過程中還會提高寫入延遲、影響寫入速度。
如果在這個寫入過程中,SSD上還有我們在操作系統中已經刪除、但是隻做了標記但未實際進行擦除的數據的話,還需要經過一個更加複雜的垃圾回收+擦寫操作,進一步影響SSD的寫入量和性能。
以下圖為例,在Block x和Block y上有很多垃圾數據,其中Block x上的A、B、C為有效數據,Block y上的D、E、F、G為有效數據。垃圾回收就是把一個或者幾個Block上的有效數據搬出來集中寫到某個空閒Block上(比如Blockz)。當這些Block上的有效數據都搬走後,FTL便能擦除這些Block,然後又能把這些Block拿出來供SSD寫入新的數據了。
而有緩SSD中的DRAM緩存由於速度、延遲等方面的性能明顯要好於閃存顆粒,所以在向一個Block寫入數據的過程中,如果Block中的Page中已有數據,那麼可以使用DRAM作為中轉站,先將Page中的數據轉移到DRAM中,然後將Block整個擦成空白塊後填入需要寫入的新數據,最後將DRAM中轉站裡保存的原Page數據挪到其他Block裡。
發現了嗎?在這個過程中由於DRAM的參與,還減少了一部分對閃存顆粒的寫入量,同時還加快了整個R-E-W的過程,減少了寫入延遲。
接下來讓我們把問題進一步複雜化,當SLC Cache容量耗盡時,有一個需要將原本SLC Cache空間內的數據重寫回TLC模式的過程,我們稱之為SLC Cache釋放,在這其中要面臨大量擦寫操作。而在固件的加持下,部分SSD的DRAM緩存也能在這個過程中起到緩解寫入放大的作用。
這也即是說,獨立DRAM緩存在SSD中其實起著萬金油的作用,這也是各大存儲廠商的消費級旗艦SSD以及更加昂貴的企業級SSD一般都會採用有緩方案的原因。
三、有緩SSD、無緩SSD,用起來有啥區別?
現在技術原理我們已經瞭解了,那麼有緩SSD和無緩SSD在我們實際使用過程中,到底有啥不一樣的體驗呢?
1.性能
有一個冷酷的事實是,有緩SSD與無緩SSD在中輕度使用場景中很難有可察覺的區別。
像CrystalDiskMark這類測試軟件,在進行測試前會先向SSD中寫入一個測試文件,然後在這個測試文件的範圍內進行一系列讀寫操作,這也意味著我們看到測速結果,都是基於剛剛寫入SLC Cache中的狀態。
前面我們已經講過,由於SLC Cache對於FTL的精簡效應等優勢,在此範圍內無論順序還是隨機讀寫都會有所加成。
這也是有緩SSD與無緩SSD在CrystalDiskMark測試項目中,並不會拉開太大差距的主要原因。
以宏碁掠奪者GM7000和GM7為例,其二者在CrystalDiskMark的測試結果就堪稱相差無幾,順序讀取速度均能達到Intel平臺的7150MB/s上限附近,順序寫入速度也能達到6500MB/s左右,甚至GM7憑藉優秀的固件和算法加成,在Q1T1 4K隨機寫入速度上還反超了GM7000一籌,達到了94MB/s。
大家平時使用SSD時,最常用到的高負載場景應該就是大文件拷貝的場景吧,而在這種場景下,有緩SSD與無緩SSD其實也拉不開什麼差距——大家都是消費級SSD,都針對低隊列讀寫有專門優化,在速度方面其實相差無幾。
而有些新手朋友在意的能持續寫入多大容量不掉速的能力,其實更多的是與不同SSD之間的SLC Cache方案有關係,這基本上依賴於廠家對於SSD固件策略的調校。
在SSD容量足夠大的前提下,成熟的SLC Cache策略給用戶帶來的不止是爆發式寫入性能的提升,而且更加精簡的FTL映射結構、更低的延遲和更高的混合讀寫性能,以及在SSD高佔用狀態下降低頻繁R-E-W擦寫造成的性能與壽命損耗問題都是重要關鍵。
以宏碁掠奪者GM7000 2TB為例,下圖為RAW格式下全盤順序讀寫測試(128KB,Q32T1)的曲線圖。可以看到,GM7000在全盤範圍內的順序讀取曲線都相當穩定,基本全程都能保持在6800MB/s左右。而寫入曲線方面,GM7000的緩內寫入速度能穩定在6400MB/s,並且SLC Cache為650GB左右,佔據了全盤可用容量的1/3,明顯是和SN850X類似的典型全盤模擬SLC方案。
在SLC Cache寫滿之後,隨後而來的是大約150GB的TLC直寫過程,速度能達到2000MB/s左右。那麼在SLC Cache已經耗盡的情況下,是如何實現這一小段TLC直寫的呢?從數據寫入量上來推測,個人盲猜GM7000應該是將總容量7%左右的一級OP也拿出來提供寫入了,與此同時主控還在進行SLC Cache釋放的操作,最終實現了比一級OP略大的TLC直寫階段。
在全盤寫入的最後第三段,GM7000的主控要同時進行SLC Cache釋放和新數據寫入的操作,負載壓力達到了最大化,所以寫入速度進一步下降。在此過程中,前半程由於主控釋放SLC Cache的Write Back操作非常積極,使得部分寫入數據落入了空白塊中,寫入速度有短暫回升到TLC直寫速度的波動,最後隨著空白塊耗盡,終於進入了穩定的Write Back+R-E-W低速區間,速度在750MB/s左右。
接下來我們看看宏碁掠奪者GM7的表現,同為優秀的國產SSD,這款SSD採用了另一套不同的SLC Cache方案。下圖為RAW格式下全盤順序讀寫測試(512KB,Q32T1)的曲線圖。
宏碁掠奪者GM7與致態TiPlus7100類似,SLC緩存容量給的是國產SSD中比較少的,空盤狀態下也只提供了10%左右的空閒容量進行SLC Cache模擬,而沒有使用的半盤模擬方案。
SLC Cache容量並非越大越好,用於模擬SLC的容量越大,可提供的爆發式寫入時間越長,但是也會使得垃圾回收階段壓力更大,進而導致全盤平均寫入速度越慢。
宏碁掠奪者GM7的SLC Cache方案更像是綜合了性能與體驗之後的折中選擇,整體主控調校方向更傾向於優化平均寫入速度。
說起來,200G的SLC Cache對於普通家用用戶完全是足夠用的了,再強行加大SLC Cache也不會帶來什麼體驗上的提升,反而不如充分利用長江存儲顆粒強悍的直寫性能,給主控騰出手來,減少一段速度最慢的垃圾回收階段浪費的時間。
可以看到第二段曲線顯示的是TLC顆粒的直接寫入性能,此時沒有了SLC Cache的干擾,我們可以發現宏碁掠奪者GM7的直寫性能極強,平均速度能達到3500MB/s左右,這個速度表現和致態TiPlus7100 2TB非常類似,在我測試過的國產SSD中妥妥的屬於T0梯隊——使用232L X3-9070顆粒的其他國產SSD,在TLC直寫階段的速度一般只有2500MB/s左右。
而同樣在主控壓力最大的第三段寫入曲線,宏碁掠奪者GM7依然能維持在900MB/s左右,這在國產SSD中也是第一梯隊的速度了。
那二者到底啥時候能用出區別?
眾所周知,我們在日常使用電腦時,操作系統會在後臺不定時讀取許多零碎的小文件,而這也就意味著SSD的隨機讀取性能是影響我們日常使用流暢性的關鍵。雖然SSD的真實運行過程是各種粒度、各種讀寫比例混雜的複雜流程,但是從4K小粒度隨機讀寫的性能中,我們可以管中窺豹。
在實際場景中,寫入SLC Cache的數據並不是始終享受到加速福利的。一般來講,SSD主控會隨著時間推移,將這部分數據釋放到TLC區域內,只不過各家主控和固件不同,釋放SLC Cache的積極性也有所區別而已。
所以說,我們日常使用電腦時,打開軟件或者加載遊戲等操作,所訪問的基本都是已經被挪出SLC Cache外、TLC區域內的數據,示意圖如下:
在這種情況下,有著DRAM緩存的SSD就能在真實的4K隨機讀取性能方面取得優勢。鑑於此,我們對宏碁掠奪者GM7 2T和GM7000 2T的緩外4K隨機直讀性能進行了測試。
其中GM7 2T的平均速度為32.27MB/s左右,與致態TiPlus7100 2T基本一致,而GM7000 2TB的SLC緩外真實4K隨機讀取速度在51MB/s左右,明顯高得多。
這也使得帶有獨立DRAM緩存的SSD在工業軟件、數據庫應用、大量修圖剪輯等重度生產力場景中才能更好地發揮出優勢,普通玩家其實不太需要在意這個有緩/無緩的問題。
而在遊戲應用環境中,傳統理論認為,在遊戲加載過程中會加載大量碎片化小文件,所以SSD的隨機讀取能力會極大地影響載入速度。
不過遊戲廠商也注意到了這個問題,已經對此進行了優化。
當前大多數遊戲在載入時會有CPU參與對遊戲文件進行解壓,然後以類似順序讀取的方式載入遊戲數據,這也使得旗艦機有緩SSD在遊戲載入方面雖然有一些優勢,但其實並不明顯,可能得掐著秒錶才能察覺出來這個樣子。
還是以宏碁掠奪者GM7和GM7000為例,二者在載入原神時,GM7在載入原神時已經很快了,我這兒實測速度能壓到10s以內,達到9.6s。而GM7000作為有緩SSD,也就比GM7快了1s而已,這點差距其實說不上大。
2.溫度
與性能相反,有緩SSD和無緩SSD在功耗和發熱方面的表現會有更加明顯的差別。
最明顯的案例是,宏碁掠奪者GM7和GM7000作為同門師兄弟,在出廠散熱方面的待遇截然不同。
宏碁掠奪者GM7的發熱較小,溫度控制得極佳,所以在出廠時只需要在正面貼一張石墨烯散熱貼紙就能很好的進行均熱和散熱工作了,不僅更加輕薄,用起來也更加放心:
宏碁掠奪者GM7000作為有緩SSD,廠商考慮到玩家可能會擔心散熱貼紙壓不住發熱的情況,乾脆將散熱貼片和本體分開包裝,方便咱們自行使用金屬散熱裝甲之類進行壓制。
不僅如此,GM7000就連附贈的石墨烯散熱貼片都要比GM7厚得多,目測都快有1mm厚了。
將兩款SSD放在一起對比,厚度方面的區別更加明顯:
為啥廠商會有這種區別待遇呢?
我們來看看同樣使用原廠散熱貼片時,宏碁掠奪者GM7和GM7000在裸盤(不加金屬散熱片)下的溫度表現就有數了。
這裡我們在室溫30℃的情況下,使用開放式機架、無主動氣流散熱的平臺,對兩款SSD進行15分鐘的Q32T4高負載順序讀取進行測試,宏碁掠奪者GM7全程維持了7000MB/s左右的讀取速度,並未發生過熱掉速的情況,且兩個溫度傳感器很涼快,顆粒溫度最高只有45℃,主控溫度最高也只有50℃:
而宏碁掠奪者GM7000雖然全程也能維持7000MB/s未掉速,但是從傳感器顯示的溫度來看,主控溫度最高達到了75℃,顆粒溫度也達到了55℃:
用熱成像儀拍攝的照片更能直觀的看出差別,右側的GM7000即便在厚厚的石墨烯散熱片壓制下,表面溫度也有55℃。
而實際上,GM7000這個溫度表現已經是有緩SSD中比較低的了,從熱成像照片來看散熱貼片的均熱效果也確實好。
其他品牌的旗艦有緩SSD,在滿負載時主控溫度飆到90多甚至100多℃都不是難事兒,所以大家真要是非買有緩SSD不可的話,那還是建議一定要加裝金屬散熱片,最好還有風道氣流輔助散熱。
總結
理論知識和實際測試結果寫了這麼多,最後給大家來個簡要版的總結吧。
- DRAM-Less無緩SSD的優勢在於性能夠用、發熱較小、價格便宜,缺點在於高負載工作時性能表現會比有緩SSD弱一些。
- 有緩SSD的優勢在性能強勁,高負載工況時穩定性強,缺點在於發熱較大、價格較貴。
如果是要在辦公、遊戲或者家用場景中給臺式電腦選購SSD,或者想為筆記本、迷你主機、遊戲機等散熱空間較小的設備擴容,那麼推薦大家直接選宏碁掠奪者GM7這類DRAM-Less無緩SSD即可,性價比高溫度低,豈不是美滋滋。
對預算不敏感、追求極限性能的硬件發燒友,或者有重度生產力需求的情況下,則可以選購宏碁掠奪者GM7000這類有緩SSD,另外需要特別注意改善散熱環境,避免過熱降速的情況出現。