中文简体版   English   星期六 ,12月 14日, 2019 (台北)
登入  申請試用  MY DIGITIMES231
 
科技產業報訂閱
活動+

固態硬碟之技術發展與應用趨勢

  • DIGITIMES企劃

台灣科技大學資訊工程系助理教授謝仁偉

學術界針對當前固態硬碟(Solid State Drive,SSD)的發展上,提出應用交叉存取、分拆與管線化技術三合一的等平行化技術,並點出今日SSD卡在電腦系統南北橋的瓶頸,以及業界所提出雙埠DRAM/Flash的因應方案;並討論到如何以SLC/MLC、DRAM/PRAM等技術發展混合架構SSD,次世代非揮發性記憶體的優劣,最後則提到了SSD建構的RAID磁碟陣列下,加速同步位元演算的深度技術議題的討論…

提升固態硬碟頻寬╱效能的平行化技術

台灣科技大學資訊工程系助理教授謝仁偉,指出SSD採多通道(Multi-Channel)設計,SSD主控晶片透過一組匯流排連接到DUMBO,DUMBO通常設計有四組以上可獨立運作的Channel Manager(通道管控電路);每個channel manager內,由控制邏輯晶片與NAND介面連接並存取1〜8個NAND Flash單元,會設計兩組buffer將NAND讀與寫的動作區隔開來,以Interrupt-Driven(中斷驅動)的I/O處理方式可提昇讀、寫區隔的效率。

分拆技術(Striping)則是將主控晶片的需求分拆,例如把一個寫入128個磁區分拆成兩個寫入64個磁區的動作,交叉技術(Interleaving)則將能同時處理作業各自放到不同channel,管線化(Pipelining)則是依序將每個需求緊密且沒有停滯間隔的排入單一通道。從前端先使用Interleaving將I/O需求分門別類,進行stripping分拆,分拆的子I/O需求以管線化方式排入channel,將這三種技術一併應用,整個SSD的平行化效能就得以提昇。

高效能PC與SSD運作架構探索

傳統PC架構上將SSD視為等同硬碟,並連接於I/O頻寬較低的南橋晶片,而南橋藉由內部DMA控制器經過SATA介面向SSD取得資料,再傳輸到北橋的DRAM控制器與DRAM溝通。當系統產生Page Fault時,DRAM資料不能直接跟位於SSD直接溝通,須經過DRAM控制器,傳送DMA命令到南橋,接著由南橋的DMA控制器藉由SATA介面讀取SSD資料,資料再從南橋DMA控制器轉到北橋DRAM控制器後回存到DRAM。以目前PATA、SATAⅡ僅提供133、300MB/s傳輸頻寬下,系統得反覆從DRAM、北橋、南橋、SSD之間的關卡層層轉達而出現效能瓶頸。

因此有學者以主控介面、資料並行處理兩方面著手,像提出把SSD直接連接在北橋當作高速裝置,傳輸介面改為DDR,同時SSD讀寫資料的平行化處理的概念。三星提出了Dual-Port的One DRAM來搭配Dual-Port SSD,其Dual-Port DRAM具備四個可獨立讀寫運作的Bank,而Dual Port SSD則採取雙SSD介面埠設計,DDR運作的控制晶片,以雙通道控制兩個獨立讀寫NAND Flash記憶體單元,連接到Dual-Port DRAM做為SSD資料緩衝區,使得CPU對SSD的讀寫可以雙向化、平行化作業。

另外學者也提出North Bridge Dual Port(NBDP)架構,把DMA控制器移至北橋晶片,並且將有內建DMA控制器的雙埠SSD,直接連接道北橋,由北橋晶片DMA控制器與雙埠SSD連通直接建立相互平行化聯繫的直通高速管道,據分析在真實工作環境下可以提昇2.67倍的頻寬效能。

資料去重複技術延展SSD使用壽命

謝仁偉指出延長SSD使用壽命的三大關鍵為:持續寫入的總資料流量、預留空間大小,以及系統韌體對garbage collection與wear-leveling機制的處理效率。像Intel SSD可預留最多25%空間做為內部bad block替換與其他運作之用。學者提出Content Access Flash Transaction Layer(CAFTL)演算架構,每次有一筆資料寫入時,系統判斷若SSD已有該筆資料,則僅註記而不執行寫入動作,要讀取該筆資料時,則藉由原先註記到找出儲存該筆資料的來源去擷取。

散亂處理單元(Hashing Unit)不以單一NAND Flash分頁去細分,避免造成過多的比對動作影響效能。目前Hashing Unit對每一筆資料做160bit SHA-1指紋編碼與系統比對;指紋儲存單元(Fingerprint Store)僅保留最近最常被讀取到資料指紋,其設計上區分成N個段落,每個段落由一連串的佔4KB大小的記憶體資料桶(bulket)所組成,每個bulket紀錄著經過存取次數排序的資料指紋對應項目,每個項目儲存有個對應的鎖鑰配對、160bit資料指紋編碼、32bit儲存位置與8bit參考值,並由160bit資料指紋值做為索引。

32bit儲存位置標示所對應的實體區塊定址(PBA)或虛擬區塊定址(VBA),8bit參考值紀錄該筆資料被引用的次數。儲存資料時藉由二元樹(Binary Search)、限制範圍或最常引用的搜尋法則,若沒有則這筆資料配置一個新的bulket並紀錄於零散鍊結內;如果某筆資料被引用、讀寫的次數較多,則經過排序之後再比較前面的儲存位置並註記起來。這種機制可大致去除掉冗長反覆的資料,相對的使儲存空間得以變大。

他指出CAFTL這種間階對映的演算法,挑戰在於當實體頁被移到某處(例如進行garbage collection)時,必須要很快速的辨識邏輯頁與實體頁對映並迅速更新對映狀態,而該實體頁正被許多邏輯頁指向引用時,此時系統逆向回溯去找出原始指向該實體頁的每一個邏輯頁項目,而無法進行garbage collection,除非頁對映狀態解除。

CAFTL應用到兩階段間接對映(Two-level Indirect Mapping),傳統LBA邏輯頁建立第一層查詢表格,裡面可紀錄實體頁(PBA)或虛擬頁(VBA),而虛擬頁被引用時,還需多一道VBA轉PBA的查詢表格來對映到實體頁,這樣當有多個邏輯頁(LBA)引用某個虛擬頁(VBA)項目,當SSD正在做Garbage Collection時,僅需修改VBA轉PBA的表格內一個項目即可。

為了不讓CAFTL反覆查詢資料重複性,以及索引表格建立的動作拖慢系統效能,其加速方式在於重複寫入不是備份系統常見的情況,簡單的方式是不需做到100%精準,僅僅將寫入資料的前四個位元組做取樣位元組;其次可利用SSD Controller用32bit CRC來取代160bit SHA-1指紋編碼並做權重排序,則運算負擔課降低10倍。第三種加速方式則是以SSD讀寫Cache佔用95%接近滿載,或降到一半以下作為depublication的關閉╱開啟機制,而比對重複性資料時也可以只比對前面幾頁確認即可。

混合記憶體架構的SSD設計

謝仁偉提到在次世代非揮發性記憶體中,似乎PRAM相位變化記憶體,在儲存容量╱成本上比較有機會,但它仍需面對溫度以及功耗的問題,短期仍無法取代掉NAND Flash,但是可應用於像DRAM搭PRAM的混合架構應用。以少數Endurance較高的SLC來搭配大量Endurance較低的MLC或TLC記憶體,這一類型混合SSD架構(Hybrid SSD)的挑戰在於:1.資料存放的位置。需考慮資料存取的格式與特性,像較常讀寫的資料、系統鏈結表、FAT表等放在SLC。2.資料移出。因為資料不可能都存放於容量較小的SLC,因此要有個判斷機制,將一些資料移出改放在MLC。3.針對SLC、MLC特性做Wear Leveling平均抹寫的機制。

Hybrid SSD能控制把最常寫入的資料都寫入SLC時,有用的資料區塊比較不易出現在尾端,因應循序抹除的特性,SLC可以呈現比較完美的Wear-Leveling。在真實環境下像是虛擬記憶體分頁檔案或小型的零散位址轉譯表,經常讀寫的資料熱區域僅佔比較少的磁區數,特別適合於寫入SLC。而Hybrid SSD控制器偵測當SLC Flash損耗快超過MLC Flash時,則轉向寫入MLC Flash。而MLC Flash管理上使用第一階邏輯區塊轉實體區塊的對映機制,而Hybrid SSD可能加入第二階對映機制來修正記憶頁鍊結。

至於DRAM/PRAM混合架構的儲存裝置,以DRAM做為PRAM的快取,也有學者提出雙環形快去機制(Double Circular Caching Scheme)來處理。

應用Flash特性的Partial Parity Cache機制

謝仁偉指出當前SSD越來越普及化的情況下,如何應用Flash與其他NVM特性,來降低RAID運算的負擔。以RAID5(4+1)為例,有五個SSD裝置(Chip0〜Chip4),分別寫入D0〜D4資料,以及P0同步位元資料,同步位元會分均分配、打散到各SSD裝置。工作負擔在於當其中一部SSD資料D0更新成D0’時,需要先讀取D0與P0,運算出新的同步位元P0’之後再把D0’、P0’寫回SSD,一共有兩道讀取與寫入的步驟。

而Partial Parity Based Delayed Parity機制,在於追加一個由以PRAM、MRAM或電池供電的DRAM做為partial parity cache(PPC),當資料有更新時,由於更新前的資料仍存放在PPC,故可就近從PPC取得舊資料並與新資料直接運算產生新的同步位元並存放於PPC,而不會額外增加讀出與寫入的負擔。