馮丹表示,支持近數據處理的固態盤技術以及存算一體的憶阻器技術為解決“存儲墻”問題提供了全新的路徑,并從三個方面進行了闡述。

以下為演講實錄:

謝謝,我給大家分享一下我們做的一些工作,這是近數據處理存儲技術,主要從三個方面給大家分享。

應該說,大數據時代第一個對存儲有挑戰,第二個對數據處理也存在挑戰,存儲方面據統計增長率已經達到了36%,2018年全球的數據總量是33ZB,預計到2025年將達到175ZB。但是大量的數據實際上除了要存之外,更多的要做處理,比如說大數據的5V特征——Volume(體量)、Velocity(速度)、Variety(多樣性)、Veracity(準確性)、Value(價值), 要求在大量的數據中間能夠找到有價值的數據或者說發現有價值的數據做處理。

處理和存儲之間實際上發展的是不平衡的,處理器核每兩年翻一倍,內存容量每三年才翻一倍。也就是說,每個核的內存容量每兩年是減少30%,它分配到的內存帶寬也大為減少,從而導致處理和存儲之間的差距越來越大。

而存儲性能的提升非常有限,從1999年到2017年訪問延遲基本上沒有什么變化,盡管帶寬提升了20倍,容量提升了128倍,這樣就導致處理和存儲之間的發展非常不平衡。從性能的角度來看,據分析大約50%處理器流水線中的停頓是由數據訪問造成的,有的是數據的沖突,有的是因為內存沒有命中,所以導致存儲流水停頓問題。這就是我們所有說的內存強的問題。還有一個功耗強的問題,據統計移動設備中瀏覽網頁41%的能量花費在數據訪問上,LOAD操作能耗約為ADD指令的115倍。因此,內耗強的問題也非常突出。

從閃存內部講,16個通道的閃存構成的SSD,理論上來講內部的數據的速率可以達到8.5GB/S,但是把它封裝成為SSD盤之后,就是SATA接口或者PCIe接口就達不到這么高的速度,就是2G/S的速度。如果是64個SSD理論上是可以達到545個GB/S的速度,但是掛載在PCIe的總線上,被Host來訪問的話16個通道的SSD變成了16GB/S的速度。

也就是說,設備內部速度理論上是非常高的,但是通過層層衰減,性能非常低了,這樣就導致了CPU訪問的時候差距非常大,怎么樣解決這個問題呢?分析一下就是由傳統的馮諾依曼體系結構限制了它。

傳統的馮諾依曼體系結構導致數據一定是要存儲里搬到計算里,然后算完之后再回去。我們反過來想一下,能不能把處理推送到存儲中間去,充分發揮內部帶寬作用呢?

這個是傳統的馮諾依曼體系結構數據流向存在的問題,從而使得過分的以計算為中心導致性能差、能耗低,所以新的理念我們能不能實現以數據為中心的體系結構,也就是說在盡量靠近數據的地方來處理數據或者盡量減少數據的訪問來完成計算,也就是所說的將處理推送到數據中間去或者推送到存儲中間去。

現在的一些解決方案,為了提高訪存的帶寬也有CPU+GPU+FPGA+TPU,來使得能夠更多的并行訪存。我們也做了一點工作,在SSD控制器里做了支持近數據處理的可重構的存儲控制器。

主要的思路基于可重構的FPGA來實現硬件的加速,也就是說把一些頻繁操作的處理推送到SSD控制器里。第二個方面圍繞RRAM做了存算融合,也就是CIM方面做了探索,我們做了優化的工作今天跟大家分享一下。

第一個工作支持可重構的近數據處理的固態盤,我們開發了PCIe原形系統,用FPGA做,像內存條是flash的直卡或者PCM的直卡,我們用來做實驗的。在控制器中間我們除了做傳統的閃存FTL這些操作之外以及閃存的控制,我們還加了可重構的處理的模塊,很多可重構的單元,還加上重構配置模塊。

可重構的處理單元可以配置成為要加速處理的一些操作,比如說來做數據的過濾操作,要去查詢一個數據,或者操作的一些音節碼,以及加密的操作等等,可以用可重構的單元,通過FPGA的編程之后用硬件直接實現加速。將處理推送到存儲,離數據最近的地方來做,具體的來做基于近數據處理,我們實現AES加密的模塊,接收到的數據經過可重構的近數據處理模塊之后再通過flash的控制器到真正的Facebook中間去。

具體的實現包括密鑰的擴展模塊,替換模塊等等,也實現了做壓縮硬件實現,實現數據輸出的數據緩存模塊,壓縮運算模塊,還有哈希表的模塊,整個壓縮硬件的實現。我們實現之后發現效果還是不錯的。本來規劃是1,我們最后搞了0.5,如果用軟件來加密、解密或者壓縮的,這個操作用可重構的硬件實現之后的效果,我們可以看到大大地提升了性能,這是我們在控制器里頭做這些操作可以提升性能。

真正要實現可重構還有一個問題,我要頻繁的更換FPGA的配置,這個配置信息傳輸的延遲,還有配置的延遲也會影響性能,我怎么樣加速這個配置,不至于硬件是加速了,但是配置在那兒搞了半天才把它電路換過來,也會影響整個性能,我們也做了相應的工作,比如說加了一個緩存,并且對緩存的調度算法也進行了一定的修改,采用MLFU(配置信息緩存替換算法)進行修改之后來使用,包括加上配置信息的面積到底有多大。

如果面積小的模塊剔除去,面積大的盡量保留在緩存里頭這樣加快速度。這樣就使得整個性能比不加改進要更好一些,不至于說因為做配置,用可重構提高了性能,因為配置又把性能降下去了,所以使得整個不至于出現瓶頸問題,這是第一個工作,可重構的近數據處理的固態盤。

第二個工作做存算融合存儲器探索的研究,主編存儲器第一個方面可以做存儲,通過高組、低組,以及不同的組織狀態做存儲,同時也可以做邏輯計算,另外做模擬計算,我們也把它叫做近似的計算,主要就可以做矩陣的向量乘法。

實際上憶阻器的發展主要從2008年開始,正式了憶阻器之后得到了研究界廣泛的關注。這是近十年來相應的研究,包括把它用做大容量存儲,邏輯計算,還有近似計算,也就是做矩陣的計算,做AI的加速研究的是非常多的。
這是做AI的加速,既可以做存儲,又可以做計算,陣列的控制模塊通過變化來使得達到是做存儲,還是做計算的目的。比如說當他做存儲的時候,他就排除掉一些邏輯。而當他做計算模式的時候才發揮作用,同時也提供編程接口或者是優化接口。

這是在探索怎么樣基于憶阻既做存儲,又做計算這樣的體系結構。未來我們認為除了專用的探索之外,能夠做高性能計算的加速,也可以做神經網絡計算的加速,或者是做圖像處理的加速等等這些專用的加速之外,我們也希望探索一些通用的架構,能夠滿足不同的應用需求。也就是說,通過可配置的方式能夠滿足只要是我希望能夠在存儲器里頭做計算的,做存算一體化或者融合的,都可以用這樣的架構,這是在探索方面。

另一方面從它真正實現來看,研究界非常熱,但很多基于理想的假設之后做了研究。

比如說器件級就有這種非線性導致存儲可靠性降低的問題,當做成陣列形勢的時候就有電阻、電流,導致存儲能效下降的問題。還有當他做大規模計算的時候,多個陣列之間要做一些直連,會有誤差的傳遞、累計,從而導致計算的準確度下降的問題。

盡管好處是說我要做計算,實際上很簡單,我先寫,把電阻值子放到相應的數字,做矩陣的成價運算,就是加一個電壓讀過程就完了,非???。但是真正實現起來就不那么簡單了。要克服這樣非理想因素的影響,比如說單元級的,非線性組織的變化,還有D2D和C2C變化系,是很理想的直線。

還有電流、電壓的特性,盡管本身是一個組織,但實際上電壓是線性的特點。當他作為陣列的時候,因為是共享,就有電容的問題,還有連線電阻的問題,本來是一個小的組織,但是連線上也有電阻,也會影響他。當他做成下面第二個圖的結構時候,綠色的線本身是希望加一個電壓電流走這個線,結果發現電流會像紅色的線到處跑,原因是共享導致。

還有操作的問題,哪些是不能并線操作的,哪些是能并線操作的,這些都是我們在底層要解決的,我們就做了一點這樣的工作,盡管上層可以做的很好,可以做各種各樣的運算,但真正要實現起來首先要解決底層非理想因素的影響。

我們解決具體的對象就多機存儲單元,以及3D的模型,也就是說共享的模型。在這個過程中間我們發現做計算首先要寫一個值,再就是讀一次就出來了,實際上我要做大容量的存儲也要解決這樣的問題,寫的可靠問題,以及寫的低能耗的問題。我們發現有效電壓在左邊加進來會有一個逐漸的衰減,到右上角的時候衰減是最厲害的,也就是多單不對稱的現象,所以就要做偏壓的操作對他進行補償。

我們發現組織變化的時候高組態變化線是比較大的,低組態的變化是小的。如果是傳統的不同高組、低組只是均勻劃分進行采樣情況下準確度會降低,所以我們就根據變化線高組態劃寬,低組態劃窄,也就是變化性感知狀態劃分的方式,來提高可靠性。最差的情況下變化性降低了40%,提高了可靠性。

另外大家都知道我們要去寫的時候都是寫一個高組或者低組,傳統的方式是采用脈沖的迭代寫,寫到中間這個態。我們提出來比例控制的狀態調整,也就是說第一次調的時候幅度大一點調到附近,然后再做準確的控制反饋,這樣就使得寫入速度加快,平均的迭代次數減少31%,降低了寫入延遲。

另外還有并行線的問題,我們也寫出了相應的并行調度的方法。這里有一個例子,當前的狀態是1213,目標狀態是3125,哪些是可以并行的?第一個和第三個都要并行做兩次操作就可以完成的,中間實際上就可以把第三位同時寫掉了,就相應的提出了并行的算法來提高并行性。

當他用做大容量存儲的時候,我們用內存的對它進行測試,平均的內存訪問延遲降低了67.6%,IPC提高了2.94倍。這個是新寫進去,當做存儲的時候讀要準確,我們發現這樣的問題,這是一個陣列的示意圖,由于有電壓降的問題,左邊還是加電壓到最右端的紅點的時候電壓就衰減,衰減之后導致理想讀的狀態應該是右邊的綠線,就變成橙色的線。也就是說,讀出來的值會出錯,測量的電流值由于電壓下降之后測量的電流肯定也是減少,減少之后如果還用理想狀態讀出來肯定是錯的,所以我們也是做了相應的表,就可以準確來讀取出來。

當他做運算的時候,我們就不利用這種查表的方式,因為是加一個電壓就有電流出來。由于有電壓降的問題存在,就會導致整個電流肯定都是會減少了,我們就采用片壓,之前未先感知的互聯電壓降補償的方法,來使得每一個測量都是準確的,從而提升結果的準確度提升15%,這就是我們在底層做了一些工作,怎么樣能夠真正支持大容量存儲;第二個在這種結構怎么樣支持高速存算一體化,首先存,然后再計算。

當然,在體系結構方面我們也在做一些,今天由于時間限制就不給大家分享了??偟膩碚f,今天給大家分享了兩個工作,第一個在SSD里頭做了近數據處理的,基于可重構的FPGA近數據處理的硬件的加速,來減少數據的傳輸。

第二個基于SRAM做了一體化的探索,基本上大容量的探索,首先是做大容量的存儲,其次是能夠做存算一體化,克服非理想因素我們做了相應的工作。未來我們也在做體系結構設計,支持神經網絡、圖像處理等等這樣的體系結構的設計,下次有機會再給大家分享。

(內容基于速記整理,如有紕漏,歡迎指正。)

未經允許不得轉載:存儲在線-存儲專業媒體 » 華中科技大學馮丹:支持近數據處理的存儲技術
分享到

zhangnn

相關推薦

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