劉宗凡
編者按:從2010年到2016年,高手論技欄目伴隨大家走過了一個又一個春秋,多年來,我們關注技術與應用的初衷從未改變。如今,在“互聯網+”的浪潮中,對新技術的探索、對成熟技術的創新應用、對不同技術的關聯性思考……我們仍在繼續。新年伊始,主持人和嘉賓將分兩期探討固態硬盤的前世今生。
為什么會有固態硬盤出現

1965年,美國《電子學》雜志發表了摩爾的論文《讓集成電路填滿更多的組件》,文中預言半導體芯片上集成的晶體管和電阻數量將每年增加一倍,這就是IT界著名的“摩爾定律”的雛形。在隨后的時間,這個定律經過不斷的修正,有了一個通俗的說法,即電腦的性能每18個月提高一倍,價格下降一半。半個世紀以來,摩爾定律都神奇而準確地起著作用。
但2010年以后,集成電路的發展卻在不斷放緩,CPU的頻率不再一味沖高,電腦性能也無法在一年半之內翻番。出現這樣的結果有很多原因,當然除了集成電路發展的局限外,還有一個更重要的瓶頸就是硬盤。
傳統的溫氏硬盤在存儲體系中起著非常重要的作用。溫氏硬盤是一種機械硬盤,當硬盤需要讀寫數據時,磁頭會移動到相應位置,盤片也會轉動以便讓發生數據操作的區域到達指定位置。這些動作所需要的時間就是尋道時間和潛伏周期。由于發生裝置要移動,所以這些過程都需要幾毫秒的時間。此外,機械硬盤采用了隨機寫入方式,增加了機械硬盤的讀寫工作量,在最極端的情況下,磁頭和盤片會進行多次移動和轉動,最后的工作時間也會成倍增加。

機械硬盤很容易就達到了發展的極限,臺式機硬盤(3.5寸)的轉速長期以來都以每分鐘7200轉工作,而筆記本硬盤(2.5寸)基本上都以每分鐘5400轉工作。即使在對性能要求很高的服務器領域,SCSI硬盤也只能達到每分鐘10000轉。芯片領域在摩爾定律的見證下一路狂奔,CPU、內存等產業日新月異,電腦部件里只有硬盤邁著蝸牛般的步伐更新,甚至停滯不前。
固態硬盤的出現,讓硬盤突破瓶頸成為可能。固態硬盤(SSD,Solid State Drive)是用固態電子存儲芯片陣列制成的硬盤,由控制單元和存儲單元(Flash芯片、Dram芯片)組成,其中沒有任何機械組件,和機械硬盤的工作原理完全不同。固態硬盤是用充、放電的方式讀寫硬盤,這個尋道時間基本上可以視為0。正是因為不需要機械動作,所以固態硬盤一出生,其速度上體現出來的優勢就非同一般,現在硬盤也有望跟上摩爾定律的步伐。上頁圖1為機械硬盤的內部結構圖,上頁圖2為固態硬盤的內部結構圖。
固態硬盤和機械硬盤有什么區別
因為固態硬盤和機械硬盤工作的原理不同,所以兩者優缺點都非常明顯,我將通過上面的表格來對比它們的不同。
從上表可以看出,固態硬盤最大的優勢體現在它的讀寫速度上,一般可以達到機械硬盤的4~5倍,特別是在隨機讀寫和小文件讀寫上,固態硬盤的優勢更突出。機械硬盤的最大優勢是便宜,以1TB機械硬盤的價格,基本上只能買到128G的固態硬盤。所以現在我們組裝電腦最常見的是用小容量的固態硬盤做系統工作盤,大容量的機械硬盤做數據存儲盤,混合模式能較好地解決容量與價格之間的矛盾。

固態硬盤還有一個很容易被垢病的缺點,就是它的壽命問題。使用SLC作為儲存介質的硬盤可以擦寫10萬次,MLC只有1萬次擦寫,而機械硬盤理論上是沒有擦寫次數限制的。當然,如果正確地使用固態硬盤,則可以大大延長它的壽命。
不過,如果從其他方面對比,固態硬盤就具有較大的優勢,無論是抗震能力、功耗、噪音、發熱等,固態硬盤天生就比機械硬盤優越。特別要注意的是,因為固態硬盤在工作時不停地根據需要進行數據的讀寫,所以刪除或丟失的數據是很難找回來的,而機械硬盤則不會主動對丟失的數據進行覆蓋,只要用戶在刪除或丟失數據后不在相應分區寫入新的數據,一般是可以通過技術手段來恢復的。當然Windows的各種臨時文件也會在硬盤寫入數據,所以最安全的辦法是發現數據丟失以后,立即停用當前硬盤。
哪些因素影響固態硬盤性能
有意思的是,雖然固態硬盤領域風起云涌,但全球兩大機械硬盤制造商希捷和西部數據卻按兵不動,遲遲不見發布固態硬盤。現在生產固態硬盤的廠商很多,產品又良莠不齊,同樣容量的固態硬盤的價格卻相差很大。是什么影響了固態硬盤的品質呢?
固態硬盤由主控、閃存、緩存三大核心部件組成,其中主控對性能影響最大,其次是閃存。和U盤類似,在固態硬盤中,最核心的功能部件是主控。主控其實就是一個處理器,主要是基于ARM架構,它的運算能力決定了固態硬盤的性能。現在主流的固態硬盤主要采用以下四個級別的主控。
1.旗艦級SSD主控:Marvell 88SS9189
旗艦級SSD的主控和閃存相輔相成,主控起到更大的作用。旗艦級SSD的主控至少是“大雙核”級別,往往一顆主控用于處理閃存的數據,另一顆主控處理SATA3.0接口數據。這造就了旗艦級SSD突出且均衡的讀寫速度、隨機讀寫IOPS值。
2.高端SSD主控:Barefoot3 M10
這類SSD主控和旗艦級SSD的主控在能力上不分伯仲,廠家為了區分檔次,拉低了高端SSD的主控頻率,或者搭配性能稍遜的閃存。
3.中端SSD主控:SM2246EN
SSD根據就低不就高的水桶原則,由兩個小型的ARM內核或者單核RISC架構,它追求性能和成本之間的平衡。
4.入門級SSD:JMF667H
入門級SSD主打低價,兼顧主流性能。它的閃存和主控的采購成本受到嚴格限制,該級別SSD的閃存談不上具有尖端性能,卻要保證基本的閃存P/E壽命,匹配強力主控更是白搭。因此像JMF667H這類結構簡單、采購價格便宜、性能不弱的主控,備受SSD廠家的青睞。
和其他廠商不同的是,三星的所有部件基本上都自己生產,固態硬盤不管是主控、閃存顆粒還是緩存芯片都采用自家研制的產品,在穩定性上很有保障。三星840系列固態硬盤采用自主研發的全新Cortex-R4的第四代MDX主控S4LJ204X01-8030,該主控采用三核心MDX控制器,可同時執行讀取數據、寫入數據和優化處理的命令,搭配三星自家優化的非壓縮算法,使其在多線程調度下的IOPS能力更具優勢。
除了主控,閃存類型對固態硬盤性能影響也不小。從性能上來說,從高到低分別是SLC、MLC、TLC三種閃存,當然這三種閃存的價格壽命長短也是從高往低排列的。性能更好,壽命更長,也意味著價格更昂貴。
固態硬盤特有的垃圾回收和TRIM指令是什么
固態硬盤與機械硬盤工作原理有一個很大的區別,即固態硬盤在寫入數據時不能直接覆蓋原來的數據,必須先把原來的數據擦除才能再寫入。隨著時間的推移,用戶在固態硬盤不斷寫入數據,剩余空間越來越少,于是必須擦除以前的無用數據才能繼續寫入。
一塊固態硬盤中的閃存可以被分為許多個塊(block),每個塊(block)又可以分成不同的頁面(pages)。數據可以直接以頁面為單位寫入,但是要想刪除數據卻需要以塊為單位。因此要刪除無用的數據,固態硬盤首先需要把一個塊內包含的有用的數據先復制粘貼到全新的塊中的頁面內,這樣原來塊中包含的無用數據才能夠以塊為單位刪除,刪除后,才能夠寫入新的數據。硬盤不斷進行數據的移動,將有用數據集中到某些塊中,將無用數據塊擦除,以便以后寫入,這個過程就是固態硬盤的垃圾回收機制。
那么垃圾回收的最好時機是什么時候呢?現在主要有兩種思想:一種是利用空閑時間回收。另一種是實時回收。利用空閑時間進行垃圾回收最大的好處是提高了效率,當操作系統要在硬盤寫入數據時,硬盤已經做好了優化,可以直接在空閑塊寫入。它的缺點是有些數據可能很快就會被刪除,如一些臨時文件,也被寫入了有用數據塊,但其實很快就要被刪除,因此導致了一些無用的寫入操作,加速了硬盤的磨損。實時垃圾回收不會對數據即時進行移動,減少了對硬盤寫入的次數,但這需要固態移動有很高的讀寫速度,否則用戶會有延遲感。
對于操作系統來說,它對硬盤的管理是邏輯上的。也就是說,它只知道刪除了硬盤上的某個文件,卻不理解硬盤的物理結構。而硬盤只知道某個地址的某個塊有沒有數據,卻不知道它們是有用的還是無用的。因而硬盤在進行垃圾回收的時候,就會把所有數據不分青紅皂白都當成有用數據歸集,這不僅耽誤了時間,還大大增加了硬盤的磨損。于是微軟聯合各大固態硬盤廠商開發了TRIM技術,簡單來說就是操作系統告訴固態硬盤主控哪些數據占據的地址是“無效”的。這是固態硬盤最重要的技術,它減少了數據被重寫的次數,更多的空閑空間可以回收,需要移動的數據減少,提高了硬盤的性能,同時也延長了硬盤的壽命。目前Windwos 7及Windows Server 2008以上的操作系統才支持TRIM指令,古老的Windows XP已經被微軟放棄了。
固態硬盤特殊的垃圾回收機制會導致固態硬盤在使用一段時間后變慢。有一個最簡單的辦法會讓固態硬盤恢復到出廠時的速度,那就是將它格式化。當然作為系統盤存在的分區,用戶是不能進行格式化的,但可以使用TRIM重置。英特爾固態硬盤工具箱(Intel SSD Toolbox)可以在Windows下執行,操作簡單,效果顯著。當然要注意TRIM重置要對硬盤進行一次完整的擦寫操作,這對硬盤的壽命是有一定影響的,所以建議不要頻繁進行TRIM操作。
固態硬盤壽命問題有那么可怕嗎
固態硬盤使用的閃存有擦寫次數限制,所以大家對固態硬盤有一個疑問:它的壽命到底有多長?會不會用兩三年就報廢?
目前常用的閃存芯片從好到壞分為SLC、EMLC、MLC、TLC,它們的壽命也各自不同。①SLC:寫入壽命最長,速度最快,據估測大概有100000次擦寫壽命。但是成本過高,現在已經基本不用在固態硬盤了。②EMLC:寫入壽命僅次于SLC,成本也很高,一般作為服務器級固態硬盤使用。③MLC:大約有3000~10000次擦寫壽命,現在的主流固態硬盤基本上使用它。④TLC:壽命最差,只有1000~2000次。在攻克壽命難題以后,現在也逐漸走上了主流舞臺,很多物美價廉的固態硬盤都使用了TLC閃存。
固態硬盤在工作時,并不會在一個塊長期進行讀寫操作,主控會根據某些算法將讀寫區域盡量分布在硬盤的各個位置,這就是硬盤的磨損平衡。閃存完全擦寫一次叫做一次P/E,主流閃存的壽命達到了3000~5000P/E。通常一個人每天寫入的數據在5G左右,假如用戶是一個數據狂人,每天產生50G的數據擦寫,對一個128G容量的固態硬盤來說,2天左右完成一次P/E,那么即使3000P/E,也足夠我們無故障使用16年左右。對于家用電腦來說,用戶能堅持使用8年恐怕已經達到極限了,16年后估計用戶早就把這個硬盤丟到爪哇國去了。
當然,如果用戶是一個完美主義者,要盡可能延長硬盤的壽命,有些方面還是要注意的。
1.不影響工作效率的數據盡量寫入機械硬盤
例如,我們下載電影、歌曲等,完全可以將其放在機械硬盤內,減少固態硬盤的讀寫。程序可以安裝在固態硬盤,以體現它的速度。
2.不使用磁盤碎片整理
機械硬盤在使用一段時間后,由于反復寫入和刪除文件,磁盤中的空閑扇區會分散到整個磁盤中不連續的物理位置上,從而使文件不能存儲在連續的扇區里。這樣,再讀寫文件時就需要到不同的地方去讀取,增加了磁頭的來回移動,降低了磁盤的訪問速度。進行磁盤碎片整理以后可以提高磁盤的訪問速度。但這個經驗千萬不要延續到固態硬盤。固態硬盤沒有磁頭驅動機構,它的電子讀寫原理能夠非常快速地找到任何一塊中的數據,尋址時間幾乎可以忽略不計,不需要進行碎片整理。另外,磁盤碎片整理會對硬盤進行頻繁地擦寫,會減少閃存壽命。用戶不僅不要手動整理碎片,還要在計劃任務中將碎片整理關閉。
3.禁用Windows的預讀功能
Windows的預讀功能(Prefetch)和超級預讀功能(Superfetch),會在用戶運行常用應用程序或功能操作前,事先將這些項目所涉及的頁面緩存到內存,這樣當用戶運行頁面被提前緩存到內存的項目時,系統就可以直接將內存中已有的頁面調入應用程序對應的內存數據空間,從而減少日常應用對硬盤的隨機訪問頻率,大幅度提升應用程序啟動速度。但對固態硬盤的讀取速度來說,這個操作意義不大,可以禁用這一功能,減少大量預讀文件產生。
4.取消休眠功能
機械硬盤時代,電腦冷啟動需要的時間比較長,休眠能使下次開機速度大大加快。但使用固態硬盤作為啟動盤,啟動速度往往可以達到10秒左右,和休眠不相上下了,所以休眠從功能上來說意義也不大了。電腦休眠要將內存鏡像寫入硬盤,對大內存用戶來說寫入數據也是可觀的,特別是對用處不大的功能來說完全是一種浪費,可以在電源管理里把休眠功能關閉。
5.移動或關閉虛擬內存
虛擬內存要占用內存的1.5~2.5倍左右的硬盤空間,對于大內存用戶來說,可以把虛擬內存放到機械硬盤,甚至將虛擬內存關閉。如果內存達8G甚至16G,用戶完全可以拿出一部分內存用RamDisk模擬一個硬盤分區,將虛擬內存放在這個分區。因為內存的極速是固態硬盤無法比擬的,在性能上也會有所提升。當然,到底是犧牲效率把虛擬內存放在機械硬盤還是犧牲內存把虛擬內存放在內存模擬的硬盤,這需要用戶權衡。
6.其他方式
關閉系統還原、磁盤索引、Windows搜索優化、8.3命名規則、系統日志等,都可以在一定程序上減少硬盤的讀寫操作。
從目前固態硬盤損壞的案例來看,基本上是主控固件損壞,或者是固件設計不合理,而因為閃存芯片壽命問題損壞的還很少。
不過,考慮到SSD固態硬盤也存在售價昂貴、硬件損壞后數據較難恢復等問題,如果能利用新型的技術使得其壽命無限延長,那么降低用戶的消費成本以及確保數據能完好保存將變為現實。目前正在研究的一項名為NRAM的新型技術將取代現有的NAND閃存技術,有可能無限延長固態硬盤的使用壽命。
固態硬盤你用好了嗎
雖然換了固態硬盤以后,電腦的性能會得到一定提升,但卻并不一定能把固態硬盤的潛能都發揮出來。要使固態硬盤發揮出它的全部威力,需要注意以下事項。
1.操作系統
Windows 7和Windows Server 2008及以上操作系統才支持TRIM指令,對家用來說Windows 7無疑是首選,Windows XP就不要去浪費硬件了。
2.硬盤接口
目前主流的硬盤接口主要有SATA2和SATA3。SATA3屬于SATA2下一代升級版,往下完全兼容,也就是說固態硬盤在SATA2和SATA3接口上都可以使用。它們的區別在于SATA2只支持理論上最快3GB/s的傳輸速率,也就是實際每秒傳輸數據一般低于300MB,這對于現在讀寫達到500MB的固態硬盤來說是一種極大的浪費。SATA3接口理論上支持6GB/s的傳輸速率,完全可以滿足目前固態硬盤的吞吐。
3.硬盤模式
現在的硬盤主要工作在IDE和AHCI模式。
IDE(Integrated Drive Electronics),即電子集成驅動器,指把“硬盤控制器”與“盤體”集成在一起的硬盤驅動器。
AHCI(Serial ATA Advanced Host Controller Interface),即串行ATA高級主控接口/高級主機控制器接口。AHCI通過包含一個PCI BAR(基址寄存器),來實現原生SATA功能,允許存儲驅動程序啟用高級串行ATA功能。AHCI模式是專門為SATA接口而設計的,支持SATA接口特性,如本機命令隊列(NCQ)和熱插拔。NCQ使硬盤從一個程序跳轉到另一個程序時能加快速度,在理論上可以提高SATA硬盤約30%的性能。
IDE模式可以將SATA盤映射模擬成普通IDE硬盤,無需額外加載SATA驅動(但不支持任何SATA接口的新特性),兼容性很強,可以用于Windows XP及以上的所有操作系統。為了保持高兼容性,克隆版的操作系統常常會選擇IDE模式來制作鏡像。如果在BIOS開啟AHCI模式,可能會導致系統藍屏。在使用機械硬盤時,兩種模式的性能差別并不明顯,在Windows XP時代IDE模式基本占據了統治地位。但是使用固態硬盤時,兩者差距明顯,所以一定要在BIOS里開啟AHCI模式才能充分體現出固態硬盤的性能來。
4.分區
根據固態硬盤的垃圾回收機制,當分區剩余的容量很少時,會頻繁地進行垃圾回收,系統滿負荷工作,加劇了某些地方的磨損。因此在分區時,可以適當保留部分空間不用,用于固態硬盤的優化操作,如磨損平衡、壞塊映射、垃圾回收等。當然,有些硬盤廠商已經提前將部分空間留出來,市場上有些標記為120G的固態硬盤,就是廠家隱藏了8G的空間。在使用時也盡量不要讓分區裝滿數據,以確保固態硬盤能高效工作。因為每個分區都要留一些空間,所以分區時也要少分區,避免過于浪費。
5.4K對齊
硬盤在進行高級格式化時,會默認為每個扇區分配512個字節。隨著硬盤容量不斷增大,這個方案就出現了很多缺點,于是廠商又將每個扇區擴展為4096個字節,也就是4K扇區。所謂“4K對齊”就是符合“4K扇區”定義格式化過的硬盤,并且按照“4K扇區”的規則寫入數據。在NTFS6.x以前的規范中,數據的寫入點正好會介于兩個4K扇區之間,也就是說即使是寫入最小量的數據,也會使用到兩個4K扇區,這樣對寫入速度和讀取速度都會造成很大的影響,還會增加固態硬盤不必要的寫入次數,減少固態硬盤的壽命。
對于新硬盤來說,要做到4K對齊很簡單,就是使用Windows 7安裝時系統自帶的工具格式化分區,默認就是4K對齊的。如果因為某些原因必須使用Windows XP系統,則可以使用DiskGenius進行硬盤分區,分區時要選中“對齊到下列扇區數的整數倍”(如圖3)。
如果已經用克隆版安裝了系統或安裝了windows XP又不想重裝,可以用AS SSD Benchmark檢查一下4K對齊情況,軟件打開后左上角會顯示檢查結果,圖4顯示4K已對齊。如果沒有4K對齊,又不想重新安裝系統,可以用Paragon Alignment Tool實現無損對齊。
6.固件
對硬盤進行操作的軟件固化在硬盤中,稱為固件。這和主板中的BIOS有些類似。有些廠商在硬盤發布后可能對固件進行升級,以進一步優化硬盤的操作,提高性能,延長壽命。所以用戶要關注相關廠商的升級信息,及時升級,讓硬盤能在最佳的環境中工作。
7.驅動程序
Windows 7開始已經具備對固態硬盤的比較優秀的支持,使用自帶的驅動程序也能較好地工作。Intel開發的RST驅動更能提升固態硬盤的性能,很多固態硬盤更新RST驅動以后都能獲得比較明顯的性能提升。但要注意也有少數固態硬盤在使用RST驅動以后性能會降低,用戶要注意使用適當的驅動程序。
安裝了固態硬盤,可能有些人潛意識里會認為整機性能會有很大的提升。確實,用了固態硬盤以后,系統啟動速度會快很多,很多程序在打開時都無需等待,上網時打開網頁也秒開了,給人的感覺是電腦性能好了很多。其實,固態硬盤所提升的,肯定是和硬盤讀寫密切相關的操作。因為硬盤速度以前是制約整臺電腦的瓶頸,所以換了固態硬盤后會給人煥然一新的感覺。那些不太依賴硬盤速度的軟件,如大型游戲,在載入時會快一些,但在運行時并不會有脫胎換骨的感覺,因為游戲最依賴的是顯卡和CPU的計算能力。我們不能奢望固態硬盤成為萬能良藥,能解決所有的電腦性能問題,因為電腦性能還適用木桶理論,當硬盤成為最短的那塊木板時,固態硬盤就是補齊這個缺陷的最好手段。如果硬盤這塊短板已經增強,但用戶還是覺得電腦不夠用,那就該換新電腦了。