非揮發性記憶體帶來的挑戰與機會
以浮閘式(Floating Gate)半導體電路所設計NAND Flash非揮發性記憶體,已在行動裝置與工控應用上大量普及,隨著NAND Flash由SLC轉到MLC、TLC,寫入效能越來越差,耐用度與可信賴性度也越來越不堪;業界正評估像相變記憶體(Phase Change Memory,PCM)技術,以直追DRAM的讀取速度以及兼顧NVM非揮發性記憶體的特質下,會對現今在電腦系統、行動裝置與儲存媒體的應用模式造成什麼改變。
國立台灣大學資訊工程學系教授郭大維指出,非揮發性記憶體(Non-Volatile Memory;NVM)的儲存優勢,在於耐震與逐漸下滑的成本,省電、高效能與延展性。隨著Flash製程技術伴隨著摩爾定律不斷進化,單位容量成本不斷下降,價格也越來越有競爭力,像是NAND Flash在2012年就達到229億美元的市場規模;但是Flash效能與品質信賴度卻是接連降級,操作上的技術限制也越來越多。
從DRAM、PCM、NAND與傳統HDD的參考規格來看,DRAM讀寫速度高達1GB/s以上,讀寫耗能為 0.8J/GB、1.2J/GB,待機功耗100mW,讀寫延遲時間為20-50ns(64B)~ 1-3us (4KB)、20-50ns(64B)~1-3us (4KB);而傳統HDD讀寫耗能高達65J/GB,待機功耗10W/TB,讀寫延遲為~ 5ms (512B)到40ms(4KB)。像NAND Flash,讀寫速度5~40MB/s(per Die),其讀寫功耗為1.5J/GB、17.5J/GB,待機功耗1~10mW/GB,不僅比傳統HDD還省電,沒寫資料的待機模式下也比DRAM還省電。但NAND Flash會有區塊抹寫次數1,000?100,000的限制。
目前NAND Flash市場定位儲存媒體,不僅大量使用在消費性電子產品,伺服器與儲存裝置,連強調強固性與長壽命工控應用也在使用,同時也帶來了新的市場機會與廠商排名更動。全球前25大儲存裝置廠,除希捷(Seagate)、威騰(WD)等傳統硬碟廠商之外,其它幾乎都是以NVM設計的SSD固態硬碟而起來。
郭大維指出,ISCA09研究論文做過測試研究來說,以32GB PCM來替換8GB DRAM,執行時間減少53%;在桌上型電腦或伺服器用4GB PCM換掉原有的4GB DRAM,整體耗能節省65%。PCM記憶體讀寫耗能僅1J/GB、6J/GB,待機功耗1mW/GB比NAND Flash、DRAM還省電,而且跟DRAM一樣可以只修改、抹除一個位元,而不是像NAND Flash以整個Page/Blocks做寫入╱抹除的限制;PCM寫入時速度約為50?100MB/s(per Die),讀寫延遲時間~ 50ns(64B)~3us(4KB)、~ 1us(64B)~64us(4KB),連待機模式都比DRAM省電;僅寫入速度、功耗與延遲時間大於DRAM,但比NAND Flash表現還佳,這就是PCM廠商宣稱PCM可以取代DRAM的理由,但PCM一樣有抹寫次數的限制(100萬次?1億次)。
從上而下或者由下而上的取代效應
郭大維指出,依UNIX、Linux等OS開機時間分析,可能有高達45%的時間花費在I/O等待,若直接用NVM非揮發性記憶體來取代DRAM,那整個電腦的運作模式變成常態時間處於關閉(Off)的狀態;僅讀取NVM記憶體位元資料時才開啟(On)的模式。這也會衝擊到現有的記憶體管理(Memory Management)的思維,因為NVM比DRAM便宜,因此不需要做虛擬記憶體的調度設計。
這種NVM系統也對既有的檔案系統、檔案讀寫作業模式,OS甚至是撰寫程式的思維帶來衝擊。當整個記憶體空間就是NVM時,不再需要透過檔案系統、資料庫來申請運作代碼、資料庫索引值,指定記憶體區域後後把資料讀進DRAM的瑣碎模式;隨意的要更動哪個內容就直接更動,也無須考慮把更動的內容寫回儲存媒體的問題。而NVM系統對堆砌各種軟體協定的作業系統平台,自然也會帶來衝擊。
從儲存媒體觀點來看,非揮發記憶體晶片實體層,在上面堆砌一個基本驅動程式,然後接一個原生檔案系統(Native File System)層;而作業系統的檔案系統,藉由區塊裝置的模擬(Block Device Emulation)與原生檔案系統連接。一般NAND Flash儲存裝置的運作架構,其原生檔案系統層由FTL(Flash Translation Layer)與MTD (Memory Technology Device)所建構,每一顆Flash晶片規劃出成千上萬個Blocks,每個Blocks再區分成幾十個最小寫入單位的Page。
Flash記憶體操作特性就是只能更動、寫入一個page,而抹除作業則以一個區塊為單位。因此像NAND Flash存取上,大多採取一有新資料就先寫到未使用的新記憶頁的Write once法則,舊的記憶頁僅標示成可使用,待日後做Garbage Collection時才回收使用;而Flash控制晶片會使用Wear-Leveling平均抹寫技術,平均並攤平Flash晶片內每個Block被抹寫的次數,避免資料反覆寫到同一個區塊的機率,以提昇Flash整體使用壽命。而像是MLC Flash來說,還需考慮到只能從較低頁號碼依序寫入、有限制次數且相鄰頁存取、讀寫干擾的問題。
檔案系統對邏輯區塊做讀寫時,控制晶片會經由FTL層做邏輯對實體區塊查表轉換作業,由於採一對一的區塊轉換,等同用相同Flash容量的DRAM來儲存轉換表資料浪費成本,有許多像是依Flash區塊數做除以特定值與取餘數方式,計算出兩段式索引參照值的方式;另一種則是動態配置邏輯╱實體區塊轉譯表的鏈結式結構,以平衡邏輯區塊轉換效率與轉換表空間。
隨著製程演進,NAND Flash讀寫耐用度越來越低,資料保存能力越來越差。以SLC來說,讀取、寫入速率、抹寫耐用度、資料錯誤率分別為235Mbps、23Mbps、60,000次、10的負9次方(十億分之一),到MLC變成109Mbps、6.3Mbps、3,000次、10的負6次方(百萬分之一),而TLC變成27Mbps、0.8Mbps、500次與10的負5次方(十萬分之一),錯誤率越來越高,可以透過控制晶片的ECC做修正,但這會大幅增加控制晶片的成本與執行資源。因此對NAND Flash來說,技術上的問題與挑戰,在於效能、單位儲存成本與可信賴度。
PCM相變記憶體的發展趨勢與應用位階
前面提到PCM記憶體是定位在介於DRAM與NAND Flash之間,單位儲存成本比NAND Flash但比DRAM便宜。相較於NAND Flash而言,PCM具備至少一百萬次的抹寫耐用度的可信賴度,以及比NAND Flash還快的寫入速度,讀取速度更是跟當前DRAM相當,只有寫入資料時比DRAM的耗能高與較長的延遲時間。目前業界對於PCM的應用位階,傾向於以PCM做為介於DRAM與Disk之間的中介記憶體,或可直接做為記憶體(Memory) 使用;另外一方面則是做為較快速的儲存裝置,需要設計由PCM往上疊出一個PCM-FS實體檔案系統層,由Disk往上疊出一個EXT3格式的檔案系統,PCM-FS與EXT3再往上堆砌疊出虛擬檔案系統(Virtual File System,VFS)。
郭大維提到,兩年前三星(Samsung)曾嘗試在旗下某款手機,直接用PCM記憶體來取代DRAM與NAND FLASH,並做市場測試。PCM要取代DRAM,如何應付CPU以奈秒等級(nano sec)快速要求配置記憶體,要能快速找到一個被寫入最少次數的PCM記憶頁,同時應付區域性經常存取(Locality in Access),並兼顧對PCM記憶單元電路寫入次數最小化的隨機或特定演算法平均抹寫法則等問題。
台大針對這項議題做過一些測試研究,像是最近使用的零搜尋的虛擬記憶體管理技術(Age-Based PCM Wear Leveling with Nearly Zero Search Cost),將最近用過的記憶頁拋棄,並擺置在分頁轉譯表離的越遠、越不容易在被存取到越好。另一種是參考PCM記憶頁特性的陣列存取排序法,紀錄每一個PCM記憶頁被存取的次數與頻率,然後做排序,使系統永遠能配置到最少(最新鮮)的PCM頁,以增加平均抹寫的效用與耐受度。
當進一步PCM要導入伺服器時,得考慮像快取(Caching)、緩衝(Buffering)、資料遷移(Data Migration)與應用探勘(Application Tuning)等跨應用層之間的最佳化,資料庫架構必須重新翻新,從索引值設計、記錄與修復、複製支援到應用程式的探索語法等都得改變。像導入最小寫入索引化(Indexing and Small Writes)與封包╱快取化(Packing and Caching)的技術研究。