2019年12月4日,下午的SCM、第五代存儲(chǔ)&閃存控制器應(yīng)用論壇上,華為IT產(chǎn)品線介質(zhì)領(lǐng)域架構(gòu)師唐鯤為我們帶來《SCM、介質(zhì)與應(yīng)用系統(tǒng)設(shè)計(jì)思考》的主題演講,為我們介紹了SCM介質(zhì)的整體行業(yè)發(fā)展,以及如何在SCM的應(yīng)用、設(shè)計(jì)上面臨的挑戰(zhàn)與效益,如何能在協(xié)同設(shè)計(jì)里運(yùn)用不同的SCM介質(zhì)的一些思考。
首先,介紹一下SCM介質(zhì)的種類。除了英特爾公司的傲騰,整個(gè)SCM介質(zhì)產(chǎn)業(yè)包括非常多的種類,包括MRAM、ReRAM、FRAM、Fast NAND,其中Fast NAND的時(shí)延是經(jīng)過優(yōu)化和改造的,也包括納米技術(shù)碳基半導(dǎo)體的NRAM,這個(gè)產(chǎn)業(yè)在初步形成之中。
Source: IDC
到2022年,估計(jì)這個(gè)產(chǎn)業(yè)可以達(dá)到約27億美元。而整個(gè)內(nèi)存產(chǎn)業(yè)的產(chǎn)值是1000億美金的規(guī)模。 從商業(yè)角度看,在SCM介質(zhì)也還在初期發(fā)展階段。眼前,一些PCM、Fast NAND SCM介質(zhì)落地應(yīng)用,速度也出乎了一些人的意料。畢竟SCM介質(zhì)在很多方面,比如說時(shí)延,不如DRAM,壽命也不行,DRAM的壽命幾乎認(rèn)為是無限的。還有部分時(shí)延好的SCM類型,但它的容量不是很大,不能達(dá)到內(nèi)存應(yīng)用的標(biāo)準(zhǔn)。 不管怎樣,它已經(jīng)開始少量落地,并為整個(gè)IT,云應(yīng)用做出了嘗試和實(shí)踐。
這張圖可以更清晰地看到,各種SCM介質(zhì)的種類以及材料。整個(gè)半導(dǎo)體產(chǎn)業(yè)都在尋求更多材料的解決方案。這些解決方案,可以帶來對(duì)內(nèi)存容量需求的補(bǔ)充,同時(shí)也可以帶來對(duì)于內(nèi)存性能的提升。
SCM可以處在兩個(gè)位置。從CPU往下,它可以位于SRAM和DRAM中間,時(shí)延可以小于內(nèi)存的時(shí)延。這部分SCM介質(zhì)目前的發(fā)展,比如像(MRAM),它利用是自旋霍爾效應(yīng),研發(fā)出快速介質(zhì),但它的容量比較小,成本也相對(duì)比較高。它的性能,時(shí)延和壽命卻遠(yuǎn)好于例如已經(jīng)開始實(shí)驗(yàn)應(yīng)用的PCM類型介質(zhì)。
已經(jīng)落地的一些新介質(zhì)商用的話,屬于PCM種類的新介質(zhì)。它的時(shí)延可以達(dá)到幾百個(gè)納秒,對(duì)于整個(gè)未來數(shù)據(jù)價(jià)值的引導(dǎo),需要考慮SCM介質(zhì)在多個(gè)方面(性能超越內(nèi)存,容量更具性價(jià)比)發(fā)揮作用,共同加速應(yīng)用。
多核CPU的頻率提升。CPU的性能每年大概60%的持續(xù)增長(zhǎng)。專家們經(jīng)常也提到,DRAM性能容量增長(zhǎng)相對(duì)落后于CPU。我們要提升每個(gè)CPU核的內(nèi)存訪問性能,如果只是基于比內(nèi)存還高時(shí)延的PCM介質(zhì),可能會(huì)出現(xiàn)一些不如人意的地方。
上圖中左邊,內(nèi)存性能墻,需要一種低時(shí)延SCM介質(zhì),姑且稱為Fast SCM。在未來的大數(shù)據(jù)以及AI訓(xùn)練,需要非??焖俚膬?nèi)存訪問應(yīng)用,提供非常低的時(shí)延。配合多核的算力,可以充分發(fā)揮出性能,解決帶寬的問題。
右邊這個(gè),要尋求一種低成本SCM,成本較低,容量較大,在多核CPU的環(huán)境中,不管云應(yīng)用還是企業(yè)環(huán)境中,每個(gè)CPU可以使用內(nèi)存容量,性能效果都重要。兩方面都是需要兼顧和結(jié)合。同時(shí),我們也看到,整個(gè)資本市場(chǎng)對(duì)于SCM介質(zhì)的投入變得非常積極,面對(duì)應(yīng)用的需求,數(shù)據(jù)越來越活躍,但系統(tǒng)的能耗和成本是不能飆升。
如果我們應(yīng)用了SCM介質(zhì),可以從哪些方面具體得到收益?舉三個(gè)例子。
新興應(yīng)用加速和簡(jiǎn)化:第一個(gè)例子,也許大家比較熟悉AI的訓(xùn)練,需要大量的模型數(shù)據(jù),大量的樣本數(shù)據(jù),這個(gè)數(shù)據(jù)量,可能會(huì)達(dá)到幾TB到十幾TB,甚至幾十TB規(guī)模。
同時(shí),目前AI訓(xùn)練開發(fā)中,AI程序編寫是非常高效的,恨不得把所有的數(shù)據(jù)全部放在內(nèi)存中,訓(xùn)練的速度就比較快。比如你老板說,明天我們希望知道前一個(gè)月所有銷售的情況,給你有限的的時(shí)間來進(jìn)行訓(xùn)練學(xué)習(xí),比如1~2天,把訓(xùn)練好的模型、學(xué)習(xí)的結(jié)果,應(yīng)用到下一個(gè)銷售周期的推理中,自動(dòng)決定我該怎么樣調(diào)整我的在線商城的商品推薦。 只有1~2時(shí)間,所以時(shí)間是非常寶貴的。
一個(gè)月的銷售數(shù)據(jù)數(shù)據(jù),客戶交流信息(文字,語(yǔ)音)等是很大量的,需要從IO的存儲(chǔ)設(shè)備讀取這些數(shù)據(jù)樣本,再進(jìn)行NN網(wǎng)絡(luò)的訓(xùn)練獲得關(guān)鍵特征,這個(gè)過程是在有限內(nèi)存中操作的。中間結(jié)果,又要通過IO的方式輸出。雖然AI芯片本身連接的內(nèi)存是非??斓?,帶寬也是非常高的內(nèi)存,但是在這個(gè)過程中,有大量IO的操作,不管是從性能,還是從編程的方便性來說,都沒有達(dá)到行業(yè)最理想的效果。
程序員的理想是我寫的程序不想跟IO打交道,IO操作這個(gè)概念,很多時(shí)候是拖慢整個(gè)系統(tǒng)性能的關(guān)鍵因素。上圖這行右邊,我們把IO的操作除去,利用SCM介質(zhì)實(shí)現(xiàn)直接內(nèi)存的操作,一個(gè)CNN,一個(gè)AI訓(xùn)練的過程,對(duì)性能提升,簡(jiǎn)化了整個(gè)編程的過程。
數(shù)據(jù)快速恢復(fù)“所用即所存”:如上圖,對(duì)于我們的數(shù)據(jù)庫(kù)或者存儲(chǔ)系統(tǒng),如果出現(xiàn)了一個(gè)業(yè)務(wù)的恢復(fù)場(chǎng)景,不管是什么原因,它需要恢復(fù)的時(shí)候,是需要從持久化的HDD或者SSD介質(zhì)中導(dǎo)入數(shù)據(jù)的,導(dǎo)入后,才能在內(nèi)存中構(gòu)建它的數(shù)據(jù)結(jié)構(gòu),并且提供服務(wù)操作。
從上電開始到提供服務(wù),需要等待IO操作的時(shí)間,這個(gè)時(shí)間對(duì)于大型數(shù)據(jù)系統(tǒng)來說是很漫長(zhǎng)的(分鐘,甚至小時(shí)級(jí))。如果使用了SCM介質(zhì),可以實(shí)現(xiàn)新型的內(nèi)存數(shù)據(jù)庫(kù)和存儲(chǔ)系統(tǒng)設(shè)計(jì)。它的服務(wù)可以瞬間拉起,并且預(yù)熱,不需要等待IO重建內(nèi)存數(shù)據(jù)結(jié)構(gòu)的過程。很多客戶對(duì)你服務(wù)的恢復(fù)和停止時(shí)間有苛刻的要求,如果你的系統(tǒng)中出現(xiàn)了需要恢復(fù)的情況,時(shí)間長(zhǎng)意味著競(jìng)爭(zhēng)力差。這個(gè)地方可以實(shí)現(xiàn)一個(gè)數(shù)據(jù)庫(kù)新的架構(gòu),叫“所用即所存”。
你的數(shù)據(jù),鏈表,矩陣…? 在內(nèi)存中,運(yùn)行時(shí)是怎么提供服務(wù)的,最后就可以類似地(適當(dāng)一些修改checkpoint),直接地持久化存儲(chǔ)到SCM,這是非常大的架構(gòu)和應(yīng)用收益。
SCM支撐綠色DC:傳統(tǒng)的DDR內(nèi)存需要?jiǎng)討B(tài)刷新,這個(gè)數(shù)據(jù)不刷新,數(shù)據(jù)就丟失了,或者就會(huì)出現(xiàn)錯(cuò)誤。如果運(yùn)用了持久化的SCM介質(zhì),可以減少這種刷新。整個(gè)數(shù)據(jù)中心內(nèi)存容量運(yùn)用越來越多,很大一部分能耗是不停地在內(nèi)存刷新中,消耗了能源。所以我們認(rèn)為第三個(gè)收益,它可以從數(shù)據(jù)中心能耗綜合成本得到收益的。
除了這些,SCM是不是只有收益?我記得在2010年,我們?nèi)バ录悠碌臅r(shí)候,很多專家告訴我們,PCM這種新介質(zhì)沒有前途了,更早的時(shí)候,很多公司,其實(shí)已經(jīng)研發(fā)了PCM類的SCM介質(zhì)(例如~2009三星的手機(jī)),但是認(rèn)為MRAM才是更好的方向,因?yàn)镸RAM比PCM的時(shí)延很低很多,達(dá)到了內(nèi)存的時(shí)延效果。但目前時(shí)延比內(nèi)存大很多的PCM介質(zhì)(Intel,美光),Fast NAND(東芝)又開始在服務(wù)器應(yīng)用中嘗試落地。這些說法誰對(duì),誰不對(duì)?我覺得,一切還是要看用市場(chǎng)應(yīng)用來說話。
我們除了看到SCM應(yīng)用的可能收益以外,看一下它具體會(huì)面臨哪些問題和挑戰(zhàn)。
我們用好一個(gè)介質(zhì)做系統(tǒng)不是那么容易,需要很清楚看到應(yīng)用它的挑戰(zhàn)。第一個(gè),尷尬的時(shí)延。
假設(shè)我們有兩個(gè)裝修工人,需要同時(shí)進(jìn)行打孔作業(yè),現(xiàn)場(chǎng)只有一把電鉆,正在用電鉆的工人,平時(shí)正常打孔就可以了,但有時(shí)候,要等待木頭的膠水干了,才能繼續(xù)打孔工作。2分鐘等待膠水干。
這2分鐘,是把這個(gè)電鉆借給另外一個(gè)工人,還是繼續(xù)占用這個(gè)電鉆,等這個(gè)膠水干了?這個(gè)選擇是非常尷尬的。因?yàn)槲医杞o另外一個(gè)工人,很可能,第2個(gè)工人如果開始他自己的工作,也需要1-2分鐘(例如需要換鉆頭,擺放位置啟動(dòng)工作)。所以,出現(xiàn)了非常尷尬的時(shí)延情況,“借”還是“等”?
PCM新介質(zhì)應(yīng)用的場(chǎng)景類似。我如果把電鉆借給了另外一個(gè)人,啟動(dòng)任務(wù)的開銷時(shí)間很長(zhǎng),而等待膠水干,也有一個(gè)等待時(shí)間。在這種情況下,很難決策。
比喻歸比喻,回到系統(tǒng),上圖右邊這個(gè)CPU核,它在運(yùn)行的時(shí)候,突然要訪問PCM介質(zhì)了,很可能這次訪問沒有命中它的CPU內(nèi)的Cache,DRAM也沒有緩沖,必須要訪問慢速的,但容量很大、密度很高的PCM,訪問時(shí)間會(huì)達(dá)到300納秒。CPU到底是繼續(xù)等待PCM的數(shù)據(jù)返回,還是把CPU調(diào)度執(zhí)行其他的任務(wù)task n?如果我要調(diào)度其他的任務(wù),軟件專家們都知道,這個(gè)調(diào)度本身也是有開銷的(us級(jí))。如果,剛好把任務(wù)的各種環(huán)境上下文拉起來準(zhǔn)備好,正要運(yùn)行的時(shí)候,PCM這邊的介質(zhì)數(shù)據(jù)又返回了,task1也在等待,介質(zhì)本身這個(gè)時(shí)延在實(shí)際數(shù)據(jù)業(yè)務(wù)應(yīng)用中是非常尷尬的。
如果CPU核等于例子中的“電鉆”,它是一個(gè)非常寶貴的資源。CPU如果等待SCM介質(zhì)數(shù)據(jù)讀取返回的時(shí)間和次數(shù)過多,將使得整個(gè)系統(tǒng)的算力浪費(fèi),你花錢買的CPU也并不便宜。
值得高興的是,不管是從學(xué)術(shù)界還是產(chǎn)業(yè)界,在這個(gè)問題上都有了一些非常好的解決算法。這個(gè)案例就提出來,也是告訴大家,數(shù)據(jù)系統(tǒng)要用發(fā)揮好SCM存儲(chǔ)的價(jià)值,需要發(fā)揮出CPU、操作系統(tǒng)和應(yīng)用之間的相互緊密的配合,一切才剛剛開始。
下面再來看一個(gè)挑戰(zhàn)和思考。
大家可以想想,我們對(duì)應(yīng)用的內(nèi)存訪問模型很清楚,還是很陌生?IO的性能和模型,大家非常清楚,因?yàn)榻?jīng)常要進(jìn)行優(yōu)化,因?yàn)镮O是整個(gè)計(jì)算產(chǎn)業(yè)中時(shí)延最糟糕的一個(gè)東西,所有關(guān)注性能的IT從業(yè)者人都長(zhǎng)期在它的泥潭中(SSD替換HDD有緩解)。我們花了大量的時(shí)間去優(yōu)化IO最終交付給客戶,每秒鐘交易的數(shù)量,每個(gè)交易延時(shí)是怎么樣的,如何并發(fā),如何降低任務(wù)等待調(diào)度,也有大量的工具、經(jīng)驗(yàn)和成功實(shí)踐可以參加。
但是!你清楚你應(yīng)用的內(nèi)存訪問模型嗎?相信,這個(gè)方向?qū)芏嗳藖碚f都是一個(gè)非常陌生的領(lǐng)域。內(nèi)存讀寫有隨機(jī)和順序訪問的差別嗎?自己的某個(gè)應(yīng)用哪些地址的內(nèi)存被多次訪問,哪些地址的內(nèi)存只是偶爾訪問?你關(guān)注過嗎?怎樣的內(nèi)存訪問模型,會(huì)造成PCM應(yīng)用實(shí)際性能糟糕? 可能得不償失,比如這個(gè)介質(zhì)慢一點(diǎn),或者另一種介質(zhì)快一點(diǎn),該怎么用它們?
把經(jīng)常訪問的數(shù)據(jù),用在比內(nèi)存還快的SCM介質(zhì)中去。把不經(jīng)常訪問的數(shù)據(jù),放到稍微慢一點(diǎn)的SCM介質(zhì)中去,這是最直接的想法。但是難的是,哪些時(shí)候,哪些空間,哪些頁(yè)面怎么存放? 非常頻繁地訪問怎么處理? 哪些是長(zhǎng)期,幾十分鐘不訪問的內(nèi)存該如何存儲(chǔ)性價(jià)比更好?需要非常多的實(shí)踐,應(yīng)用分析來支撐系統(tǒng)設(shè)計(jì)。
我們可以看某一個(gè)虛擬機(jī),實(shí)際可以獲得它的內(nèi)存訪問特征模型,重點(diǎn)關(guān)注它的內(nèi)存頁(yè)面訪問標(biāo)志,而不會(huì)關(guān)心頁(yè)面中的內(nèi)容。
我們會(huì)看到16G的內(nèi)存空間內(nèi)有大量的空間分配了,但并沒有訪問,中間那個(gè)彩色的餅圖,大概2GB訪問過的內(nèi)存,稱為溫?zé)醿?nèi)存數(shù)據(jù)。在長(zhǎng)達(dá)6分多鐘,95個(gè)周期的統(tǒng)計(jì)范圍內(nèi),只有2GB的空間被訪問,其他14GB的內(nèi)存空間一直沒有訪問。6分鐘,如果把這14GB內(nèi)存用于其他在線服務(wù),可能支撐其完成十萬次的交互了。
再深入2GB訪問內(nèi)存中,深藍(lán)色部分,每個(gè)周期都有訪問,我們認(rèn)為它是極熱。這部分的數(shù)據(jù)所占比例很小。統(tǒng)計(jì)的經(jīng)驗(yàn)告訴我們,我們希望這部分?jǐn)?shù)據(jù)在CPU內(nèi)以一種非??焖俚拇鎯?chǔ)空間來支撐,而不是要CPU去等待,等待那個(gè)“膠水”,太慢的SCM介質(zhì)會(huì)是性能的災(zāi)難。
設(shè)計(jì)的原則是,不能夠因?yàn)槲翌l繁地從慢的介質(zhì)中訪問數(shù)據(jù),使得我的整個(gè)系統(tǒng)CPU計(jì)算能力浪費(fèi)而受到損失。這個(gè)案例告訴我們,SCM介質(zhì)應(yīng)用同時(shí)也是需要CPU、OS配合,感知數(shù)據(jù)的內(nèi)存訪問模型,也需要非常多的創(chuàng)新給出解決方案。目前CPU和硬件緩存算法簡(jiǎn)單粗暴(例如LRU),能起到一些效果,但是它可能是處于SCM應(yīng)用早期的一種方法。
面對(duì)SCM的應(yīng)用,可以回頭看看SSD的應(yīng)用過程,可以看到SSD剛剛出來的時(shí)候,就只是少量的加速,把熱文件和數(shù)據(jù)放在里面。到現(xiàn)在,大家看一下,SSD的應(yīng)用有非常多深入應(yīng)用思考,如:識(shí)別熱數(shù)據(jù)和冷數(shù)據(jù),熱數(shù)據(jù)和冷數(shù)據(jù)不能放在同一個(gè)塊里,放同一個(gè)塊會(huì)帶來更多的磨損。SCM的時(shí)期還處在2008年的SSD時(shí)代,對(duì)于內(nèi)存訪問模型還需要持續(xù)地探索。
總結(jié)一下前面的案例看到的問題。內(nèi)存業(yè)務(wù)的中堅(jiān)力量仍然是50納秒的內(nèi)存,是最常用的,最容易獲得的解決方案。如果認(rèn)為將來整個(gè)數(shù)據(jù)系統(tǒng)需要容量,同時(shí)又需要性能,希望先要從更加廣闊的介質(zhì)中去選擇,這個(gè)介質(zhì)業(yè)界現(xiàn)在有很多研究。當(dāng)然最成熟的,行業(yè)中比較早期嘗試落地的傲騰(Intel,美光)的解決方案已經(jīng)推出了,也包括Fast NAND(東芝,三星)的應(yīng)用將在2020年落地。
超低時(shí)延的介質(zhì),它的容量很低,但更能夠在整個(gè)系統(tǒng)中發(fā)揮出它的配合的性能(前面內(nèi)存模型案例中極熱部分比例很少)。同時(shí),要用好一個(gè)SCM介質(zhì),任何系統(tǒng)都要付出非常大的代價(jià)和努力,要非常長(zhǎng)的時(shí)間,包括它的CPU設(shè)計(jì)、介質(zhì)設(shè)計(jì)、內(nèi)存體系架構(gòu)的修改,整個(gè)和業(yè)務(wù)的配合,怎么動(dòng)態(tài)的調(diào)度,這方面不是很短期內(nèi)就能夠完成的。 在這樣一個(gè)協(xié)同構(gòu)建生態(tài)的局面下希望未來出現(xiàn)對(duì)整個(gè)產(chǎn)業(yè)界有貢獻(xiàn)的解決方案。
總結(jié):
1、數(shù)據(jù)業(yè)務(wù)的需求對(duì)傳統(tǒng)內(nèi)存、帶寬和容量形成壓力。
2、SCM介質(zhì)可以在提升性能、簡(jiǎn)化編程、持久化、快速恢復(fù)等痛點(diǎn)上形成收益?,F(xiàn)在已經(jīng)有一些廠家在持久化地快速恢復(fù)上,包括數(shù)據(jù)庫(kù),已經(jīng)形成了一些收益。
3、面對(duì)應(yīng)用的內(nèi)存模型差異,希望考慮多種的SCM介質(zhì)類型的配合,發(fā)揮出真正的性能優(yōu)勢(shì)。
4、CPU操作系統(tǒng)服務(wù)以及軟件配合。最后還是要看實(shí)際的效果表現(xiàn)。
5、SCM仍處在整個(gè)實(shí)踐的初期,包括內(nèi)存業(yè)務(wù)模型,可靠性模型,都處于實(shí)踐的初期。積極地推動(dòng)這種生態(tài),去積極推動(dòng)這種實(shí)踐,才能使得整個(gè)高性能且穩(wěn)定可靠的解決方案。
華為將以致力于每比特價(jià)值最大,每比特成本最優(yōu),數(shù)據(jù)安全可靠,持續(xù)地投入芯片和基礎(chǔ)IT技術(shù)的研究。