2019年12月4日,下午的SCM、第五代存儲&閃存控制器應用論壇上,華為IT產品線介質領域架構師唐鯤為我們帶來《SCM、介質與應用系統設計思考》的主題演講,為我們介紹了SCM介質的整體行業發展,以及如何在SCM的應用、設計上面臨的挑戰與效益,如何能在協同設計里運用不同的SCM介質的一些思考。

首先,介紹一下SCM介質的種類。除了英特爾公司的傲騰,整個SCM介質產業包括非常多的種類,包括MRAM、ReRAM、FRAM、Fast NAND,其中Fast NAND的時延是經過優化和改造的,也包括納米技術碳基半導體的NRAM,這個產業在初步形成之中。

Source: IDC

到2022年,估計這個產業可以達到約27億美元。而整個內存產業的產值是1000億美金的規模。 從商業角度看,在SCM介質也還在初期發展階段。眼前,一些PCM、Fast NAND SCM介質落地應用,速度也出乎了一些人的意料。畢竟SCM介質在很多方面,比如說時延,不如DRAM,壽命也不行,DRAM的壽命幾乎認為是無限的。還有部分時延好的SCM類型,但它的容量不是很大,不能達到內存應用的標準。 不管怎樣,它已經開始少量落地,并為整個IT,云應用做出了嘗試和實踐。

這張圖可以更清晰地看到,各種SCM介質的種類以及材料。整個半導體產業都在尋求更多材料的解決方案。這些解決方案,可以帶來對內存容量需求的補充,同時也可以帶來對于內存性能的提升。

SCM可以處在兩個位置。從CPU往下,它可以位于SRAM和DRAM中間,時延可以小于內存的時延。這部分SCM介質目前的發展,比如像(MRAM),它利用是自旋霍爾效應,研發出快速介質,但它的容量比較小,成本也相對比較高。它的性能,時延和壽命卻遠好于例如已經開始實驗應用的PCM類型介質。

已經落地的一些新介質商用的話,屬于PCM種類的新介質。它的時延可以達到幾百個納秒,對于整個未來數據價值的引導,需要考慮SCM介質在多個方面(性能超越內存,容量更具性價比)發揮作用,共同加速應用。

多核CPU的頻率提升。CPU的性能每年大概60%的持續增長。專家們經常也提到,DRAM性能容量增長相對落后于CPU。我們要提升每個CPU核的內存訪問性能,如果只是基于比內存還高時延的PCM介質,可能會出現一些不如人意的地方。

上圖中左邊,內存性能墻,需要一種低時延SCM介質,姑且稱為Fast SCM。在未來的大數據以及AI訓練,需要非??焖俚膬却嬖L問應用,提供非常低的時延。配合多核的算力,可以充分發揮出性能,解決帶寬的問題。

    右邊這個,要尋求一種低成本SCM,成本較低,容量較大,在多核CPU的環境中,不管云應用還是企業環境中,每個CPU可以使用內存容量,性能效果都重要。兩方面都是需要兼顧和結合。同時,我們也看到,整個資本市場對于SCM介質的投入變得非常積極,面對應用的需求,數據越來越活躍,但系統的能耗和成本是不能飆升。

    如果我們應用了SCM介質,可以從哪些方面具體得到收益?舉三個例子。

新興應用加速和簡化:第一個例子,也許大家比較熟悉AI的訓練,需要大量的模型數據,大量的樣本數據,這個數據量,可能會達到幾TB到十幾TB,甚至幾十TB規模。

同時,目前AI訓練開發中,AI程序編寫是非常高效的,恨不得把所有的數據全部放在內存中,訓練的速度就比較快。比如你老板說,明天我們希望知道前一個月所有銷售的情況,給你有限的的時間來進行訓練學習,比如1~2天,把訓練好的模型、學習的結果,應用到下一個銷售周期的推理中,自動決定我該怎么樣調整我的在線商城的商品推薦。 只有1~2時間,所以時間是非常寶貴的。

一個月的銷售數據數據,客戶交流信息(文字,語音)等是很大量的,需要從IO的存儲設備讀取這些數據樣本,再進行NN網絡的訓練獲得關鍵特征,這個過程是在有限內存中操作的。中間結果,又要通過IO的方式輸出。雖然AI芯片本身連接的內存是非??斓?,帶寬也是非常高的內存,但是在這個過程中,有大量IO的操作,不管是從性能,還是從編程的方便性來說,都沒有達到行業最理想的效果。

程序員的理想是我寫的程序不想跟IO打交道,IO操作這個概念,很多時候是拖慢整個系統性能的關鍵因素。上圖這行右邊,我們把IO的操作除去,利用SCM介質實現直接內存的操作,一個CNN,一個AI訓練的過程,對性能提升,簡化了整個編程的過程。

數據快速恢復“所用即所存”:如上圖,對于我們的數據庫或者存儲系統,如果出現了一個業務的恢復場景,不管是什么原因,它需要恢復的時候,是需要從持久化的HDD或者SSD介質中導入數據的,導入后,才能在內存中構建它的數據結構,并且提供服務操作。

從上電開始到提供服務,需要等待IO操作的時間,這個時間對于大型數據系統來說是很漫長的(分鐘,甚至小時級)。如果使用了SCM介質,可以實現新型的內存數據庫和存儲系統設計。它的服務可以瞬間拉起,并且預熱,不需要等待IO重建內存數據結構的過程。很多客戶對你服務的恢復和停止時間有苛刻的要求,如果你的系統中出現了需要恢復的情況,時間長意味著競爭力差。這個地方可以實現一個數據庫新的架構,叫“所用即所存”。

你的數據,鏈表,矩陣…  在內存中,運行時是怎么提供服務的,最后就可以類似地(適當一些修改checkpoint),直接地持久化存儲到SCM,這是非常大的架構和應用收益。

SCM支撐綠色DC:傳統的DDR內存需要動態刷新,這個數據不刷新,數據就丟失了,或者就會出現錯誤。如果運用了持久化的SCM介質,可以減少這種刷新。整個數據中心內存容量運用越來越多,很大一部分能耗是不停地在內存刷新中,消耗了能源。所以我們認為第三個收益,它可以從數據中心能耗綜合成本得到收益的。

除了這些,SCM是不是只有收益?我記得在2010年,我們去新加坡的時候,很多專家告訴我們,PCM這種新介質沒有前途了,更早的時候,很多公司,其實已經研發了PCM類的SCM介質(例如~2009三星的手機),但是認為MRAM才是更好的方向,因為MRAM比PCM的時延很低很多,達到了內存的時延效果。但目前時延比內存大很多的PCM介質(Intel,美光),Fast NAND(東芝)又開始在服務器應用中嘗試落地。這些說法誰對,誰不對?我覺得,一切還是要看用市場應用來說話。

我們除了看到SCM應用的可能收益以外,看一下它具體會面臨哪些問題和挑戰。

我們用好一個介質做系統不是那么容易,需要很清楚看到應用它的挑戰。第一個,尷尬的時延。

假設我們有兩個裝修工人,需要同時進行打孔作業,現場只有一把電鉆,正在用電鉆的工人,平時正常打孔就可以了,但有時候,要等待木頭的膠水干了,才能繼續打孔工作。2分鐘等待膠水干。

這2分鐘,是把這個電鉆借給另外一個工人,還是繼續占用這個電鉆,等這個膠水干了?這個選擇是非常尷尬的。因為我借給另外一個工人,很可能,第2個工人如果開始他自己的工作,也需要1-2分鐘(例如需要換鉆頭,擺放位置啟動工作)。所以,出現了非常尷尬的時延情況,“借”還是“等”?

PCM新介質應用的場景類似。我如果把電鉆借給了另外一個人,啟動任務的開銷時間很長,而等待膠水干,也有一個等待時間。在這種情況下,很難決策。

比喻歸比喻,回到系統,上圖右邊這個CPU核,它在運行的時候,突然要訪問PCM介質了,很可能這次訪問沒有命中它的CPU內的Cache,DRAM也沒有緩沖,必須要訪問慢速的,但容量很大、密度很高的PCM,訪問時間會達到300納秒。CPU到底是繼續等待PCM的數據返回,還是把CPU調度執行其他的任務task n?如果我要調度其他的任務,軟件專家們都知道,這個調度本身也是有開銷的(us級)。如果,剛好把任務的各種環境上下文拉起來準備好,正要運行的時候,PCM這邊的介質數據又返回了,task1也在等待,介質本身這個時延在實際數據業務應用中是非常尷尬的。

如果CPU核等于例子中的“電鉆”,它是一個非常寶貴的資源。CPU如果等待SCM介質數據讀取返回的時間和次數過多,將使得整個系統的算力浪費,你花錢買的CPU也并不便宜。

值得高興的是,不管是從學術界還是產業界,在這個問題上都有了一些非常好的解決算法。這個案例就提出來,也是告訴大家,數據系統要用發揮好SCM存儲的價值,需要發揮出CPU、操作系統和應用之間的相互緊密的配合,一切才剛剛開始。

下面再來看一個挑戰和思考。

大家可以想想,我們對應用的內存訪問模型很清楚,還是很陌生?IO的性能和模型,大家非常清楚,因為經常要進行優化,因為IO是整個計算產業中時延最糟糕的一個東西,所有關注性能的IT從業者人都長期在它的泥潭中(SSD替換HDD有緩解)。我們花了大量的時間去優化IO最終交付給客戶,每秒鐘交易的數量,每個交易延時是怎么樣的,如何并發,如何降低任務等待調度,也有大量的工具、經驗和成功實踐可以參加。

但是!你清楚你應用的內存訪問模型嗎?相信,這個方向對很多人來說都是一個非常陌生的領域。內存讀寫有隨機和順序訪問的差別嗎?自己的某個應用哪些地址的內存被多次訪問,哪些地址的內存只是偶爾訪問?你關注過嗎?怎樣的內存訪問模型,會造成PCM應用實際性能糟糕? 可能得不償失,比如這個介質慢一點,或者另一種介質快一點,該怎么用它們?

把經常訪問的數據,用在比內存還快的SCM介質中去。把不經常訪問的數據,放到稍微慢一點的SCM介質中去,這是最直接的想法。但是難的是,哪些時候,哪些空間,哪些頁面怎么存放? 非常頻繁地訪問怎么處理? 哪些是長期,幾十分鐘不訪問的內存該如何存儲性價比更好?需要非常多的實踐,應用分析來支撐系統設計。

我們可以看某一個虛擬機,實際可以獲得它的內存訪問特征模型,重點關注它的內存頁面訪問標志,而不會關心頁面中的內容。

我們會看到16G的內存空間內有大量的空間分配了,但并沒有訪問,中間那個彩色的餅圖,大概2GB訪問過的內存,稱為溫熱內存數據。在長達6分多鐘,95個周期的統計范圍內,只有2GB的空間被訪問,其他14GB的內存空間一直沒有訪問。6分鐘,如果把這14GB內存用于其他在線服務,可能支撐其完成十萬次的交互了。

再深入2GB訪問內存中,深藍色部分,每個周期都有訪問,我們認為它是極熱。這部分的數據所占比例很小。統計的經驗告訴我們,我們希望這部分數據在CPU內以一種非??焖俚拇鎯臻g來支撐,而不是要CPU去等待,等待那個“膠水”,太慢的SCM介質會是性能的災難。

設計的原則是,不能夠因為我頻繁地從慢的介質中訪問數據,使得我的整個系統CPU計算能力浪費而受到損失。這個案例告訴我們,SCM介質應用同時也是需要CPU、OS配合,感知數據的內存訪問模型,也需要非常多的創新給出解決方案。目前CPU和硬件緩存算法簡單粗暴(例如LRU),能起到一些效果,但是它可能是處于SCM應用早期的一種方法。

面對SCM的應用,可以回頭看看SSD的應用過程,可以看到SSD剛剛出來的時候,就只是少量的加速,把熱文件和數據放在里面。到現在,大家看一下,SSD的應用有非常多深入應用思考,如:識別熱數據和冷數據,熱數據和冷數據不能放在同一個塊里,放同一個塊會帶來更多的磨損。SCM的時期還處在2008年的SSD時代,對于內存訪問模型還需要持續地探索。

總結一下前面的案例看到的問題。內存業務的中堅力量仍然是50納秒的內存,是最常用的,最容易獲得的解決方案。如果認為將來整個數據系統需要容量,同時又需要性能,希望先要從更加廣闊的介質中去選擇,這個介質業界現在有很多研究。當然最成熟的,行業中比較早期嘗試落地的傲騰(Intel,美光)的解決方案已經推出了,也包括Fast NAND(東芝,三星)的應用將在2020年落地。

超低時延的介質,它的容量很低,但更能夠在整個系統中發揮出它的配合的性能(前面內存模型案例中極熱部分比例很少)。同時,要用好一個SCM介質,任何系統都要付出非常大的代價和努力,要非常長的時間,包括它的CPU設計、介質設計、內存體系架構的修改,整個和業務的配合,怎么動態的調度,這方面不是很短期內就能夠完成的。 在這樣一個協同構建生態的局面下希望未來出現對整個產業界有貢獻的解決方案。

    總結:

    1、數據業務的需求對傳統內存、帶寬和容量形成壓力。

    2、SCM介質可以在提升性能、簡化編程、持久化、快速恢復等痛點上形成收益?,F在已經有一些廠家在持久化地快速恢復上,包括數據庫,已經形成了一些收益。

    3、面對應用的內存模型差異,希望考慮多種的SCM介質類型的配合,發揮出真正的性能優勢。

    4、CPU操作系統服務以及軟件配合。最后還是要看實際的效果表現。

    5、SCM仍處在整個實踐的初期,包括內存業務模型,可靠性模型,都處于實踐的初期。積極地推動這種生態,去積極推動這種實踐,才能使得整個高性能且穩定可靠的解決方案。

    華為將以致力于每比特價值最大,每比特成本最優,數據安全可靠,持續地投入芯片和基礎IT技術的研究。

未經允許不得轉載:存儲在線-存儲專業媒體 » 華為IT產品線介質領域架構師唐鯤:SCM、介質與應用系統設計思考
分享到

崔歡歡

相關推薦

精品国产午夜肉伦伦影院,双性老师灌满浓jing上课h,天天做天天爱夜夜爽,攵女乱h边做边走