SSD    

"隨著閃存價格的滑落,SSD已經不再是遙不可及的奢侈品,SSD固態硬碟的好處已深入民心,本文是如何選擇2011至2012市面所售各種SSD固態硬碟的終極指南,發燒玩家必看!"


PS:文章很長且較深沉,最底下可以直接看評測


在過去30 多年,硬碟驅動器一直是電腦中佔統治地位的存儲媒體,相關的主要開發主要由IBM(硬碟部門後來被日立收購)、希捷、西部數據等大型公司參與及推動,期間還有Conner(康納)、Quantum(昆騰)、Maxtor(邁拓)、Micropolis(活躍於80~90 年代)等但是大都退出歷史舞台,目前在亞洲方面還有三星、富士通等公司依然保留著對硬碟領域的堅守。

機械硬碟行業的參與者一直以來也就寥寥數家,究其原因是機械硬碟製造業務需要佔用極高的資源,硬碟驅動器所涉及的元件和裝配需要極為先進複雜的製造設備,要求具備電子行業和機械行業最精密的工程技術和生產線。

硬盤內部構造
拆掉電路板和外殼後顯露的機械硬碟內部構造

例如機械硬碟裡表面旋轉速度達到每小時100 公里的盤片離不開造價高昂的無塵室進行裝配和維修,硬碟驅動器製造商要生存下去必須要有強大的資本和管理水平,中小企業要參與其中並獲得持續發展的機會已經不存在了,能玩的就是買個槃體回來然後再套一個殼當成是移動硬碟賣。

不過到了2006 年,存儲市場出現了新的景象,被稱作NAND 閃存的新式存儲媒體開始有大展拳腳的跡象,除了U 盤外,經過像SimpleTech 這類小型公司十多年耕耘的NAND 閃存SSD 開始受到業界巨頭的重視。

在2008 年,所有廠商生產的NAND 閃存產品首次超越了DRAM 產品,而到了2009 年,已經生產的NAND 閃存產品位元數全面超過歷史上所生產的所有DRAM 產品位元數總和,強大的產能使得NAND 閃存製造成本降低到一個相對合理的水平,市場上大量的U 盤蜂擁而至,再也沒有多少人念叨是否需要給PC 安裝軟驅,甚至光驅也因為U 盤、互聯網的出現而受到很大的擠壓。

鎂光Crucial M4 SSD 拆解
鎂光Crucial M4 SSD 拆解圖

生產SSD 所需要的資源對許多中小企業來說並不算很大的投資,只要能從半導體製造商那裡獲得NAND 閃存、BOM(物料清單,例如閃存控制器、固件、PCB 及周邊電子元件等) ,一家小作坊也能推出自己品牌的SSD。

由於SSD 是一個還沒有出現壟斷而且被視作可以帶來巨大成長空間的市場,一時間大量的廠商參與其中,給近年來增長乏力的PC 市場中帶來了久違的熱鬧。

固態硬碟完全沒有運動部件,機械硬碟所特有的尋道時間、馬達轉速都和它無關,但是另一方面由於閃存本身與生俱來的一些特性,使得閃存SSD 並未能像DRAM SSD 一樣成為一個完全的隨機存儲驅動器,在極端個別的情況下性能甚至會比機械硬碟更糟糕。

在數據安全性上,SSD 和硬碟相比也是既有利的一面也有不足,例如由於沒有運動部件,抗震能力要高出不少,尤其是移動存儲領域這是非常大的優勢;在防止數據洩密方面,SSD 可以透過快速的內部安全擦除指令徹底刪除掉數據;另一方面NAND 閃存存在著其他問題會導致可靠性降低,這些問題我們會在下面介紹。

NAND FLASH SSD 的前身——RAM SSD

SSD 現在主要是指基於NAND FLASH(與非閃存)的半導體存儲驅動器,由於被認為可以替代傳統機械硬碟,我們又將其翻譯為固態硬碟,儘管這個東西里不存在任何盤片。

當下其實已經有一些諸如相變內存(PRAM)、磁變阻內存(MRAM)、電阻內存(RRAM)、 有機內存(ORAM)、納米通道內存(NRAM)以及NOR 閃存等非易失性存儲新興技術,但是由於成本、技術成熟度、容量等因素,目前的SSD 都幾乎毫不例外地採用NAND 閃存。

NAND 閃存具備一些非常誘人的特質使它非常適合於SSD,但是另一方面它也存在若干缺點使人們無法可以在毫無顧慮的情況下將其作為機械硬碟的取代者。

在電子計算機還是大型機當道的年代,人們把可以無需依照順序來存取的存儲設備稱作DASD(直接訪問存取設備),例如硬碟就屬於DASD,磁帶機則不屬於DASD。

在NAND FLASH 問世之前,已經有一些能模擬機械硬碟的半導體式存儲驅動器可以充當DASD。

例如StorageTek 公司(也就是STK 或者Storage Technology Corporation)在1979 年就推出了容量為90MB 的RAM SSD(隨機存儲固態驅動器),每MB 的價格高達8800 美元,這個RAM SSD 的主要作用是虛擬內存。同年,德克薩斯內存系統(Texas Memory System)公司也向石油公司推廣容量為16KiB的RAM SSD。雖然SSD 問世了,但是這時候的SSD 更多的是作為系統內存的擴展。

採用高密度DRAM 芯片的SSD 作為DASD,可以避免旋轉盤片媒體和移動讀寫頭造成的可變尋道時間、盤片旋轉時間,實現非常快的I/O 操作,一般情況下SSD 的I/ O 操作能達到旋轉式硬碟30 到40 倍的速度,而且除了掉電意外,整個RAM SSD 存儲系統都能實現完備的容錯能力。

NAND FLASH 技術

1984 年,在日本東芝公司工作的舛岡富士雄博士在IEDM 大會上正式公佈了他稱作為FLASH EEPROM 的新式存儲器,而FLASH 這個名稱的來源是舛岡認為這種存儲器的擦寫過程類似於相機的閃光燈放閃。FLASH 最初的用途是用來替代EPROM 的,但是現在它已經成為最常見的存儲媒體。

CMOS(互補式金屬氧化物半導體,Complementary Metal-Oxide-Semiconductor)內存一般分為兩類,一類稱作RAM,而另一類稱作ROM。

RAM 的特點之一是易失性,一旦供電斷掉,RAM 內保存的信息就會丟失。

與之相反的ROM 則是非易失性,即使供電斷掉後,ROM 內保存的信息依然能維持很長的一段時間,例如EPROM。EEPROM 和EPROM 的不同點在於前者可以使用電子方式進行擦除,而後者需要紫外線。FLASH 閃存屬於一種EEPROM。

縮寫全稱具體區別
ROM Read-Only Memory 內存存儲的信息在生產時已經燒死事後無法修改。
EPROM Erasable programmable ROM 內存存儲的信息可以透過紫外光擦除並透過電子方式進行編程。
EEPROM Electrically erasable programmable ROM 內存可以透過電子方式擦除和編程,EE 表示擦除的尺寸為"塊"而非"字節"。
2PROM Electrically erasable programmable ROM 內存可以透過電子方式擦除和編程,E 2表示擦除的尺寸為"字節"而非"塊"。


FLASH 主要有兩種類型,即NOR 型和NAND 型(由東芝公司於1988 年首先推出產品)雖然NOR 可以實現同時讀寫故而具備較快的隨機性能,但是由於後者俱備更快的持續性能、更多的可擦除次數、更高的存儲密度,因此NAND 型成為低成本存儲中最常使用的閃存。

其實早在1985 年英特爾的實驗室裡已經有一個能運作的64-KiB閃存,但是讓人驚訝的是當時英特爾對這個閃存的商用化並不感興趣,如果不是Gordon Moore(戈登.摩爾)和一群非常果敢的先行者(例如Pashley 博士以及他的團隊),英特爾根本不會進入閃存市場。

到了1986 年,英特爾專門成立了一個獨立的閃存業務部門,兩年後(1988年4 月),英特爾推出了一款256-KiB閃存(基於1.5 微米工藝,面積是36 平方毫米)。與此同時,一家位於巴黎的公司——Eiffel Tower 公司推出了採用閃存作為媒體的"膠卷卡"式數碼相機,而後來更名為SanDisk 的SunDisk 公司也在這一年成立。

在1987 年,舛岡富士雄博士在日本東北大學期間發明了NAND 構造的EEPROM 存儲單元,不過直到上世紀90 年代中期之前,NAND FLASH 都由於若干個問題未必廣泛採用,在此期間市場的主流是英特爾發明的NOR 型閃存,像早期的CF 卡就是採用NOR 閃存的。

但是隨著MP3 播放器開始嶄露頭角以及數碼相機迅速獲得消費者青睞後,NAND 閃存開始迎來輝煌,到了2005 年NAND 閃存終於超越了NOR 閃存成為市場的領導者,也是在這一年英特爾和鎂光成立IMFT 公司專門合作生產NAND 閃存(在這年之前這兩家公司都沒有NAND 產品)、微軟首次提出了混合硬碟的構想。

兩年後即2008 年,英特爾將其NOR 閃存業務部門剝離掉,後者成了一家獨立的公司——Numonyx,這標誌著從這一年開始英特爾全力開拓NAND 閃存,不過比較搞笑的是,鎂光在2010 年億12.7 億美元收購了Numonyx,再次體現了鎂光和英特爾一直以來的耐人尋味的基情。

MOSFET 金屬場效應管示意圖

上圖是MOSFET(金屬氧化物半導體場效應)晶體管的示意圖,其中包括了源極、柵極、漏極三個端以及第四端的襯底。

MOS管柵極閥值電壓示意圖
當我們對MOS管柵極施加一定電壓值後,源極漏極之間會形成可讓電流通過的溝道
這個形成導電溝道所需的柵極電壓值被稱作閥值電壓(Vt)

MOSFET 場效應晶體管源極漏極溝道開通
當晶體管的電壓達到閥值電壓(Vt)後,源極的電子就可以透過溝道跑向漏極

柵極在這裡的作用就相當於水管上的開關,用來製造和消除源極與漏極之間的溝道,透過控制柵極電壓,實現允許或者阻礙源極至漏極之間電子的通過。

那麼源極和漏極形成電流溝道又和閃存能斷電保存信息有什麼關係呢?這就涉及到另一種形態的MOS 管:浮柵MOS(FGMOS)晶體管。

浮柵場效應晶體管FGMOS

浮柵MOS 晶體管其實就是柵氧化層和基底之間增加了一個浮柵和一層浮柵氧化層,數據保存的位置就是這個新增的浮柵內,包括NAND 閃存在內的非易失性半導體存儲器都有這個浮柵的存在。

執行數據寫入操作的過程其實就是將電子充進被絕緣體包裹著的浮柵內,而將數據擦除就是將電子從浮柵中抽空,這其中電子在隧穿氧化層跑來跑去的現象被稱作隧穿(對浮柵MOS 管來說,有多種的電子注入、抽離方式,例如NOR 閃存採用的是熱電子注入來注入電子,不過我們這裡主要討論的是NAND 閃存,所以以NAND FLASH 最常使用的隧穿方式),是一種量子學現象。

浮柵穿隧閥值電壓
圖中的電流坐標是指漏極的電流,而柵極電壓坐標是指柵極與源極之間的電壓

浮柵在這裡充當一個電子陷阱,當達到閥值電壓後源極至漏極之間跑過的電子就會被捕獲進浮柵內,不過當浮柵被充電(寫入)後,晶體管的柵極閥值電壓會比寫入之前更高,這意味著浮柵有信息寫入後,源極與漏極之間搭建溝道所需要的電壓更高了。

在這裡我們將充電前的閥值電壓稱作Vt1,充電(浮柵寫入)後的閥值電壓稱作Vt2。

存儲單元的讀取操作

對FGMOS 管的讀取操作其實就是要想辦法區分存儲單元中的浮柵是否已經寫入還是被擦除了,或者說區分其中存放的是0 還是1,這就涉及到兩種情形:已經被擦除和已經被寫入。

我們知道,當存儲單元(Memory Cell)被擦除或者說浮柵內不存在電子後,柵極閥值電壓是相對較低的,源極和漏極之間可以在較低的電壓(Vt1)下形成溝道讓電流通過。

例如Vt1 為3 伏特的話,我們就對晶體管的柵極施加3 伏電壓,漏極和柵極就能有電流通過。

閃存FGMOS 讀取操作(已寫入)
如果浮柵已經寫入,柵極施加Vt1(3 伏)後源極與漏極是無法形成溝道的

但是如果施加了3 伏特電壓後,漏極和源極依然沒有電流通過,就意味著浮柵中存放著電子,是被寫入了的。

如此一來,通過施加Vgt1 我們就能區分存儲單元是否已經被寫入或者被擦除,既然能區分,也就能完成讀取操作獲知這個存儲單元里的位元狀態到底是"1"還是" 0"了。

存儲單元的寫入操作

對FGMOS 執行寫入或者說編程動作的目的其實就是將電子移動到浮柵內,我們前面說過這個過程其實就是一個穿隧現象。

閃存寫入操作過程動畫展示
閃存存儲單元的寫入操作動畫展示(紅色圓點為負極電子)

在源極不連接電源,漏極為0 伏特的情況下,我們透過對柵極施加20 伏特電壓(這個電壓要比打通源極漏極之間溝道的閥值電壓高得多,也就是我們前面所說的Vt2),就能將第四端或者說襯底處的電子俘獲進浮柵內,而後這些電子將會被困在浮柵內從而讓信息得以保存。

由於二氧化矽構成的氧化層絕緣性能較佳,因此一旦電子進入到浮柵內,洩露出來的速度會非常慢,可以在不斷電的情況下保存接近10 年。

存儲單元的擦除操作

把浮柵內的電子拉出來的其實就是寫入動作的逆向操作:

在源極、漏極均不連接電源,柵極為0 伏特的情況下,我們透過對第四端(襯底)施加20 伏特電壓,就能將浮柵內的電子移動到第四端(襯底)。

和閃存相比,機械硬碟的數據重寫並不需要進行擦除這個步驟,只需要直接覆蓋即可,而閃存必須執行此動作後才能重寫。

如果按照具體的東西來比喻,閃存就好像打孔卡,寫入操作就是對卡片進行打孔,但是寫入新數據的話卻不能理所當然的那樣換一片新卡片來打,而是要先把原先打掉的孔位粘補好然後再繼續打孔。

雖然打孔卡經過粘補可以再使用,但是這樣的粘補操作是存在次數限制不可能永遠都可以粘補下去的。

閃存也一樣,隨著寫入、擦除的次數增多,用來困住電子防止跑進、跑出的隧穿氧化層中陷落的電子數量也會增加,為了拔掉這些電子所需要的擦除週期也就越久,慢慢地氧化層積累的電子越來越多,最終會導致擦除動作難以將浮柵恢復為沒有電子的狀態,這個存儲單元也就壽終正寢了。

氧化層電子陷落積聚導致閃存失效和我們超頻時提心吊膽的電子遷移是完全兩回事情,當然電子遷移本身也是會導致閃存失效的潛在原因之一,但是影響相對來說低不少。

閃存的寫入動作+擦除動作可以稱作一次放閃週期或者編程/擦除週期(P/E Cycle),不同類型、製程、工廠的閃存能實現的編程/擦除週期次數會存在差別,以SLC 和MLC 為例,前者的可編程/擦除週期可以達到100,000 次,而MLC 則只有3,000 到10,000 次。

此外,除了上面所說為了保存信息而執行的寫入操作外,NOR 型閃存還有另外一種寫入動作:Compaction,即回補或者軟編程。

在執行擦除操作的時候,從浮柵拔出過多的電子,使得浮柵內的電荷超出了正常情況下"零電荷"的狀態,這相當於浮柵內被充入了正電子。

為了讓浮柵恢復"零電荷"狀態,就需要執行"回補"動作。不過NAND 閃存作為一種EEPROM,本身就是被設計成擦除後閥值電壓是負值,因此NAND 閃存不需要像NOR 閃存那樣執行Compaction。

SLC 與MLC的區別

這裡突然提到的SLC 和MLC 是什麼一回事呢?其實SLC 就是我們上面所舉的閃存存儲單元那樣,依靠閥值(已擦除)電壓下源極-漏極是否有電流通過作為判斷存儲單元存放的信息到底是"1"還是"0",因此每個SLC 閃存晶體管可以存放一個二進制位元的信息。

其實單個晶體管存放一個二進制位元已經是不錯的了,要知道SRAM(靜態隨機存儲器,例如cache 就是屬於SRAM)需要6 個晶體管(或者說4 晶體管加兩個電阻)才能存放一個二進制位元。

但是閃存市場這邊的發展極快,如果能實現更高的存儲密度,意味著能拿下更多的市場(通常也意味著更多的營收、利潤),因此在1992 年的時候,英特爾就開始著手MLC NOR 閃存的開發並在1997 年正式推出產品。

MLC 的中文翻譯是多電平存儲單元或者多比特存儲單元,是採用不同的閥值電壓來控制浮柵內存放的電子電荷(電荷就是指電子所攜帶的電量),然後依據精確的電壓控制和電流感應技術實現源極、漏極溝道導通判斷,藉此獲知這個存儲單元內存放的兩個或者更多個存儲位元信息狀態,這時候的閃存存儲單元其實就是一個模擬器件而非數字器件。

MLC 閃存閥值電壓分佈示意圖
雙位元MLC存儲單元的位元信息與閥值電壓判定分佈
圖中虛線與實線之間的部分代表了讀取裕度
對於雙位元MLC來說裕度一般在0.8伏特左右
如果是四位元MLC,讀取裕度會縮小到0.15伏特

在雙位元MLC 中,設置了三個電荷閥值分界點,共計可以有4 個狀態,這就可以實現單個存儲單元(對閃存來說,一個晶體管就是相當於一個存儲單元)存放兩個二進制位元了。

通俗地說,浮柵相當於一個酒桶(或者你能想像的其它容器),電子電荷就相當於酒桶內的酒量,我們要知道還有沒有酒的話,只需要在酒桶底部或者你認為的最低處安裝一個水龍頭,然後擰一下開關看看有沒有酒出來就知道了,這就相當於SLC 的情況。

對於一個MLC 酒桶,能存放的酒量(電荷)沒有增加,但是我們會在酒桶中部多安裝一個水龍頭,要知道酒桶上部有沒有酒,那就先開上面的閥門,藉此就能知道酒桶不同部分的存酒狀況,當然這也意味著需要額外的動作和更多的機關,故此MLC 閃存的性能和可靠性也要低於SLC。

MLC 閃存不僅僅可以實現單晶體管雙位元,而且可以實現三位元乃至四位元,但是相對的放閃週期也會隨之下降,這是因為放閃後隧穿氧化層中的電荷增加會導致識別電荷量的閥值電壓分界逐漸偏離設計值,MLC 具有更多的閥值分界,因此出現識別分界偏離的時間要比SLC 更短。

此外,溫度變化、應力感應漏電流等也會導致界線偏移或者電荷量減少,這些問題導致存儲單元失效的情況在MLC 上都要比SLC 更多、更早出現。

因此即使在上個世紀90 年代末雙位元MLC(2LC)閃存商業化發布的同時實驗室中已經有三位元MLC,由於人們對其耐久度的擔心,直到現在也很少有三位元MLC( 8LC)閃存產品大量上市。

MLC 需要比SLC 更複雜的控制電路技術以獲得精確的電荷放置、電荷感知、電荷保持及糾錯,而且放閃週期(雙位元MLC)只有SLC 的1/10,但是由於存儲容量的倍增,雙位元的MLC 單位價格要比SLC 便宜許多,配合錯誤糾正、閥值/邊界餘度控制技術(英特爾稱之為HET 或者高耐久度技術)等可以提升MLC SSD 的耐久度,因此現在企業級的SSD 也都已經開始使用MLC,這類MLC NAND 閃存被稱作eMLC NAND 閃存。

NAND 閃存芯片的構成

正如我們前面所說的那樣,NAND 閃存是基於存儲塊(block)為單位進行擦除動作的,不過除了存儲塊這個單位外,NAND 閃存還有存儲頁(page)這個單位,閃存的每次讀寫操作都是對整個存儲頁進行的。

鎂光25nm NAND FLASH 64Gb 顆粒LUN 構造示意圖
鎂光MT29F64G08CFACBWP-12 的LUN、PLANE、BLOCK、PAGE 層次關係

以英特爾和鎂光共同組建的IMFT公司出品的25nm NAND 64Gb(8 GiB)閃存(鎂光出品的芯片編號為MT29F64G08CFACBWP-12)為例:

1、每枚閃存芯片中包含有兩個物理管芯(die,也被稱作是LUN,即邏輯單元)。

25nm IMFT NAND FLASH 64Gb(8GB)閃存管芯167mm^2
25nm IMFT NAND FLASH 64Gb(8GB)閃存管芯167mm^2

NAND 閃存平面佈局圖

2、每個管芯內有兩個存儲平面(plane,也可以稱作存儲矩陣即Memory Array),可以實現Two-Plane 操作,即同時對奇、偶存儲平面的存儲頁(相當於兩個)執行讀取操作、或者兩個存儲塊執行擦除動作或者兩個存儲頁執行寫入動作,下面三張圖所示的分別是寫入、讀取、擦除三類操作的單、雙存儲平面對比:

NAND FLASH Two-Planes 模式寫入示意圖

NAND FLASH Two-Planes 模式讀取示意圖

NAND FLASH Two-Planes 模式擦除示意圖

3、每個物理存儲平面有2048 個存儲塊(Block)。

4、每個存儲塊內有256 個存儲頁(page),每個存儲頁內有4320 個字節(4KiB+224bytes),這裡額外的224 字節被稱作備用空間,用於執行ECC、系統指針等作用。

因此該芯片的物理容量為:

2dies*2planes*2048blocks*256pages*4320Byte=9,059,696,640Byte=8.4GiB

不同製造工藝、不同容量的NAND 閃存芯片的存儲頁、存儲塊大小可能會有不同,通常更精密製程的存儲頁會更大,更高密度的芯片存儲頁會更大。例如同樣是IMFT 25nm 的閃存芯片,256Gb 或者更大容量的存儲頁就是8KiB 而非128Gb(以及64Gb、32Gb)的4KiB。

閃存邏輯轉換層(FTL)

為了使SSD 讓操作系統看起來一個標準的硬碟設備,就需要將ATA 指令(以ATA-8 為例,有超過50 條指令,其中還有一些SSD 根本不會用到的指令,例如PIO 模式的讀寫指令)轉換為閃存芯片能明白的指令,這就需要在SSD 中引入被稱作FTL(閃存轉換層)的界面,這個界面目前由閃存主控芯片實現,不過以後可能會被直接跳過,例如NVM Express 標準接口的SSD。

現在的操作系統其實大都屬於"DOS",即磁盤操作系統,操作系統本身被設計為存放在"旋轉"槃體的存儲器上,電腦經過BIOS 引導、初始化後,才會啟動操作系統。

操作系統每次存儲的最小尺寸單位是一個"塊"(在MS-DOS、Windows 中,這個"塊"的名稱是"扇區"(sector)),存儲設備因此也被稱作存儲塊設備( block device)。扇區的大小一般為512 個字節,但是這個尺寸的管理相當不便,特別對大文件來說更是如此。因此在實際中扇區會被打包成一個被稱作"簇"的分配單位,對FAT 文件系統來說,簇的大小取決於文件結構及驅動器的容量,而對NTFS 文件系統來說簇的大小一般是4KiB(相當於8 個扇區)。

而NAND 閃存這邊是以存儲塊(Block)、存儲頁(page)、存儲列(columns,8 個位元)來組織的,這取決於製造工藝,例如上面所說的25nm IMFT 64Gb 閃存芯片裡,存儲頁大小是4KiB,每個存儲塊有256 個頁面或者說1MB。

閃存需要透過FTL 將自己模擬成一個基於扇區的設備,使得操作系統的邏輯地址(LBA)重新映射成閃存的物理地址(PBA)。經過FTL 後,SSD 裡各個前後物理頁面對應的邏輯地址不一定是連續的。當然,像JFFS、YAFFS 等文件系統是可以直接跳過FTL 直達下一層的MTD。

對操作系統來說,FTL 的作用就是從文件系統在指定的位置(扇區)取得、寫入數據;

對閃存來說FTL 的首要功能是把數據存放在閃存中空閒或者已被擦除的位置並標記出真實的數據位置,在數據更新了的時候將包含舊數據的存儲塊標記為無效,這步被稱作"Garbage Collection(廢物回收或者更簡單一點:清除)"。地址轉換和GC 是所有FTL 必備的特性。

除此以外,FTL 還需要實現掉電恢復、壞塊管理、損耗平衡、錯誤碼糾正等任務。

鎂光NAND FTL 架構圖

上圖就是鎂光NFTL 4.60 的架構圖。

常見的閃存閃存管理機制有三種:FTL、BL、NFTL。

FTL 是依靠一個地址轉換錶來映射任何給定的LBA 到SSD 裡的PBA,屬於細粒度的地址轉換。

BL 則是採用塊級別的粗粒度地址轉換機制,在BL 中的LBA 會成為一個虛擬塊地址(VBA)的若干部分,偏移量就是閃存的存儲頁,轉換錶中存放的是來自每個給定VBA 至對應PBA 的映射信息,數據會被寫入到PBA 中對應的塊偏移地址中,如果對應的頁已經被使用,數據就會被安排到一個新的塊中,原塊中的有效數據和更新的數據也會復製到新塊中。

NFTL 採用BL 的映射機制,但是NFTL 採用了一個更換塊來處理後續的寫入請求。重寫請求的內容會被持續地寫入到一個更換塊中,因此在NFTL 中的地址表存放著兩個物理塊地址入口,即元塊和更換塊。當更換塊寫滿後,更換塊和它對應的元塊會合併到一個新的元塊中,在這個合併操作中,更換塊和元塊中的所有有效數據都會分配到新的元塊中,原來的更換塊和元塊都會被擦除掉。

寫入放大率(主機寫入vs. NAND 寫入)

閃存芯片的位寬一般都是8 位,以鎂光MT29F64G08CFACBWP-12 為例,它支持兩種運作模式,即同步模式(數據包之間的時間片是固定的)和異步模式(數據包之間的時間片並不固定),傳輸速率分別為最高166MT/s 和最高50MT/s,理論帶寬分別為最高166MB/s 和50MB/s。

不過受制於當前大多數SSD 採用SATA 界面的限制以及異步模式採用多通道等帶寬延伸技術,實際應用中兩者的帶寬並無多大區別。例如Crucial M4 128GB 採用的是8 條存儲通道,同步模式和異步模式的理論帶寬分別為1328MB/s 和400MB/s,但是Crucial M4 採用的界面不過是最高6Gbps 的SATA 3.0,即使運行於同步模式下頂多也就是750MB/s,遠低於166MB/s*8 vs 50MB/s*8 的差別。除此以外,閃存控制器等環節本身也會吃掉一部分的性能。當然,同步模式的性能優勢的確是存在的,而且從芯片本身來說這個優勢是免費的。

有些早期的SSD 採用固定通道存取系統,也就是說如果SSD 的閃存通道是8 條,那麼這些SSD 每次存取操作的大小都是固定的4KiB*8 = 32KiB,或者說不管是讀取還是寫入,最小的存儲塊都是32KiB大小。

如果這個操作中的部分數據是空白的,這些空白數據對應的位址會被寫入以"FF",而這個"FF"在NAND FLASH 中是"已擦除"的標記,這將導致一次擦除動作:一個包含有空白數據的寫入操作,會導致至少一個存儲塊或者說8MB 字節(1MB per Block*8Block)的擦除操作。

這樣的設計無論是對控制器、閃存矩陣都是存在浪費問題的,更重要的是這樣的設計會對整個驅動器(而不僅僅是某個閃存芯片)的耐用性產生嚴重的影響,因此現在的閃存控制器都採用了獨立的讀寫通道控制器來盡量將每次存取操作中發生的擦除操作最小化。

有一個和最小可擦除尺寸類似的尺度被稱作寫入放大率(Write Amplification),當然兩者不不一樣。寫入放大率本身只是指文件系統對存儲設備的寫入操作大小和存儲設備向存儲媒體實際寫入操作大小之間的比率,並不僅僅限於描述某種存儲機制下的情況。

比如閃存控制器足夠聰明的話,在操作系統向SSD 只寫入1KiB數據的情況下時,應該只會佔用一條通道,但是MLC NAND FLASH 的最小寫入單位是page,如果page 的大小是4KiB,那麼寫入放大率就是4 倍,如果page 是8KiB,那麼寫入放大率就是8 倍。

SLC 閃存允許局部頁寫入,所以在這樣的情況下可以將寫入放大倍率降低50%;MLC 雖然是同一個晶體管存放兩個位元,但是這兩個位元其實是分屬不同的存儲頁(如果是3 位元的MLC,則每個晶體管內存放的三個位元其實分屬三個不同的Page,可避免出現6KiB 這類看上去有些古怪的Page 大小),所以無法做到局部頁寫入。

此外如果寫入的數據是可壓縮並且SSD 主控支持壓縮寫入的話,寫入放大倍率也能有所縮小,例如SandForce 的主控器。

但是像上面舉的早期固定式存儲通道設計,那就是32 倍的寫入放大倍率,操作系統每寫入一個字節,就會導致32 個字節的存儲媒體實際寫入操作。

閃存的損耗平衡與過量配置

在前面我們提到,NAND 閃存採用了浮柵存放電子的方式來保存信息,電子進出浮柵的方式為量子學中的隧穿效應,隧穿的時候,電子會被浮柵和襯底之間的隧穿氧化層捕獲,隨著陷落於氧化層中的電子增多,閃存單元將會因此失效。

不過氧化層內的電子其實並非一定會永遠都陷落其中,隨著溫度的提升,氧化層中的一部分電子將有機會逃逸(擠?)出來,使得閃存單元獲得重生,這樣的情況被稱作自愈。

在Flash Memory Summit 2011 上來自紐約倫斯勒理工學院張同的一個幻燈片,提出了和閃存管芯疊加一個專門的加熱管芯,能夠以1.5~5.1 瓦的耗電將芯片的溫度提升至110 ~250 攝氏度,當將溫度加至200 攝氏度(過高的溫度可能導致芯片變形)保持大約35 分鐘(還得加上冷卻時需要加熱時間的3 倍),在保守估計能將80% 的界面陷阱恢復的情況下,能實現將閃存放閃週期從3,000 次提升到17,400 次。

不過在類似瘋狂想法真正在產品實現之前,現在的SSD 都採用了一些技術來確保存儲單元的耐用度不至於被過快消耗掉,例如損耗平衡(Wear Leveling)就能夠透過將寫入操作盡可能地平均分佈於閃存各個存儲塊,使得芯片各處的放閃次數趨於一致,從而"延長"SSD 的使用壽命。

損耗平衡的做法有動態和靜態兩種。

動態損耗平衡就是依據物理地址映射表中存放的放閃次數,決定將數據存放到較少放閃次數的存儲塊中,對於不是執行數據更新的存儲塊或者說靜態數據存儲塊則不會被動態損耗平衡盯上,例如一個存放有50GB mp3 音樂等靜態數據的120GB SSD 可以有70 GB 的空間用於動態損耗平衡。

靜態損耗平衡會對所有的存儲塊執行損耗平衡,包括那些沒有需要數據更新的存儲塊,這樣的好處是可以用於損耗平衡的存儲塊數將可能更多,減少存放靜態數據(例如mp3)存儲塊和存放動態數據(例如日誌文件)存儲塊之間的不平均損耗問題,增加(維持?)整個SSD 的耐久度。

損耗平衡的概念其實並不復雜,但是需要SSD 廠商在算法上盡量地減少執行損耗平衡所帶來的性能損失,例如採用專門的DRAM 內存作為緩存等。

提升耐用度的另一個辦法是採用過量配置(Over-Provisioning),損耗平衡的概念是需要盡量地將閃存的擦除平均地分佈於SSD 的各個閃存角落,容量愈大,同樣擦除量所產生的平均放閃週期自然越少,不過如果還是出現了存儲塊失效的情況,就需要將該存儲塊標記為不可用,然後從SSD 預留的冗餘區中重新分配一塊存儲塊到相應的邏輯地址,這個冗餘區就是過量配置的空間。

過量配置當然不是免費的,根據SSD 本身等級、銷售目標市場的不同,過量配置的空間也不盡相同,一般來說企業級的SSD 會分配20% 的過量配置,而桌面級的是6% 左右,用戶自己也可以使用ATA 指令來調整LBA 空間大小從而改變過量配置大小,犧牲更多的可用空間來換取耐久度。

Garbage Collection 和Trim

前面我們已經說過,NAND 閃存不能直接對一個已經寫入了數據的Page 馬上進行重寫,它必須等待到這個Page 所在的Block 被擦除後才能進行,而且每次擦除都是一整個Block而不只是單獨的某個Page。

為了對閃存中的數據重新放置、刪除掉陳舊數據並騰出空白Block 來存放新數據,NAND 閃存需要執行被稱作Garbage Collection(或者Merges,合併)的操作,而SSD 的損耗平衡操作也主要在這個時候執行。

見下圖中"情形三"的介紹:

NAND 閃存的Garbage collection(廢料回收)

在Windows XP 中,刪除文件的時候操作系統會把對應的邏輯空間標記為已經刪除,但是SSD 並不會知道有這麼一回事。

Garbage collection 缺乏Trim 指令

在寫入新數據的時候,操作系統有可能向之前邏輯表中用過但是標記為已刪除的空間寫入數據,只有在這時,SSD 才能透過操作系統向它發出的邏輯地址知道原本這個地址對應的數據是被刪除不再有用了的。

具備Trim 指令支持

而在Windows 7(以及Windows Server R2、Linux 2.6.33、FreeBSD 8.2、OpenSolaris、Mac OS X Lion)中引入了Trim 指令的支持(見上圖),會在刪除了文件的同時向SSD 發出Trim 指令,讓SSD 可以在自身的邏輯地址表中也將對應的文件標記為已刪除,如此一來就能避免GC 的時候把無效數據也讀取、複製到其他存儲塊,讓SSD 知道增加了空白空間。

Trim 不能在RIAD 的時候使用,在這個時候就得依賴ITGC(idle-time Garbage Collection,閒置時廢物回收,又被稱作後台GC(BGC))。

前面所說的標準GC 過程是系統要寫入新數據的之前,需要先讀取出整個Block,然後把Block 中的有效數據和新數據寫入到另一個空白的Block 裡,最後將原來的Block 擦除掉。而ITGC 則是利用SSD 閒置時間在系統寫入新數據之前就進行類似碎片整理的動作,將各個未寫滿的Block 進行統合成盡可能寫滿的Block,從而騰出更多的空Block。這樣的做法雖然可以在寫入操作較為空閒的情形下提升性能,但是代價是犧牲了SSD 耐用度。

SSD 分區的4KiB 對齊問題

硬碟驅動器的扇區大小一般是512 字節,也就是說它的最小存儲空間尺度是0.5 KiB,故此目前所有的操作系統都是採用512 字節來對虛擬存儲空間進行劃切。理論上我們是不需要對512 字節粒度轉換為4 KiB 粒度過分關注的,特別是現在人們正在使用的大多數文件系統例如Windows NTFS 就是採用4KiB 作為簇(Cluster)的大小。

不過在現實情況會有點出入,原因是10 年前開發的Windows XP 內建磁盤工具在分區的時候由於設計上並沒有考慮到SSD 的情況,採用了一個63 個扇區(相當於7 + 7/ 8 個4KiB Page)的偏移量,這將導致每個從操作系統寫入的Page 會覆蓋SSD 的兩個物理Page,而且會導致兩個Page 的空間未能充分使用。

由於Page 是SSD 的最小寫入粒度,因此即使操作系統只是要求更新一個Page 的數據,也會導致兩個物理Page 被執行寫入操作。

在讀取的時候,特別是大文件的話,影響並不大,但是寫入的話分區不對齊會很快導致性能衰減。

不同的應用負荷產生的文件尺寸不盡相同,像富媒體(例如視頻、靜態圖像)和科學或者財經應用程序的文件大小是存在差別的,後者的文件寫入操作中60%~70% 都是4 KiB。

如果你是在Windows 7 或者Vista 下執行分區的,邏輯塊會對齊至SSD 的Page 界線,因此不會發生Windows XP 內建分區工具導致的不對齊問題。

雖然Windows XP下有其他工具能實現創建對齊分區,但是這也只是克服了Windows XP使用SSD時候眾多不足之一,光是缺乏前面所說缺乏原生Trim支持就應摒棄掉Windows XP(當然,目前有一些可以"手工"向SSD發出Trim指令的工具:http://www.ocztechnologyforum.com/forum/showthread.php?73888-Here-sa-tool-to-force-TRIM-your-entire-drive。 

SSD 錯誤糾正碼(ECC)技術和成本

和硬件損壞導致的硬錯誤(HEC)不同的是,軟錯誤是由於地球低強度背景輻射的帶電粒子所引起的,這些帶電粒子有可能來自宇宙射線,也可能來自大多數材料中的微量放射性元素,這些都可能會干擾依靠粒子運作的半導體芯片,例如帶電粒子撞擊閃存芯片存儲單元造成位元翻轉,就會導致數據錯誤。

不過按照香農的信息論,只要採用一定的編碼,就能將數據錯誤的機率弄到無限小,因此各種各樣的錯誤糾正碼(ECC)應運而生,數據錯誤原因遠遠不至於輻射帶電粒子的閃存自然也毫不例外的引入了ECC。

Hamming ECC

早期(指的是Page大小只有512字節的年代,這是差不多20年前了)在NAND閃存中常用的ECC方式是加權平均ECC(Hamming ECC),能夠糾正 1個位元的錯誤或者偵測出兩個位元的錯誤,可以看做是DRAM中應用的SEC/DED(單位元錯誤糾正/雙位元錯誤偵測)的簡單版本,只不過NAND FLASH的Hamming ECC是對整個Block的數據(因此也稱作Block Code),而DRAM的Hamming ECC是針對雙字(Dualword)的。

但是隨著Page 大小增加,一個Page 中出現多個位元錯誤的機會也隨之增加,Hamming ECC 已經無法應付這樣的情況。於是乎工程師們開始採用在通信領域(例如DSL、WiMAX)和其他存儲技術(例如CD-ROM、Blu-Ray、RAID6)中採用的Reed-Solomon code(理德-所羅門碼),一個可能是迄今為止最賺錢的編碼技術。此時,2 KiB 或者4 KiB的Page 和MLC (70nm 時代)設備需要4 位錯誤糾正能力。

Reed-Solomon code

常見的RS 碼執行方式是把512 個字節(選擇這個大小是因為和傳統存儲的最小單位扇區一樣大,當然具體的可能也有不同,取決於具體廠商和型號)的糾正塊切開成多個符號(注意,這裡說的是符號是位於一個有限域內的,而不是二進制數),提供N 符號糾正。如果符號中的任何位元出錯,RS 碼都能將整個符號糾正。

隨著MLC 每512 字節糾正塊的錯誤糾正能力需求增加到8 個位元後(製程越先進,錯誤校正能力要求越高),RS 碼校驗位所佔用的空間超出了NAND 閃存芯片中的備用空間。為了將校驗位最少化,NAND 閃存廠商開始推薦採用BCH 碼作糾正。

SSD ECC BCH 碼

人們認為NAND 閃存的錯誤不會一整片地出現,而是隨機的分佈於Page 的各處,而RS 碼的強項是成片錯誤的糾正,非常適合於光盤的劃花或者錯亂的通信通道。

而BCH 在類似閃存這類偶爾出現單個位元錯誤的情況下能做得更加高效,在同樣數量的校驗字節數下,BCH 能做到比RS 碼更多個位元的錯誤糾正。

隨著NAND 閃存錯誤率的持續增長和所需的BCH ECC 級別提升,BCH 的糾正碼塊大小未來將會增加到1 KiB 以確保進一步改善糾正效率。

例如同樣是1024KiB 大小,在遇到高低位區各9 + 5 = 14 位元錯誤的時候,分別採用兩個512B-ECC8 和1 個1024B-ECC16 糾正塊的話,1024B-ECC16 能將這14 個位元的錯誤全部糾正,而512-ECC8 則無法應付高位區的9 個錯誤。

BCH ECC 各項重要參數的含義說明
在Windows的計算器裡的log其實是lg 
所以這裡的log2(512byte*8bit+12bit)在
計算器裡要用lg(512*8+12)/lg2來算
其中的12代表可以糾正的位數

要滿足多少位校正能力所需要的糾正碼大小可以用一定的算式求出來,例如上面的1024B-ECC16:

需要糾錯的數據塊字節長度k = 1024 Byte

可以被糾錯的位數t = 16 bit

需要增加的糾正碼位數P = m*t

而m=upper{log2(1024byte*8bit+16bit)}

也就是要滿足不等式:1024*8bit+m*16bit<2^m-1。

用比較原始一點的辦法求m 值:

請忽略->如果m= 0->12,左邊等於...,右邊等於...-1=..,左邊大於右邊,不成立

如果m=13,左邊等於8400,右邊等於8192-1=8191,左邊大於右邊,不成立

如果m=14, 左邊等於8416,右邊等於16384-1=16383,左邊小於右邊,成立

故此如果一個以1024 字節為單位配置BCH 碼作ECC 的話,所需要的糾正碼位數P 是14*16 = 224bit 或者說28 byte。

現在很多廠商都在使用的SandForce SSD 控制器號稱可以實現512B-ECC55,即可以對512 字節塊中的55 個錯誤進行糾正,傳統固定代碼字長度下相當於需要為這512 字節額外配備90個校驗字節(因為(13*55bit)/8= 89.375 字節)。 

如果是4KiB 的Page,這就相當於需要715 個字節,目前沒(未來也不可能)有任何閃存有這麼大的備用空間比例(鎂光的4KiB Page 是224 字節備用空間,尚欠419 字節),所以SandForce 在這裡其實是以切出更多閃存空間作為二級備用空間存放多出來的419 字節,配合SandForce 獨有的實時壓縮技術以及自適應字長ECC,應該還能在不犧牲性能的情況下顯著縮少這些校驗位佔用的空間。

根據OCZ 的計劃,該公司將會在2012 年推出基於TLC(單晶體管存放3 位元數據)的SSD,而TLC 本身比目前的MLC(TLC 也是屬於MLC,不過當下一般是指單晶體管存放兩個位元的閃存為MLC,TLC 有些時候被歸類為XLC)有更高的錯誤糾正需求。

在將來,BCH 將會讓位於LDPC 碼技術直到有比NAND 閃存更先進的存儲技術為止。

現在的SSD 除了閃存鐵定需要採用ECC 技術外,整個數據通道上的總線、先進先去緩存以及可能集成的DRAM 都要視乎需要採用ECC 技術,當然這都不是免費(性能、價錢)的。

不過...我們的SATA-2 總線上每512B 只有6-bit ECC 校驗碼,為了數據完整性萬無一失,理論上...可以...考慮回傳一次做CRC。

IOMeter 和預訓練測試

對大容量驅動器的性能測試業界有不少備受肯定的專業測試工具,例如SQLIO、FIO、IOMeter,其中IOMeter 出自上個世紀,由英特爾公司於1998 年IDF 大會上公佈,在2001 年的時候英特爾公司停止了IOMeter 的繼續開發並將源代碼公開,使其成為了一個開源項目,只要在Google 搜索輸入IOMeter 就能搜索到該項目網站。

IOMeter 支持Raw 盤(未分區)和格式化分區的測試,前者主要適合於機械硬碟的本機原始性能測試,後者主要用於填充不同大小、模板數據後的驅動器性能測試,當然IOMeter 還能用於網絡環境的測試(也是IOMeter 的另一重要測試功能),不過這並非本文關注的部分。

和機械硬碟不同的是,SSD 需要對無效數據執行Garbage Collection,一般來說,隨著使用時間的延伸,Garbage Collection 就會逐漸對性能構成影響,最終會讓SSD 的寫入性能下降到峰值狀況下的1/2 不到的水平(取決於SSD 本身的各項設計),在使用IOMeter 測試的時候,為了能反映真實應用下的性能狀況,有必要對SSD 執行一個較嚴格的測試步驟:

1、對SSD 執行淨化處理,例如對SSD 執行ATA 安全擦除指令,將SSD 恢復至接近未啟用狀態。

2、對SSD 執行標準的分區格式化。

3、在IOMeter 中執行25 個循環的測試腳本,在SNIA 的SSS Client PTS 1.0 中要求先對SSD 執行兩倍於SSD 容量的128KiB 持續寫操作,然後採用混合了不同大小傳輸塊、不同讀寫比例的腳本(取決於測試的目標,如果是需要隨機性能的就是隨機腳本,如果是要獲得持續性能的,就用持續性能腳本)對SSD 執行預訓練。

SNIA 將跑完一遍所有所有組合的預訓練腳本稱之為一個回合,每個測試組合必須需運行1 分鐘,SNIA PTS Client 1.0 中提供的隨機預訓練腳本樣例包括了56 個組合,因此完成一個回合所需要的時間至少是56 分鐘,而一次完全的預訓練需要執行25 個回合,這意味著至少需要跑1400 分鐘,幾乎就是一整天。

整理預訓練的測試結果,當最後5 個回合數據高低差別都落在平均值正負10% 以內、斜率在正負5% 以內的情況下才會視作SSD 進入了所謂的穩態或者說此時的測試結果是能反映真實應用性能的。

如果最後5 個回合的測試結果高低超出正負10% 或者斜率超出正負5%,則會視作SSD 未能進入穩態,測試人員需要再執行25 個回合同樣腳本組合測試,直到進入穩態。

在測試隨機性能的時候,這樣的預訓練需要執行兩次,首先是負載不相依的預訓練,而後是負載相依的預訓練,兩者的測試腳本其實都是一樣,但是後者會引入分段式活躍區域的測試,需要將LBA 切成2048 個活躍區,每個活躍區的大小為SSD 的LBA 大小除以2048。

5、在SNIA SSS Client PTS 1.0 中規定,當負載相依的預訓練測試完成並進入穩態後,取最後一個回合的測試結果為最終的測試結果。

基本上,單單是完成SNIA SSS Client PTS 1.0 中的隨機測試項目就需要持續地進行兩天時間,目前來說這對SSD 的耐用度是比較苛刻的考驗,測試下來掉幾個百分比的耐用度甚至導致SSD 即使經過安全擦除也無法讓性能達到全新狀態也並不奇怪。

不過另一方面,如果只是將SSD 寫滿而不進行預訓練就進行測試的話,就無法根據預訓練結果來判斷是否進入穩態,測試結果反映的到底是什麼階段的性能根本無從談起。

PCINLIFE 在使用IOMETER 進行隨機性能測試的時候會比SNIA Client PTS 1.0 簡化一些,因為IOMeter 只提供了控制LBA 大小的設置,缺乏分段活躍區的設置,因此SNIA Client PTS 1.0 提到的負載相依預訓練及其測試結果也就無法提供了。

事實上完全的SNIA Client PTS 1.0 測試是有專門的設備和軟件來執行,我們在這裡只是用IOMeter 盡量仿照著來做,最主要參考的是它的測試規範和步驟,確保測試結果具有較高的參考價值。

PCINLIFE 的IOMeter 測試步驟和設置

1、使用Parted Magic v6.6 中Disk Eraser 的Secure Erase(其實是hdparm 的圖形化界面)對待測的SSD 執行安全擦除,讓SSD 恢復至未使用狀態。

Secure Erase 和Windows 7 的快速格式化並非一回事,只有Secure Erase 才能真正將SSD 恢復至FOB(首次開盒)狀態。

SSD 安全擦除

2、使用Windows 7 內建的分區工具對SSD 進行分區,大小為100%。

3、打開IOMeter,設置寫入模板為完全隨機,執行一次idle 任務,目的是讓IOMeter 向SSD 寫入和SSD LBA 容量一樣的測試文件。

由於不同的SSD 容量不盡相同,為了做到一致的測試結果,我們選擇全盤空間來測試。

PCINLIFE IOmeter 測試設置01

PCINLIFE IOMETER 測試預寫入

PCINLIFE IOMETER 測試預寫入時間設置

4、執行兩倍於SSD 容量的128KiB 連續寫操作。

首先執行一次1 分鐘的128KiB 連續寫操作,獲得測試結果。

然後將SSD 容量除以這個測試結果,獲得執行兩倍於SSD 容量的128KiB 持續寫操作所需要的時間。

例如一個128GB SSD 的測試結果是188MB/s,就用(128GB*1000)/188=688 秒,(688*2)/60= 22 分鐘。

測試腳本的存儲規格設置如下:

PCINLIFE IOMETER測試設置128KiB 持續寫

5、執行25 個回合、每回合包含多種讀寫比例(包括0%、5%、35%、65%、95%、100% 寫入)、傳輸塊大小(包括0.5KiB、4KiB、8KiB、 16KiB、32KiB、64KiB、128KiB、1024KiB)組合、每個組合各1 分鐘時長的隨機讀寫測試作為預訓練。

測試腳本的存儲組合設置示例(圖中是1024KiB、5% 寫入)如下。

PCINLIFE IOMETER 模仿SNIA PTS Client 1.0 的測試上設置

為了減少icf 大小,我們將.icf 設置為一個回合的測試腳本,然後以命令行方式執行25 次即可實現25 回合測試(需要等待1400 分鐘),以Plextor PX-128M2P 的測試結果整理出其中100 % 寫入的測試結果為例,見下圖(x 坐標軸的標籤是代表回合數,不是分鐘數)。

SSD Plextor PX-128M2P 25 回合預訓練測試結果

SSD Plextor PX-128M2P 25 回合預訓練測試結果穩態觀測窗口

上圖是我們在Plextor PX-128M2P 128GB 執行25 回合100% 隨機讀寫後匯總的測試結果而繪製的圖表,可以看到最後5 回合(第21 回至第25 回)的測試結果之間差別都在正負各10%、斜率線位於正負5% 的範圍內(都是2892 IOPS 附近),故此我們認為此時SSD 已經屬於穩態。

6、整理最後一個回合的數據,製作出各類圖表,例如下面的三維圖表:

PCINLIFE 鎂光Crucial M4 128GB IOMeter 1.10rc1 隨機性能

隆重推出:PCINLIFE Storage Benchmark 2011 2.0

IOMeter理論上可以透過Windows性能監控器記錄的存儲操作信息來再現執行同樣操作時候的性能,例如早期的IOMeter 1998版就提供了諸如filer server(文件服務器)、Database(數據庫)等存取測試模版,而後還有StorageReview提供的Workstation(工作站)以及一個來歷不是很清楚但是大家都在使用的Web Server(萬維網服務器)存取測試模版

不過這樣的測試依然只是"模版",而非真實存取的重現,不能像遊戲測試的錄像回放那樣每一幀畫面都可以做到極高的再現能力。

其實在IOMeter 出來的同期,英特爾還提供了一個名為ipeak spt 的工具,可以實現I/O 軌蹟的錄製和重放,這是最理想的測試方式,因為只有這樣才能接近100% 在不同的系統、存儲設備上執行同樣的I/O 操作測試、分析。

現在包括Anandtech、StorageReview(印像中是最早採用這樣技術的網站)、TechReport、Tom's HWG、xbitlabs 以及一些德國媒體都採用了自行錄製的I/O 軌跡重放測試。

現在PCINLIFE 也引入了這樣的測試技術,推出國內第一個I/O 軌跡重放測試:PCINLIFE Storage Benchmark。

PCINLIFE Storage Benchmark 目前的最新版本為PCINLIFE Storage Benchmark 2011 2.0,由PCINLIFE Office Storage Benchmark 2011 2.0 和PCINLIFE Gaming Storage Benchmark 2011 2.0 組成。

其中PCINLIFE Office Storage Benchmark 2011 2.0 所涉及的辦公軟件包括了:

1、微軟Word 2010,測試的事件是打開多個.doc、docx 文件,然後人工逐個翻閱。

2、微軟Excel 2010,測試的事件是打開多個.xls 文件。

3、微軟PowerPoint 2010,測試的事件為打開多個.ppt、pptx、pps 文件,然後人工逐個翻閱。

4、微軟Expression Web 4,測試的事件為打開多個本地.htm 文件,然後人工逐個文件、逐頁翻閱,測試的.htm 文件是PCINLIFE 評測室過往所寫的若干篇文章的原文(我一直都是用Frontpage 等html 編輯器寫文章,所以文章都是原生的html,現在改用Expression Web。Dreamwaver 的界面響應太慢,所以我一直都棄用)。

4、Internet Explorer 9,測試的事件為打開多個本地.htm 文件,然後人工逐個文件、逐頁翻閱、並點擊放大其中的若干個圖片。

5、Acrobat Pro 9,測試的事件為打開多個.pdf,然後人工逐個文件、逐頁翻閱。

6、FastStone Image Viewer 4.4,測試的事件為瀏覽數十張.png 格式照片,這些照片都是PCINLIFE 評測室平時拍攝後處理好的成品照。

7、PhotoShop CS5,測試的事件為打開兩個極高分辨率的png 圖片然後另存為.bmp。

8、Foxmail 7.0,測試的事件為關鍵字搜索。

每個測試完成後都關閉掉軟件,然後馬上執行另一個測試,所以Office Benchmark 重放的是包括了8 個軟件使用、工作流程產生的I/O 軌跡,下圖就是測試過程所涉及的文件:

PCINLIFE Office Storage Benchmark 2011 2.0 涉及的文件

根據我們錄得的PCINLIFE OSB 2011 2.0 軌跡文件,可以分析出下面這個傳輸塊分佈圖:

PCINLIFE Office Benchmark 2011 2.0 傳輸塊尺寸分佈圖

PCINLIFE Gaming Storage Benchmark 2011 2.0 由三個遊戲的I/O 軌跡組成,這三個遊戲分別是Crysis 2 1.9 的DX11 Town Benchmark、Battlefield 3 的雷電關卡實際遊戲、Total War Shogun 2 的官方性能測試錄像回放。

進行這三個遊戲的I/O 軌跡記錄時所設置的畫面品質均為最高,分辨率為1920x1200(分辨率紋理尺寸mipmap lod相關)。

以下是PCINLIFE GSB 2011 2.0 的讀寫塊傳輸分佈圖:

PCINLIFE Gaming Storage Benchmark 2011 2.0 Crysis 2

PCINLIFE Gaming Storage Benchmark 2011 2.0 Battlefield 3

PCINLIFE Gaming Storage Benchmark 2011 Total War Shogun 2

其實在我們原本的計劃中還準備納入id Software 的新作—— Rage 的I/O 軌跡,但是可能是由於遊戲本身採用的MegaTexturing 技術緣故,執行I/O 預備操作時的生成的文件極為巨大,最後不得不再這次測試中先放棄掉,也許以後測試更大容量硬碟的時候可以搬出這個傢伙。

由於操作系統會對硬碟數據進行緩存,因此我們的PCINLIFE Benchmark 2011 測試都是系統冷啟動後跑第一次後直接錄取結果,每個子項目的測試都需要重複三次冷啟動和各運行一次測試,在確定誤差低於3% 的情況下取最高得分。

PCINLIFE Storage Bencmark 是作為PCINLIFE 評測室內部使用的測試工具,並不打算公開,不過如果你感興趣的話,可以透過討論區短信或者電子郵件等方式詢問更多的細節,我很樂意回答相關的問題。

參測產品介紹——鎂光Crucial M4 128GB/64GB

鎂光Crucial M4 64GB

鎂光Crucial M4 64GB

鎂光Crucial M4 64GB

鎂光Crucial M4 64GB

鎂光Crucial M4 128GB

 

鎂光Crucial M4 128GB

鎂光Crucial M4 128GB

鎂光Crucial M4 128GB

鎂光Crucial M4 128GB

鎂光Crucial M4 128GB

鎂光Crucial M4 128GB

鎂光Crucial M4 128GB

鎂光Crucial M4 64GB 和128GB 都採用MT29F64G08CFACBWP-12 閃存顆粒,控制器分別是Marvell 的88S9174-BLD2 和88S9174-BKK2 控制器,SSD 控制器的相關資料其實各個廠商都控制得很嚴格,Marvell 索性連個像樣的網頁介紹都沒有,不過這不代表這個控制器的水平高低,更多的是一些保密上的考量或者營銷部的重視度不足。

Crucial M4 都集成一枚DRAM 芯片用作緩存,其中128GB 採用的是D9LGQ 即MT41J128M16HA-15E:D(DDR3-1333 128MB)顆粒,64GB 則是D9MBJ 即MT41J64M16JT-15E(DDR3-1333 64MB)的顆粒,估計是以數據高速緩衝的方式實現減少寫入放大倍率等性能優化。

Crucial M4 128GB 格式化為單NTFS 分區後的容量是128,033,222,656 字節(119GiB),而按照配置來看它的物理容量應該是137,438,953,472 字節(128GiB),這意味著有大約6.8% 的空間用於過量配置。

這裡128GB 的標稱其實也是比較正常,因為所有的硬碟廠商多年一來都是沿用10 進制容量標註方式,Crucial M4 128GB 的"128GB"的標稱符合格式化後的十進制容量(如果你有留意的話,你會發現我們通篇文章都有KiB、GiB 這樣的容量標註方式,這其實是美國政府的標準與技術研究院或者說NIST 對二進制容量標記的標準方式)。

Crucial M4 都採用了6Gbps 作為傳輸界面,在實際測試中,兩者的持續讀取性能都能超過500MB/s,不過128GB 的寫入性能比64GB 高出一些。

在附件方面Crucial M4 比較簡單,特別是缺乏其他廠商付配的3.5 英寸轉2.5 英寸支架。

參測產品介紹——海盜旗Corsair Force GT 120GB

海盜旗Cosair Force GT 120GB

海盜旗Cosair Force GT 120GB

海盜旗Cosair Force GT 120GB

海盜旗Cosair Force GT 系列都採用SATA 6Gbps 界面,由於採用了Sandforce 的SF-2281 控制器,我們這裡測試的是它的120GB 版本,能夠在寫入可高度壓縮數據的時候實現高達85K IOPS(傳輸塊大小為4KiB 尺寸)的性能。

海盜旗Corsair Force GT 120GB 鎂光MT29F64G08CBAABWP-12

Force GT 120GB採用鎂光的MT29F64G08CBAABWP-12,和Crucial M4 128GB/64GB採用的MT29F64G08CFACBWP-12一樣,都是基於25nm的MLC NAND閃存,耐久度均為3000次放閃週期,但是它們有一個重要的不同之處:前者的Page大小增加了一倍達到了8KiB+448Byte,Page越大理論上性能就越高。

海盜旗Force GT 120GB Crystal Disk Info

Force GT 120GB 提供了二十多個SMART 狀態ID,其中包括了擦除、寫入錯誤計數、剩餘使用壽命等重要的信息,用戶可以依據狀態信息在SSD 盡量出現異常之前之前備份好重要的數據。

Force GT 120GB 的外殼採用了醒目的鮮紅色,配件方面提供了一個3.5/2.5 金屬轉接支架。

影馳Galaxy Laser GT 120GB

影馳Galaxy Laser GT 120GB

和海盜旗Force GT 類似,影馳Laser GT 120GB 是採用英特爾的29F64G08ACME2(PCB 雙面各8 枚,共計16枚)同步閃存,耐久度為3000 次放閃週期,主控芯片同樣是SandForce SF-2281 。

和本次測試的其他產品相比,影馳Laser GT 120GB 是唯一一塊提供了SATA 信號線的SSD,此外還有一個3.5/2.5 的轉接支架。

影馳的SSD 依據產品等級劃分保修時間,GT 系列提供和3 年的保修(和其他公司的大多數保修時間相當),而更高的EX 系列提供六年保修。

飢餓鯊OCZ Vertex 3 Max IOPS 120GB/Vertex 60GB

飢餓鯊OCZ Vertex 3 Max IOPS 120GB/

飢餓鯊OCZ Vertex 3 Max IOPS 120GB/

OCZ Vertex 3 Max IOPS 採用了SandForce 2281 控制器,而閃存芯片則是來自東芝的16 顆TH58TAG7D2FBAS9,支持Toggle 傳輸模式,製程為32nm 而非IMFT 陣營的25nm + 同步傳輸模式。

Toggle

Toggle 傳輸模式和同步模式相比減少了同步時鐘,理論上耗電、成本更低,不過這對於台式機用戶來說感受會微乎其微。

飢餓鯊OCZ Vertex 3 60GB

飢餓鯊OCZ Vertex 3 60GB

和Vertex 3 MI 120GB 採用東芝Toggle NAND 不同的是,Vertex 3 60 GB 則是採用8 顆英特爾(其實是IMFT 生產後劃給Intel)的29F64G08AAME1 25nm 異步MLC 閃存顆粒。

兩款Vertex 3 系列SSD 都採用了完全一樣的薄盒包裝,其中除了SSD 本體以外還有一個3.5/2.5 轉接支架。

浦科特Plextor PX-128M2P 128GB

浦科特Plextor PX-128M2P 128GB

浦科特Plextor PX-128M2P 128GB

浦科特Plextor PX-128M2P 128GB

浦科特Plextor PX-128M2P 128GB

PX-128M2P 128GB屬於目前Plextor最高端的M2P系列,採用8顆來自東芝公司32nm製程的TH58TVG7D2FBA89 Toggle DDR 1.0(133MT/s)NAND閃存顆粒(page大小是8KB),控制芯片是Marvell公司代號"梵高"的88S9174-BKK2,搭載兩枚南亞70 nm製程的NT5CB128M16BP-CG DDR3-1333內存顆粒,容量為2Gb(256MiB),按理說應該是合計512MiB,不過Plextor的官方網頁倒說是256MiB。

PX-128M2P 128GB 支持Global Wear Leveling(即靜態損耗平衡),對全盤所有塊依據放閃次數進行存取、擦寫安排,PX-128M2P 的512MiB 內存可以緩存更大的單區邏輯物理轉存表,提高閃存存儲塊回收的效率。 

Plextor 表示PX-128M2P 具備"Instant Restore"技術可以在SSD 非全新狀態下依然保持較高的速度,不過依據我們的測試來看,這並非獨家的技術,其他廠商的這一代產品都能在驅動器只有部分空間被使用(或者至少保留測試軟件所需空間多一點,例如AS SSD Bench 一般是需要佔用3GiB 空間,Crystal DiskMark 一般是最多9GiB)的情況下依然保持接近全新狀態的性能。

此外,如果在非分區的情況下進行全盤填充式的隨機寫入外加數小時的隨機4KiB 寫入後, PX-128M2P 可以在每完成一次全盤線性寫入後恢復大約6.8% (相當於過量配置空間大小)的連續LBA 空間寫入性能,基本上連續完成相當於15 倍左右的全盤LBA 線性空間寫入後,PX-128M2P 就能恢復到80% 的持續寫入性能水平,相比之下基於SandForce 的SSD 無法做到這點。

例如下面的HDtune 線性寫入測試的第三次和第四次之間我們特意間隔了1 小時,而其他的次數間隔基本都在5 分鐘左右,但是恢復的區間間隔都是非常接近。

這裡使用HDTuner 的原因是它完成寫入的時間基本上是固定的5 分鐘,而其他可以執行線性空間測試的工具,例如AIDA 2.0 在全盤寫滿+持續隨機寫入後,需要花費一小時才能完成。

未格式化
未格式化持續寫入性能

經過全盤空間持續寫入+ 75 分鐘隨機4KiB 寫入後的HDTune 第一次持續寫入性能
經過全盤空間持續寫入+ 75分鐘隨機4KiB寫入後
的HDTune第一次線性寫入性能

經過全盤空間持續寫入+ 75 分鐘隨機4KiB 寫入後的HDTune 第二次持續寫入性能
第二次執行線性寫入性能(可以看到性能恢復的空間大約在7% 左右)

經過全盤空間持續寫入+ 75 分鐘隨機4KiB 寫入後的HDTune 第三次持續寫入性能
執行第三次線性寫入

執行第四次持續寫入
執行第四次線性寫入

執行第六次持續寫入
執行第六次線性寫入

執行第十次持續寫入
執行第十次線性寫入

執行第十一次持續寫入
執行第十一次線性寫入

執行第十二次持續寫入
執行第十二次線性寫入

執行第十三次持續寫入
執行第十三次線性寫入

執行第十四次持續寫入
執行第十四次線性寫入

根據觀察,除了第十一次難以判斷外,每執行完一次線性寫入後恢復的區間非常接近於過量配置的6.8 % 空間,這也是桌面型SSD 通常的過量配置空間,如果是企業級SSD 的話,過量配置空間會達到20% 的水平,那麼完全恢復整個LBA 區間持續寫入性能的回填次數可能會更短也不定(5 次就可以了?)。

根據Plextor 官網的產品介紹,每塊PX-128M2P 128GB SSD 都經過Flexstar 提供的專業測試系統模擬20 小時真實世界的嚴格測試,目前錄得的PX-128M2P 128GB 年均出錯率是0.59%,號稱業界最出色的水平。

PX-128M2P 128GB 的包裝內除了SSD 本體外,還有一個3.5 英寸支架和名為Acronis True Image 的硬碟備份克隆軟件以及配套的中文版軟件使用說明書,是這次測試中唯一隨包裝提供了軟件的產品。

測試平台及方法介紹

系統配置
處理器 英特爾Core i7 2600K 超頻4.5GHz Sandy Bridge 架構
內存 4 x 2048MB Kingston HyperX DDR3-1600 -共計8 GB 
CAS 9, 9, 9, 27, 1T, DDR3-1600
主板 ASUS P8Z68 Deluxe BIOS 0706 Z68 芯片組
硬碟 系統盤:WD1600 160GB 10KRPM
操作系統 Windows 7 x64 SP1 
Intel RST 10.6
顯示卡 NVIDIA GeForce GTX 560 Ti GTX 1GB 
Forceware 280.26

測試軟件

AS SSD Benchmark 1.6.4237.30508

Crystal DiskMark 3.0.1

Anvil Pro Beta 8

IOMeter 1.10rc1

Sysmark 2012

PCMARK 7

PCINLIFE Storage Benchmark 2011 2.0

AS SSD Benchmark、Crystal DiskMark 、Anvil Pro Beta 都是比較相似的軟件,適合作為快餐類的一般測試,測試人員不需要看什麼手冊,點擊運行即可。

當然Anvil Pro 相對複雜一些,例如測試文件的大小設定比較寬鬆,提供了類似於IOMeter 的I/O 測試,但是它不支持自定義存儲模版,只有一個讀、寫、混合讀寫三種。此外Anvil Pro 提供給了不同壓縮比例的寫入數據模板,包括全0、8%(數據庫)、25%、46%(應用程序)、67%、100%(不可壓縮)。

IOMeter 1.10rc1 是IOMeter 的較新版本(最新版本為一周前的1.10a),屬於開發中的版本,而最近的穩定版是2006-07-27,但是穩定版的年代SSD 尚未流行,SSD 時代出現的實時數據壓縮技術帶來了測試技術的挑戰,直到後來有人遞交了2010q2rnd 的補丁後,IOMeter 終於可以選擇完全隨機數寫入模板,避免因為實時壓縮技術帶來的測試數據失真狀況。

作為BAPCo 的媒體成員之一,PCINLIFE 這次也引入了Sysmark 2012 進行測試。Sysmark 2012 是一個基於用戶腳本回放的測試套裝,主要是用於了解64 位系統(Sysmark 2012 要求64-bit 操作系統)下的辦公和創作應用性能,完成一個完整的測試需要三個回合,共計6小時。

Sysmark 2012 的包裝中有兩張DVD,達到了空前的規模,其中包含的軟件有:

  • ABBYY® FineReader pro 10.0
  • Adobe® Acrobat® Pro 9
  • Adobe® After Effects® CS5
  • Adobe® Dreamweaver® CS5
  • Adobe® Photoshop® CS5 Extended
  • Adobe® Premiere® Pro CS5
  • Adobe® Flash® player 10.1
  • AutoDesk® 3DS Max® 2011
  • AutoDesk® AutoCAD® 2011
  • Google Sketchup™ Pro 8
  • Microsoft® Internet Explorer® 8
  • Microsoft® Office® 2010
  • Mozilla® Firefox® Installer
  • Mozilla® Firefox® 3.6.8
  • Winzip® Pro 14.5

SysMark 2012 安裝後Windows 列出的軟件清單

和Sysmark 2007 相比,Sysmark 2012 更新了大部分的軟件,但是比較受人關注的是已經有多家公司退出了BAPCo,而AMD 公司也專門在官方Blog 上發文批評Sysmark 2012 缺乏GPU 硬件加速應用軟件(例如沒有集成IE9、Firefox 4+ 等)。

Sysmark 2012 系統配置界面

Sysmark 2012 結果瀏覽器

不管怎樣,我們是在同一個平台上測試大容量存儲媒體性能,而非處理器之間的橫向比較,所以這些所謂的爭議而實際上是處理器公司間商業利益的糾紛並不會對這次測試構成影響。

PCINLIFE Store Benchamrk 2011 2.0 在前面我們已經有所介紹,它是基於I/O 軌蹟的回放測試,和各類上面的各類測試相比,它再現了"使用者-應用程序-操作系統-硬件- SSD"的完整工作流環節,而Sysmark、IOMeter 等只能做到"應用程序-操作系統-硬件-SSD"等環節的測試,是終極的理想性能測試方式。

AS SSD Benchmark 測試結果

海盜旗Corsair Force GT 120GB

鎂光Crucial M4 64GB

鎂光Crucial M4 128GB

影馳Galaxy Laser GT 120GB

OCZ Vertex 3 60GB

OCZ Vertex3 MAX IOPS

浦科特Plextor PX-128M2P 128GB

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD 測試數據圖表

AS SSD Benchmark是Alex Schepeljanski開發的SSD性能測試工具,作為一個快餐類的測試軟件,AS SSD Benchmark在SSD用戶中廣為使用,其中的64線程測試主要用於測試程序啟動和控制器優化。

和CDM 相比它提供了更多的測試選項以及一個清晰明了的測試結果得分。

浦科特Plextor PX-128M2P 在這個測試中獲得了第一,總分為844,而緊隨其後的是更新固件為0009 的鎂光M4 128GB,得分是818。

總括而言,基於Marvel 控制器的三款SSD 都有不錯的表現,浦科特PX-128M2P 的寫入訪問時間結果更是相當的驚艷。

基於SandForce 的SSD 中只有OCZ Vertex3 MAX IOPS 略高於Crucial M4 64GB,其餘的表現比較一般。

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

Crystal DiskMark

CDM 的歷史比AS SSD Benchmark 更早,以使用簡單著稱,從3.x 版起CDM 默認採用隨機數模板。

在4KiB 隨機讀取測試中,OCZ Vertex 3 60GB 取得第一,有點出人意表,不過差別其實都不是很大。

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD Benchmark

Anvil SSD BENCHMARK

Anvil SSD BENCHMARK

Anvil Storage Utilities 是The SSD Review 開發的SSD 測試工具,其中包括了類似AS SSD Benchmark 測試結果匯總得分功能,不過它還有更多強大的地方,例如有不同壓縮率的隨機數據模板、多種傳輸塊、QD 數量、LBA 大小、測試時長甚至還有一個耐久度測試等,某種程度它上比IOMeter 更豐富,但是缺乏IOMeter 的自動批處理以及其他一些特色。Anvil Storage Utilities 有一個灰色不可使用的IOMeter 測試數據導入功能,根據開發者說法,這個功能尚未完成。

打開Anvil Storage Utilities 後是SSD Benchmark 界面,其中有多種測試結果顯示,例如響應時間、數據吞吐量、指令吞吐率、數據吞吐率等,使用很簡單,點右邊的Run 按鈕即可。和AS SSD Benchmark、CDM 類似,Anvil SSD Benchmark 只支持已格式化分區的測試,不支持原始盤測試。

我們在這個測試中,採用了100% 不可壓縮隨機數和0-Fill 的測試結果,所以你會在條形圖中看到每個SSD 有兩組測試結果。

正如你所看到的那樣,基於SandForce 的OCZ Vertex 3/MI、影馳Laser GT、海盜旗ForceGT 在0-Fill 寫入測試中有非常出色的表現。

但是當遇到不可壓縮數據的時候,測試結果更偏向Marvell 的三款SSD。

比較有意思的是,在QD1 的時候,OCZ Vertex 3 的4KiB 隨機寫入測試結果0Fill 比不可壓縮快了一倍,而其他的三款SandForce 此時並沒有表現出特別驚豔之處,到了QD4、QD16後,它們才表現出了比較誇張的0-Fill 測試結果。

IOMeter 設備級性能測試結果

IOMeter 測試結果

IOMeter 測試結果

IOMeter 測試結果

IOMeter 測試結果

IOMeter 測試結果

IOMeter 測試結果

IOMeter 測試結果

在採用完全隨機寫入模板(文檔上說是以16MiB 為單位,所以還是存在著一點被壓縮的可能,但是依據我試圖對IOMeter 生成的測試文件再壓縮來看,已經沒啥再壓縮的餘地)測試下,基於SandForce 的4 款SSD 在4KiB 寫入測試中只有1300~1800 IOPS 的成績,其中OCZ Vertex3 60GB 大約是1800IOPS 而其餘的都死1300~1500 IOPS。

相比之下,基於Marvell 控制器的M4 128GB、PX-128M2P 4KiB 寫入測試結果分別是277x、28xx IOPS,M4 64GB 則是17xx IOPS。

在小傳輸塊讀取測試測試方面,SandForce 明顯不敵Marvell。

IOMeter 模擬特定負載模板測試

IOMeter數據庫服務器存取模板

IOMeter 數據庫服務器存取模板

IOMeter數據庫服務器存取模板

IOMeter 文件服務器存取模板

IOMeter 文件服務器存取模板

IOMeter 文件服務器存取模板

IOMeter 工作站存取模板

IOMeter 工作站存取模板

IOMeter 工作站存取模板

IOMeter 工作站存取模板

IOMeter 工作站存取模板

IOMeter 工作站存取模板

在數據存儲模板模擬測試中,PX-128M2P 是明顯的贏家,這可能和它有較大的板載DDR3 內存作為緩存有關係,實際上擁有DRAM 作為板載緩存的Marvell 陣營這這個測試中的表現都比較好。

PCMARK 07 存儲系統

PCMARK 07 存儲系統測試結果

PCMARK 07 存儲系統測試結果

PCMARK 07 存儲系統測試結果

PCMARK 07 存儲系統測試結果

PCMARK 07 存儲系統測試結果

PCMARK 07 存儲系統測試結果

PCMARK 07 存儲系統測試結果

PCMark 07 的存儲子系統測試是基於I/O 軌跡回放的模式,在Futuremark 提供的PCMARK07 白皮書中,有70% 的內容是介紹存儲系統的測試細節,遠遠多於其餘測試子項目。

從總分來看的話,PX-128M2P 獲得了第一,第二名是OCZ Vertex 3 MAX IOPS,第三名是Crucial M4 128GB。

從各個子項目的測試,出現明顯差別是圖片導入和啟動應用程序這兩個,前者模擬從USB 盤向Windows Live Photo Gallery 導入68 張圖片(434MiB),後者模擬在桌面上打開用PCMark 07 1.0規格書和IE。

Sysmark 2012 整機系統測試

SYSMARK 2012 測試結果

SYSMARK 2012 測試結果

SYSMARK 2012 測試結果

SYSMARK 2012 測試結果

SYSMARK 2012 測試結果

SYSMARK 2012 測試結果

SYSMARK 2012 測試結果

BAPCo Sysmark 2012

BAPCo Sysmark 2012

BAPCo Sysmark 2012

BAPCo Sysmark 2012

BAPCo Sysmark 2012

BAPCo Sysmark 2012

BAPCo Sysmark 2012

我們花費了數天時間來運行Sysmark 2012,不過從測試結果來看,7 款SSD 並沒有在這個測試中表現出什麼差別,根據Sysmark 2012 的白皮書,這的確不是一個I/O 敏感型的測試套裝,和HDD 相比,SSD 只能為Sysmark 2012 帶來20% 左右的提升。

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 2011 2.0

PCINLIFE Storage Benchmark 是國內首個基於I/O 軌跡捕獲、回放的存儲測試,目前的版本是PCINLIFE Storage Benchmark 2011 2.0,包括了辦公應用、遊戲測試兩大項目,其中游戲部分有三個最新遊戲:Crysis 2 、Battlefield3、Total War Shugon 2 的啟動、場景載入以及退出,而辦公應用包括了Office 2010、IE9、Foxmail 7、Photoshop CS5、Adobe Acrobat 9 Pro、FastStone Image Viewer 等軟件,重播I/O 軌跡而生成的沙盤文件有1312 個,216 個目錄,總容量達到32 GiB 以上。

這次我們提供的測試結果包括了吞吐率、平均服務響應時間、最長服務響應時間三個,服務響應時間是指數據請求發出到完成傳輸所消耗的時間。為了防止操作系統的內存緩存對測試成績構成過多的干擾,我們的測試結果選自冷啟動後的第一次運行,每個SSD 都要完成三次完整的測試,在確定誤差低於3% 的情況下取成績最高的一次為最終的測試結果。

從測試結果來看,OCZ Vertex MAX IOPS、Crucial M4 64GiB 辦公應用錄得了最快的性能,而Battlefield 3、Total War Shugon 2、Crysis 的第一名均是Crucial M4 64GiB,緊隨其後的是Crucial M4 128GB。

Plextor PX-128M2P 在辦公應用測試中出現了32.7 ms 的最高延遲,遠高於其他SSD,根據測試後的軌跡文件分析,是"optimizing_gpu_performance.ppt"這個文件上出現的。

測試總結

在SATA II 問世之時,曾經有不少人提出疑問,硬碟的持續傳輸速率也就是100MB/s 出頭,3Gbps 的帶寬根本用不上呀。不過到了現在,一些高端的插卡式SSD 已經向PCIE 2.0 x8 的峰值帶寬提出挑戰,如果不是出於耗電、成本的考量,現在的2.5 英寸SSD 可能已經輕鬆突破6Gbps 的關口。

在我們這次測試中,所有的SSD 都能實現450MiB/s 以上的大數據塊持續讀取性能,有些還達到了530MiB/s 的水平,離SATA 3.0 6Gps 的理論帶寬750MiB/s 雖然還有一些距離,但是這個界面在現實其實也就是575~600MiB/s 的水平,基本上只要再推一下,6Gbps 界面成為潛在瓶頸並不奇怪。

依據我們的PCINLIFE Storage Benchmark 2011 軌跡分析,日常的應用絕大部分操作都是讀取操作,讀寫比例一般是20:1 以上,對基於NAND 閃存的SSD 來說是不錯的操作環境。

從上面的多個測試來分析,我們認為這次的優勝者是Plextor PX-128M2P 和Crucial M4 128MB,SandForce 陣營雖然在設備級測試中表現一般,但是在應用級測試中也有較好的表現,例如OCZ Vertex3 MAX IOPS。

產品型號 報價 每GB 價格
浦科特PX-128M2P 128GB 1320 10.31
鎂光Crucial M4 128GB 1259 9.84
海盜旗Force GT 120GB 1750 14.83
影馳Laser GT 120GB 1599 13.33
OCZ Vertex 3 Max IOPS 120GB 1320 11
鎂光Crucial M4 64GB 679 10.61
OCZ Vertex 3 60GB 728 12.13

容量價格比

SDD 的容量是非常關鍵的指標,雖然128GB 和120GB 的SSD 在物理容量上其實都是128GiB,但是對用戶來說LBA 才是他們真正可以使用的,為了節省DRAM 緩存、PCB 成本而保留的閃存物理空間看不見摸不著,更重要的是,從容量/價格性價比的圖表來看,SandForce 陣營在緩存上節省的成本並沒有在價格上得到體現。

綜合測試成績和價格、技術支持等因素,我們決定給予鎂光Crucial M4 128MB 和浦科特PX-128M2P 最佳推薦獎,讀者應該依據各人的應用需求、預算等因素作自行判斷,我們的獎項僅供參考。

 

 

【最新消息】泰國洪水只是藉口!揭露硬碟漲價緣由

繼上次的硬碟漲價消息後,如果最近想要更換硬碟的話,不彷考慮SSD固態硬碟試試

阿雷裝了美光的M4-64GB後,電腦存取速度真的提升很多

但如果是以儲存資料用的話,還是建議買傳統硬碟使用唷!!(容量較大)





感謝收看~~!!


原文出處

arrow
arrow
    文章標籤
    ssd 鎂光 m4 固態硬碟
    全站熱搜

    阿雷 發表在 痞客邦 留言(2) 人氣()