李迦靂 劉 鐸 陳咸彰 譚玉娟 曾昭陽
(重慶大學計算機學院 重慶 400044)
大數(shù)據(jù)和人工智能帶來的數(shù)據(jù)爆炸問題,對存儲系統(tǒng)和計算系統(tǒng)提出了巨大挑戰(zhàn)。快速增長的數(shù)據(jù)不僅需要大容量的存儲器,更需要高效的分析方法來充分挖掘數(shù)據(jù)的價值。然而,在傳統(tǒng)的馮諾依曼架構(gòu)中,存儲部分和計算部分相分離,數(shù)據(jù)在遷移過程中,需要經(jīng)過冗長的軟件棧以及性能有限的存儲接口,這會帶來高昂的存儲開銷,造成系統(tǒng)瓶頸。近數(shù)據(jù)處理(Near-Data Processing,NDP)技術(shù)是解決這一問題的有效手段。
NDP 技術(shù)是指利用存儲器內(nèi)部的計算能力進行數(shù)據(jù)處理,對如數(shù)據(jù)庫、人工智能等具有海量數(shù)據(jù)的應(yīng)用進行加速。這種新型架構(gòu)擁有高性能、減少數(shù)據(jù)傳輸量和減輕主機負擔的優(yōu)點。閃存(Flash)由于具有高速、低延遲的特點,被廣泛應(yīng)用于個人電腦、服務(wù)器[1]和多種特殊場景[2]中。此外,基于閃存的固態(tài)硬盤(Solid State Drive,SSD)因其高帶寬和較強的計算能力,成為開展 NDP 架構(gòu)研究的主要載體之一。目前,NDP 技術(shù)在經(jīng)歷了理論探索研究階段、原型驗證階段后,得到了初步應(yīng)用,具有廣闊的研究和應(yīng)用前景。本文將介紹基于閃存的 NDP 系統(tǒng),從傳統(tǒng)的計算和存儲架構(gòu)中存在的問題、關(guān)鍵技術(shù)、針對特定應(yīng)用和面向通用場景的研究、產(chǎn)業(yè)現(xiàn)狀等方面進行介紹,最后總結(jié)并展望其未來可能面臨的機遇與挑戰(zhàn)。
由于機械硬盤帶寬低、延遲高,存儲器接口和軟件棧不會造成其性能瓶頸。當閃存普及后,存儲設(shè)備性能得到了巨大的提升,但接口和軟件棧并沒有得到明顯的改進。存儲棧便成為存儲系統(tǒng)的性能瓶頸,阻礙了存儲器的性能發(fā)揮。傳統(tǒng)存儲棧的問題主要包含以下方面:
(1)高昂的數(shù)據(jù)遷移開銷。如圖 1(a)左側(cè)所示,在傳統(tǒng)架構(gòu)中,存儲部分與計算部分相分離,數(shù)據(jù)讀入內(nèi)存后才能進行計算,在數(shù)據(jù)庫等應(yīng)用中,這將會導(dǎo)致高昂的數(shù)據(jù)遷移開銷。
(2)冗長的軟件棧。以 Linux 系統(tǒng)為例,當應(yīng)用發(fā)出 I/O 請求后,需要依次經(jīng)過標準存儲接口、系統(tǒng)調(diào)用、文件系統(tǒng)、塊設(shè)備層和驅(qū)動層等軟件層后,才能訪問到存儲器,如圖 1(b)左側(cè)所示。冗長的軟件棧降低了訪存效率[3],增加了額外的軟件性能開銷。
圖1 傳統(tǒng)計算系統(tǒng)與 NDP 系統(tǒng)的軟硬件架構(gòu)比較Fig. 1 Comparison of hardware and software architecture between traditional system and NDP system
(3)低利用率的存儲器性能。由于固態(tài)硬盤通常具有多個閃存芯片和讀寫通道,當并發(fā)讀寫時,固態(tài)硬盤內(nèi)部可以達到很高的帶寬,但是由于接口限制,內(nèi)部帶寬不能得到充分利用。
(4)受限的可擴展性。由于處理器和存儲器間的傳輸帶寬有限,僅增加存儲設(shè)備并不能增加存儲系統(tǒng)的性能,反而由于可擴展性受限,在某些場景下,可能會造成幾十倍的性能浪費[4]。
(5)不靈活的存儲接口。由于存儲設(shè)備的訪問接口通常為塊接口,所以對數(shù)據(jù)的請求只能以塊為單位。請求只能包含起始塊地址、請求長度等信息。然而,不同應(yīng)用的存儲需求各不相同,統(tǒng)一使用塊接口缺乏針對性的存儲優(yōu)化能力。
在傳統(tǒng)計算機架構(gòu)的軟硬件上,存儲系統(tǒng)距離計算系統(tǒng)過遠,數(shù)據(jù)遷移需要高昂的開銷。因此,研究者們提出將計算單元置于存儲器的新型架構(gòu)。
在機械硬盤時代,針對傳統(tǒng)軟件棧存在的問題,有研究者提出用 NDP 的思想[5-6]解決。這種架構(gòu)的核心思想是利用存儲器內(nèi)部的計算能力,將主機的部分計算任務(wù)卸載到存儲器中。其中,支持數(shù)據(jù)處理的存儲器稱為計算型存儲,圖 2 為傳統(tǒng)固態(tài)硬盤與計算型存儲架構(gòu)對比圖。傳統(tǒng)固態(tài)硬盤主要包括主機控制器、嵌入式處理器、閃存、閃存控制器和動態(tài)隨機存取內(nèi)存(Dynamic Random Access Memory,DRAM)。與傳統(tǒng)固態(tài)硬盤相比,計算型存儲最大的改進在于存儲器具有處理數(shù)據(jù)的能力。如圖 2(b)所示,計算單元的放置通常有 3 種方法:序號①表示添加在嵌入式處理器之外[7-9],將其作為協(xié)處理器執(zhí)行計算任務(wù);序號②表示放置在嵌入式處理器與閃存控制器之間[10-11],此時,每個通道都具有計算能力,具有高并發(fā)性的優(yōu)點;序號③表示放置在嵌入式處理器內(nèi),計算單元類型包括硬件加速器[12]以及嵌入式處理器[13-15]。
圖2 傳統(tǒng)固態(tài)硬盤與計算型存儲Fig. 2 Traditional SSD and computational SSD
新型架構(gòu)與傳統(tǒng)架構(gòu)的工作模式如圖 1(a)所示,在傳統(tǒng)計算架構(gòu)中,數(shù)據(jù)需要從存儲器返回到計算單元,而 NDP 架構(gòu)則將數(shù)據(jù)處理的一部分或者全部任務(wù)卸載至計算型存儲中。當 CPU向存儲器發(fā)送計算請求后,即可執(zhí)行其他任務(wù),存儲器獲取數(shù)據(jù)后進行計算,然后返回計算結(jié)果,減少了大量的數(shù)據(jù)傳輸。NDP 系統(tǒng)主要有以下優(yōu)點:
(1)減少數(shù)據(jù)傳輸。存儲器只需返回數(shù)據(jù)處理結(jié)果。對于不同的應(yīng)用,可不同程度地減少數(shù)據(jù)傳輸。
(2)減輕主機負擔。將計算任務(wù)下推到存儲器后,主機可以利用原本用于數(shù)據(jù)傳輸和計算的系統(tǒng)資源執(zhí)行其他任務(wù),降低處理器的利用率,提升系統(tǒng)性能。
(3)提高帶寬利用率。如圖 1(b)所示,NDP系統(tǒng)提供了繞過包括標準存儲接口、文件系統(tǒng)層和塊設(shè)備層的傳統(tǒng) I/O 棧的方法,通過調(diào)用 NDP接口能夠避免高昂的軟件棧開銷。
(4)提高可擴展性。將處理任務(wù)分割、卸載到每個存儲器中,可實現(xiàn)性能的線性擴展[5,13]。在NDP 架構(gòu)中,只添加存儲器即可提升系統(tǒng)性能。
(5)提高安全性。對不同應(yīng)用授予不同的存儲訪問權(quán)限,只返回數(shù)據(jù)處理結(jié)果而非原始數(shù)據(jù),可以降低安全風險。
(6)降低能耗。由于存儲器內(nèi)使用低功耗的嵌入式處理器,功耗遠低于主機處理器。此外,對于特定應(yīng)用可以采用硬件加速器[7,16-18],進一步提高性能、降低功耗。
早期,對 NDP 系統(tǒng)的研究主要基于機械硬盤,但機械硬盤的內(nèi)部帶寬低,處理器性能弱,在這種架構(gòu)提出后的一段時間內(nèi),后續(xù)研究較少。隨著閃存時代的到來,固態(tài)硬盤得到了普及,其不僅具有很高的內(nèi)部帶寬,并且由于其嵌入式處理器需要進行地址映射、垃圾回收等操作,具有較高的計算性能,因此,NDP 架構(gòu)再次受到廣泛關(guān)注,且初步形成了一定的產(chǎn)業(yè)規(guī)模。
作為一種新型的計算范式,對 NDP 架構(gòu)的研究和應(yīng)用涉及軟硬件棧的許多方面。如圖 3 所示,其在任務(wù)分割與卸載、編程框架架構(gòu)設(shè)計和數(shù)據(jù)處理單元設(shè)計等方面有獨特的關(guān)鍵技術(shù)點:
圖3 NDP 系統(tǒng)關(guān)鍵技術(shù)Fig. 3 Key technology of NDP system
(1)任務(wù)分割與卸載。NDP 架構(gòu)的核心思想是將任務(wù)卸載到存儲器中執(zhí)行,但存儲器的性能有限,所以如何劃分任務(wù)到存儲器中使系統(tǒng)性能最佳成為關(guān)鍵問題之一。主流的做法包括:固定卸載一部分任務(wù)的固定分割[12,14,19]、將整個應(yīng)用完整卸載的完全卸載[9,20],以及根據(jù)系統(tǒng)狀態(tài)動態(tài)卸載任務(wù)的動態(tài)分割[21-22]。
(2)編程框架的架構(gòu)設(shè)計。由于 NDP 系統(tǒng)的復(fù)雜性,在應(yīng)用開發(fā)和系統(tǒng)管理中,編程框架起著十分關(guān)鍵的作用。編程框架的架構(gòu)設(shè)計通常包括:編程接口[23]、編程模型[8,24-25]和系統(tǒng)管理等方面,如何設(shè)計高效靈活的計算型存儲抽象方法成為 NDP 架構(gòu)中的關(guān)鍵問題之一。
(3)數(shù)據(jù)處理單元設(shè)計。數(shù)據(jù)處理方法對NDP 系統(tǒng)的性能和靈活性有重要的影響。數(shù)據(jù)處理單元主要分為 3 種類型:專用加速器[3,9]、片外的可編程單元[26]和嵌入式處理器[19,27]。專用加速器具有低功耗和高性能的優(yōu)點,但無法快速適配新型應(yīng)用;嵌入式處理器的靈活性高,且開發(fā)成本低,但性能較差;可編程單元則相對平衡,在保證靈活性的同時,具有較高的性能。此外,數(shù)據(jù)處理單元與存儲器件間的連接方式也各不相同,如與閃存控制器直連,或利用 DRAM 傳輸數(shù)據(jù)等方式。
NDP 是一種全新的系統(tǒng)架構(gòu),涉及的關(guān)鍵技術(shù)點共同支撐系統(tǒng)的應(yīng)用,每個方向都值得深入研究,以提高其應(yīng)用價值。目前,相關(guān)研究工作主要圍繞通用場景、特定應(yīng)用、軟硬件平臺與產(chǎn)業(yè)化等方面展開,下文將進行詳細闡述。
本節(jié)將從編程框架、文件系統(tǒng)、操作系統(tǒng)等方面對面向通用場景的 NDP 系統(tǒng)的研究工作進行介紹,這些工作降低了開發(fā)和應(yīng)用的成本,提高了系統(tǒng)的性能和易用性,讓更多的應(yīng)用可以從這種新型架構(gòu)中獲益。面向通用場景的 NDP 系統(tǒng)研究總結(jié)如表 1 所示。
表1 面向通用場景的 NDP 系統(tǒng)研究總結(jié)Table 1 Research on NDP system for general scenarios
由于 NDP 應(yīng)用的復(fù)雜性,編程框架一直是研究重點之一。編寫一個完整應(yīng)用存在的問題包括以下幾個方面:
(1)開發(fā)任務(wù)復(fù)雜。目前,在 NDP 領(lǐng)域沒有固定標準,且缺乏通用的編程模型、協(xié)議和庫等,應(yīng)用的開發(fā)工作包括:修改應(yīng)用以卸載部分功能,基于現(xiàn)有通信協(xié)議進行修改以滿足應(yīng)用需求,以及嵌入式處理器代碼開發(fā)以實現(xiàn)盤內(nèi)數(shù)據(jù)處理。因此,NDP 應(yīng)用的開發(fā)任務(wù)復(fù)雜。
(2)運行環(huán)境差異。在開發(fā)過程中,通常會包含應(yīng)用、驅(qū)動和盤內(nèi)(嵌入式、FPGA)等不同部分的開發(fā),因此需要考慮不同的開發(fā)、測試和運行環(huán)境。
(3)任務(wù)卸載問題。一般情況下,固態(tài)硬盤控制器的計算能力遠低于主機的 CPU,因此,不能簡單地將整個應(yīng)用都遷移到固態(tài)硬盤中執(zhí)行。在開發(fā)過程中要考慮,如何分割以及卸載任務(wù)使得整個 NDP 系統(tǒng)的性能最大化。
(4)調(diào)試困難。由于缺乏統(tǒng)一的開發(fā)環(huán)境,通常需要通過不同的方法查看各個組件的運行情況,從而對系統(tǒng)各個部分進行調(diào)試,增大了調(diào)試復(fù)雜性。
對于編程框架存在的問題,Active Disks[5]給出的解決方案是基于流的編程模型 disklet。韓國三星電子提出的 Smart SSD[27]在編程框架方面提供了指令回調(diào)、線程管理、內(nèi)存管理和獲取數(shù)據(jù)的 API;在通信方法上,設(shè)計了基于 SATA 接口的會話通信協(xié)議,包含 Open、Get、Close 3 個指令。在 Open 接口被調(diào)用時,調(diào)用用戶注冊的Open 回調(diào)函數(shù)并返回會話 ID,然后用戶可以通過 Get 接口監(jiān)視程序執(zhí)行狀態(tài),以及獲取執(zhí)行結(jié)果,最后使用 Close 銷毀會話。
2014 年,加州大學圣迭戈分校提出一種高安全性、多并發(fā)的可編程固態(tài)硬盤 Willow[24]。Willow 內(nèi)部包含多個存儲處理單元(Storage Processor Units,SPU),每個 SPU 包含內(nèi)存、存儲資源的同時,還運行著一個超小型操作系統(tǒng)SPU-OS,SPU 間通過盤內(nèi)總線相連,支持同時運行多種 NDP 應(yīng)用。主機與 Willow 通過遠程過程調(diào)用進行通信,主機創(chuàng)建并管理著一組主機遠程調(diào)用端點用于通信。一個完整的 SSD App 包含應(yīng)用、內(nèi)核模塊和 SSD 內(nèi)應(yīng)用 3 個部分。針對安全性問題,Willow 會追蹤遠程過程調(diào)用的所屬進程,對于遠程過程調(diào)用的任務(wù)執(zhí)行、數(shù)據(jù)訪問等操作執(zhí)行權(quán)限檢查。
2016 年,針對以前的系統(tǒng)多注重概念驗證,沒有系統(tǒng)性應(yīng)用的問題,韓國三星電子提出的編程框架 Biscuit[25]分為軟件和硬件兩個方面的工作:在軟件方面,提出了基于流的編程模型,一個任務(wù)流由多個 SSDlet 組成,每個 SSDlet 包含數(shù)據(jù)的輸入、輸出和處理方法,主機端程序負責調(diào)度與組合 SSDlet 以形成任務(wù)流,任務(wù)流可支持單生產(chǎn)者多消費者、多生產(chǎn)者單消費者等模式,可實現(xiàn) Map-Reduce 等數(shù)據(jù)處理模型;在硬件方面,在每個閃存通道上設(shè)置一個模式匹配加速器,可對每次讀請求進行并行的數(shù)據(jù)篩選,然后基于 NVMe 協(xié)議,對提出的可編程固態(tài)硬盤進行硬件實現(xiàn),聲稱具有產(chǎn)品級強度。然而,Biscuit 由于硬件限制,存在性能較低、沒有緩存一致性和缺乏內(nèi)存管理器(Memory Management Unit,MMU)等問題,降低了該工作的可用性。
2019 年,加州大學洛杉磯分校提出了一種完整的 NDP 計算框架 INSIDER[8]。該工作采用基于 FPGA 的數(shù)據(jù)流處理方法,將用戶定義的數(shù)據(jù)處理模塊加載到 FPGA 的應(yīng)用槽(App Slot)中。當應(yīng)用需要使用某個數(shù)據(jù)處理模塊進行數(shù)據(jù)處理時,就需要將文件與該模塊所在的 App Slot 綁定,INSIDER 讀取該文件后會將文件數(shù)據(jù)經(jīng) App Slot 處理后再返回。一個 FPGA 中有多個 App Slot,可同時支持多種 NDP 應(yīng)用。為了降低開發(fā)難度,INSIDER 還提供了包括應(yīng)用編譯器(基于 LLVM)、加速器編譯器(基于 Vivado HLS)、運行時庫和驅(qū)動程序在內(nèi)的完整軟件棧。
此外,在降低開發(fā)難度方面,也進行了許多研究工作:華為慕尼黑開放實驗室設(shè)計了一種編程框架 blockNDP[28],用戶可通過框架提供的工具將盤內(nèi)部分的代碼編譯為中間碼(blocklet),然后傳輸?shù)焦虘B(tài)硬盤中,數(shù)據(jù)流經(jīng) blocklet 處理后返回,減少了數(shù)據(jù)傳輸。美國微軟公司和NGD System 推出的計算型存儲 Newport[13]通過以太網(wǎng)構(gòu)建了主機和固態(tài)硬盤的通信機制,利用OpenMPI 進行任務(wù)分發(fā),并借助分布式文件系統(tǒng)提供文件訪問服務(wù)和一致性保證。一致的操作系統(tǒng)環(huán)境雖然降低了開發(fā)復(fù)雜度,但是硬件成本過高,此外,完整的操作系統(tǒng)帶來了高昂的軟件開銷。美國英特爾公司提出的基于虛擬對象的編程模型[34]將數(shù)據(jù)處理所需要的塊地址、操作碼和操作參數(shù)打包為虛擬對象(virtual objects)后發(fā)送給固態(tài)硬盤進行處理,處理結(jié)果通過虛擬對象的方式返回,該模型對軟件棧進行少量修改即可支持NDP 架構(gòu)。
文件系統(tǒng)可利用計算型存儲進行優(yōu)化,如提高性能、增強安全性等。2018 年,威斯康辛大學與華為技術(shù)有限公司提出的設(shè)備內(nèi)文件系統(tǒng)DevFS[29]在存儲設(shè)備內(nèi)部實現(xiàn)文件系統(tǒng),可通過日志、超級塊、索引節(jié)點(inode)等類似于 Linux文件系統(tǒng)的方式進行管理。當斷電后,固態(tài)硬盤可通過內(nèi)置電容寫回內(nèi)存中的數(shù)據(jù),減少了日志開銷。此外,DevFS 通過為應(yīng)用提供 POSIX 兼容接口以繞過內(nèi)核存儲軟件棧,減少了軟件開銷。針對存儲器內(nèi)部內(nèi)存受限的問題,DevFS 提出了反向緩存機制,將索引節(jié)點進行分解后,僅在盤內(nèi)保留頻繁訪問的部分,將其他部分傳輸?shù)街鳈C的內(nèi)存中,節(jié)約了存儲器內(nèi)存開銷。DevFS在驅(qū)動層基于 PMFS 進行了模擬實驗,與內(nèi)核文件系統(tǒng)相比,該系統(tǒng)的讀寫性能分別提高了 2 倍和 1.6 倍。
在 DevFS 的基礎(chǔ)上,美國羅格斯大學提出的 CompoundFS[30]針對廣泛存在的組合 I/O 操作提供了額外的接口。如在寫后計算校驗碼的操作中,當寫入數(shù)據(jù)后,直接利用存儲器計算出校驗碼和后寫入。減少了多次 I/O 操作帶來的多次系統(tǒng)調(diào)用和數(shù)據(jù)拷貝的開銷。
此外,利用計算型存儲的可編程特性可為操作系統(tǒng)和應(yīng)用提供新的存儲接口和抽象模型。一方面,可將固態(tài)硬盤內(nèi)部的結(jié)構(gòu)暴露給主機,使主機能夠獲取固態(tài)硬盤的內(nèi)部信息,文件系統(tǒng)能夠控制固態(tài)硬盤的擦除、垃圾回收等操作,使得I/O 時延可控[35],提升存儲系統(tǒng)性能。這方面的代表工作包括開放通道 SSD[17,35],以及在最新的NVMe 協(xié)議中加入分區(qū)命名空間 SSD[36],這兩種 SSD 都提供了讓應(yīng)用控制 SSD 內(nèi)部讀、寫和擦除行為的能力。另一方面,可提供新型的存儲接口,賦予存儲器更大的數(shù)據(jù)管理權(quán)限,提升存儲器的性能優(yōu)化空間,降低主機負擔。這方面的代表工作有提供鍵值存取接口的 KVSSD[37-38]。Do 等[4]提出了計算型存儲靈活可編程的接口,在未來的云計算中可實現(xiàn)存儲系統(tǒng)的快速迭代。
NDP 系統(tǒng)由于需要直接讀寫存儲器中的數(shù)據(jù),因此,理解數(shù)據(jù)的格式非常重要。現(xiàn)有的解決方案通常采用將一個文件的所有塊地址傳輸給固態(tài)硬盤的方式,但這種方法會帶來額外的傳輸開銷,還不利于盤內(nèi)和主機數(shù)據(jù)一致性的維護。如何將文件系統(tǒng)與 NDP 技術(shù)結(jié)合,提高數(shù)據(jù)的檢索、讀取與處理效率是未來值得研究的問題。
在計算型存儲中,操作系統(tǒng)負責提供程序運行環(huán)境、調(diào)度多種任務(wù)高效運行。Active Disks[5]中提出了 DiskOS,該系統(tǒng)可提供內(nèi)存管理、流間通信和 disklet 調(diào)度的功能。Willow[24]中提出的SPU-OS 運行在每個 SPU 上,并通過互聯(lián)網(wǎng)絡(luò)形成分布式網(wǎng)絡(luò)。SPU-OS 與主機中的驅(qū)動程序協(xié)同工作,提供簡單的多任務(wù)管理和安全性保證。在 blockNDP[28]中,拓展 FTL 實現(xiàn)了類似于操作系統(tǒng)的功能,可支持多核、多線程執(zhí)行、動態(tài)內(nèi)存分配以及內(nèi)存保護,提供了運行時環(huán)境用于執(zhí)行中間碼以及保證安全性。美國 NGD System 公司提出的一種計算型存儲 Newport CSD[13]包含 4個 64 位的 ARM 處理核心,其運行系統(tǒng)為 Linux系統(tǒng)。該系統(tǒng)通過基于 NVMe 協(xié)議構(gòu)建的以太網(wǎng)絡(luò)實現(xiàn)了完整的網(wǎng)絡(luò)棧,將固態(tài)硬盤作為塊設(shè)備接入系統(tǒng),因此,具有與主機端幾乎相同的編程方法與運行環(huán)境。
華為慕尼黑開放實驗室[31]指出了引入 NDP架構(gòu)專用操作系統(tǒng)的必要性,以及其應(yīng)當具備的功能。該實驗室認為 NDP 系統(tǒng)存在異構(gòu)性、一致性和并發(fā)性問題,開發(fā)者難以解決,因此,需要操作系統(tǒng)的協(xié)助。該操作系統(tǒng)的挑戰(zhàn)包括局部性問題、安全性問題、主機與存儲的任務(wù)調(diào)度問題、多任務(wù)調(diào)度問題、盤間調(diào)度問題、編程性問題和延遲問題。該工作還提出了 Shadowgraphy OS,目標是支持應(yīng)用的透明加速、最小化所需單元數(shù)量、最小化數(shù)據(jù)拷貝和去中心化的控制。
目前,在操作系統(tǒng)方面,針對 NDP 技術(shù)開展的操作系統(tǒng)工作較少,現(xiàn)有工作多是基于裸機開發(fā)。但隨著任務(wù)復(fù)雜度和數(shù)量的提升,出于安全性需求和對編程難度的考慮,針對 NDP 架構(gòu)的操作系統(tǒng)將會成為研究熱點。
針對 NDP 架構(gòu)的通用性和性能問題,有工作從其他方面進行了研究:
數(shù)據(jù)壓縮:美國 ScaleFlux 公司提出的KallaxDB[39]通過固態(tài)硬盤內(nèi)的 FPGA 實現(xiàn)了數(shù)據(jù)的透明壓縮,支持 MySQL、Hadoop 等應(yīng)用,當壓縮率為 50% 時,連續(xù)讀寫性能仍不受影響。美國東北大學提出的 Active Flash[40]使用嵌入式處理器的閑置資源進行數(shù)據(jù)壓縮,并利用無損壓縮方法壓縮二進制數(shù)據(jù)和文本數(shù)據(jù),可平均減少49% 的存儲量。韓國浦項科技大學提出了 CIDR技術(shù)[32],并基于 FPGA 設(shè)計了用于固態(tài)硬盤陣列的新型數(shù)據(jù)縮減系統(tǒng)——將數(shù)據(jù)壓縮和數(shù)據(jù)去重工作卸載到計算型存儲中執(zhí)行,寫負載性能可提高 2.47 倍。伊利諾伊大學香檳分校提出的Almanac[41]利用計算型存儲實現(xiàn)了歷史狀態(tài)查詢和數(shù)據(jù)回滾。韓國浦項工科大學[42]針對固態(tài)硬盤內(nèi)部進行數(shù)據(jù)重刪導(dǎo)致重刪率降低和由 CPU 執(zhí)行重刪導(dǎo)致的 CPU 瓶頸問題,將數(shù)據(jù)簽名和表管理卸載到 FPGA 執(zhí)行,降低了 CPU 開銷,并可檢測所有重復(fù)數(shù)據(jù)。美國 Dropbox 公司提出的Lepton[43]利用 NDP 架構(gòu)的思想,將圖片壓縮功能部署在分布式文件服務(wù)后端,該系統(tǒng)被應(yīng)用于生產(chǎn)已有超過一年的時間。
虛擬化:為了解決存儲任務(wù)處理時間占據(jù)處理器運行時間高達 10%~20% 的問題,芝加哥大學提出的 LeapIO[44]利用 ARM 協(xié)處理器實現(xiàn)了存儲棧的虛擬化,將整個存儲服務(wù)卸載到協(xié)處理器中完成,并將虛擬 NVMe 存儲器透明地提供給虛擬機使用,在保證存儲性能的同時,降低了 CPU使用率。韓國首爾大學[33]提出的 FCSV-Engine 利用一種快速、靈活、經(jīng)濟的機制來虛擬化可計算存儲設(shè)備。FCSV-Engine 基于 FPGA 實現(xiàn),通過硬件輔助虛擬化和資源編排,實現(xiàn)了高虛擬化性能,其通過動態(tài)構(gòu)造多個虛擬計算存儲設(shè)備,并在硬件層次上調(diào)度虛擬計算存儲設(shè)備的 NDP 能力,實現(xiàn)了較高的成本效益。
任務(wù)分割與調(diào)度:由于盤內(nèi)資源受限,如何合理地分割以及卸載任務(wù)以提高系統(tǒng)性能是一個重要的問題。芝加哥大學[21]通過分析 Spark SQL的工作負載,將可卸載的功能分為 3 類,提出應(yīng)該首先關(guān)注既容易加速又能減少數(shù)據(jù)量的可卸載功能,最典型的例子是卸載正則表達式匹配操作。針對存儲器計算能力弱的問題,南加州大學提出的 Summarizer[22]設(shè)計了一組 API,應(yīng)用程序可利用 API 卸載數(shù)據(jù)密集型任務(wù)。在卸載執(zhí)行過程中,系統(tǒng)根據(jù)存儲器內(nèi)部帶寬和外部帶寬、主機和存儲器計算能力,以及固態(tài)硬盤中的任務(wù)數(shù)量,動態(tài)決定該計算是否可以卸載到存儲器中執(zhí)行。弗吉尼亞理工大學提出的工作流感知的存儲系統(tǒng) AnalyzeThis[45],可通過數(shù)據(jù)放置和工作流編排,最小化數(shù)據(jù)移動開銷并優(yōu)化工作流性能,用戶可通過提供的接口讀寫數(shù)據(jù)、提交分析工作流等??突仿〈髮W提出的 DeltaFS[46]通過收集計算節(jié)點上的空閑計算、內(nèi)存和網(wǎng)絡(luò)資源來進行數(shù)據(jù)計算,隱藏服務(wù)器的瓶頸,并動態(tài)地重新組織程序的寫入,加快后續(xù)的查詢。
利用計算型存儲進行數(shù)據(jù)壓縮是一種主流應(yīng)用,包括數(shù)據(jù)庫、文本數(shù)據(jù)和圖像數(shù)據(jù)等。在不更改上層軟件的情況下,許多工作能做到透明壓縮。但是,存儲器內(nèi)部缺乏對數(shù)據(jù)語義的感知,壓縮率受限,當對數(shù)據(jù)壓縮率和性能有較高要求時,可以利用計算型存儲的可編程特性針對不同數(shù)據(jù)類型提供不同的存儲接口,在存儲器內(nèi)部進行針對性的存儲優(yōu)化。目前,對計算型存儲虛擬化的研究較少,當計算型存儲大規(guī)模部署以及需要執(zhí)行多種應(yīng)用時,虛擬化是必不可少的技術(shù)之一,值得相關(guān)學者對其進行進一步的研究。在現(xiàn)有 NDP 架構(gòu)下,任務(wù)分割方法通常是固定的,可能造成某一端的性能瓶頸,未來可從動態(tài)分割任務(wù)方面進行研究,以提高全系統(tǒng)性能。
目前,面向通用場景的 NDP 系統(tǒng)的研究主要包括:(1)編程框架和操作系統(tǒng)等框架類研究,其旨在簡化系統(tǒng)開發(fā),提高系統(tǒng)可用性和性能;(2)文件系統(tǒng)和數(shù)據(jù)壓縮等支持類研究,其可對現(xiàn)有應(yīng)用提供支持。
在框架類研究方面,已有許多關(guān)于 NDP 編程框架的研究不同程度地減少了開發(fā)工作量,降低了開發(fā)難度。但目前的編程框架仍有很大的局限性:(1)未形成統(tǒng)一的編程環(huán)境,需要在多種開發(fā)環(huán)境下切換,固態(tài)硬盤內(nèi)的開發(fā)環(huán)境相對原始,且缺乏庫的支持;(2)對應(yīng)用不透明,需要對應(yīng)用進行大量的定制化開發(fā)工作;(3)研究工作大多未進行開源,研究者很難在此基礎(chǔ)上進行進一步的研究和使用。針對 NDP 系統(tǒng)的操作系統(tǒng)是解決以上問題的一個有效途徑,但目前相關(guān)研究幾乎處于空白的狀態(tài)。
在支持類研究方面,對于優(yōu)化文件系統(tǒng)的性能和安全性,NDP 技術(shù)具有廣闊的應(yīng)用前景,且在數(shù)據(jù)存取階段,文件系統(tǒng)對 NDP 的數(shù)據(jù)存取階段也可提供良好的支持,但文件系統(tǒng)開銷、數(shù)據(jù)一致性等問題還需進一步研究。盤內(nèi)數(shù)據(jù)壓縮實現(xiàn)了以較低的成本讓現(xiàn)有應(yīng)用獲益,是NDP 系統(tǒng)具有前景的應(yīng)用之一,如何保證 I/O 性能、多盤間協(xié)同壓縮提高壓縮率是下一步的研究方向。
NDP 系統(tǒng)框架為應(yīng)用提供支持,同時應(yīng)用的需求也指導(dǎo)著框架的研究。現(xiàn)有的框架仍存在不足,如不能做到統(tǒng)一開發(fā)環(huán)境、對多應(yīng)用的良好支持等。此外,由于缺乏文件系統(tǒng)和操作系統(tǒng)的支持,導(dǎo)致存儲器對數(shù)據(jù)的獲取、解析以及資源管理較為困難,阻礙了 NDP 系統(tǒng)的大規(guī)模應(yīng)用。
本節(jié)將對特定應(yīng)用的 NDP 系統(tǒng)研究工作進行介紹。目前,針對特定應(yīng)用,普遍使用 NDP系統(tǒng)進行加速,基于這種新型架構(gòu)的應(yīng)用通常具有數(shù)據(jù)量大、計算簡單且可以并行處理的優(yōu)點。其中,較為典型的代表有數(shù)據(jù)庫應(yīng)用,以及其他神經(jīng)網(wǎng)絡(luò)、圖計算等應(yīng)用。面向特定應(yīng)用的 NDP工作總結(jié)如表 2 所示。
表2 面向特定應(yīng)用的 NDP 系統(tǒng)工作總結(jié)Table 2 Summary of NDP system for specific applications
在 NDP 系統(tǒng)研究初期,加州大學提出的Active Disks[5]基于 NDP 系統(tǒng)對數(shù)據(jù)庫加速進行了研究。在多盤并行下,Select 操作和 Sort 操作能夠獲得數(shù)倍的性能提升。進入閃存時代后,2011 年,韓國全北大學提出了基于閃存的 NDP架構(gòu)[47],并對數(shù)據(jù)庫的掃描操作進行了加速。2013 年,威斯康星大學、韓國三星電子與美國微軟公司聯(lián)合提出了 Smart SSD[27],基于商用固態(tài)硬盤實現(xiàn)了 NDP 系統(tǒng),并對 Microsoft SQL Server中的 Select 和 Aggregate 操作進行加速,實現(xiàn)了最高 2.7 倍的性能提升和降低了超過 2/3 的能耗。
數(shù)據(jù)庫作為 NDP 架構(gòu)最具優(yōu)勢的應(yīng)用場景,目前對其研究已經(jīng)較為成熟。2016 年,韓國三星公司發(fā)布的 YourSQL[19]通過將查詢的數(shù)據(jù)掃描階段卸載到計算型存儲中,實現(xiàn)了早期的數(shù)據(jù)過濾,在 TPC-H 基準測試中,縮短了 72% 的執(zhí)行時間,性能提升最高可達 15 倍。值得注意的是,該工作基于編程框架 Biscuit[25],聲稱具有產(chǎn)品級強度。2020 年,中國阿里巴巴公司和美國ScaleFlux 公司[12]將計算型存儲設(shè)備部署到中國阿里巴巴公司的云原生數(shù)據(jù)庫 POLARDB 中,將數(shù)據(jù)庫的表掃描操作卸載到計算型存儲中,在 12種 TPC-H 查詢中,時延縮短超過 30%。自有公開文獻記錄以來,在真實數(shù)據(jù)庫服務(wù)中,這是首次大規(guī)模地部署計算型存儲設(shè)備。
除關(guān)系型數(shù)據(jù)庫外,對計算型存儲在鍵值數(shù)據(jù)庫中的應(yīng)用也有一定研究。2017 年,瑞士聯(lián)邦理工學院提出的 Caribou[51]通過網(wǎng)絡(luò)提供對分布式 DRAM/NVRAM 存儲的鍵-值訪問接口,每個存儲節(jié)點都具備高帶寬的數(shù)據(jù)處理能力,并通過復(fù)制提供容錯能力。2018 年,韓國三星公司提出的 KVSSD[37]在固態(tài)硬盤內(nèi)部實現(xiàn)了鍵值存儲,將 LSM-Tree 由主機內(nèi)存移入 SSD 內(nèi)部,將 FTL中的邏輯地址-頁映射修改為鍵-頁映射,提高了數(shù)據(jù)檢索效率。德國羅伊特林根應(yīng)用技術(shù)大學提出的 nKV[38]在 KVSSD 概念的基礎(chǔ)上加入了硬件檢索加速器,研發(fā)了盤內(nèi)檢索接口 Scan,實現(xiàn)了2 倍的性能提升。
隨著 AI 時代的到來,具有數(shù)據(jù)量大、計算量大特點的神經(jīng)網(wǎng)絡(luò)已深入到各個領(lǐng)域。有研究嘗試將 NDP 技術(shù)應(yīng)用到神經(jīng)網(wǎng)絡(luò)中,對推理和訓(xùn)練進行加速。
中國科學院計算技術(shù)研究所提出的 Cognitive SSD[7]通過在固態(tài)硬盤內(nèi)置基于 FPGA 的加速器DLG-x,實現(xiàn)了近似圖像檢索加速。DLG-x 加速器包括卷積神經(jīng)網(wǎng)絡(luò)加速器和近鄰檢索加速器,服務(wù)器在離線訓(xùn)練完成后,將神經(jīng)網(wǎng)絡(luò)權(quán)重等參數(shù)寫入 DLG-x 加速器。當用戶檢索時,首先將圖片發(fā)送給卷積神經(jīng)網(wǎng)絡(luò)加速器,經(jīng)神經(jīng)網(wǎng)絡(luò)推理后生成該圖片的哈希特征值,然后近鄰檢索加速器根據(jù)哈希特征值檢索出與該圖片最相似的K張圖片返回給用戶。與傳統(tǒng)近似圖像檢索系統(tǒng)相比,該加速器平均減少了 69.9% 的延遲。
美國 NGD System[52]公司將推出的計算型存儲 Newport 應(yīng)用到神經(jīng)網(wǎng)絡(luò)中,并在與美國微軟公司合作的工作中[13],利用 Newport 實現(xiàn)了近似圖片檢索和目標追蹤。NGD System 在與加州大學爾灣分校合作的工作中[48],利用 Newport 實現(xiàn)了分布式近數(shù)據(jù)神經(jīng)網(wǎng)絡(luò)訓(xùn)練,利用基準測試獲取性能參數(shù),計算出每個固態(tài)硬盤分配的最佳批處理大小,并盡可能地使所有計算同時完成。
為解決個性推薦模型中嵌入表參數(shù)量大的問題,哈佛大學提出 RecSSD[14]將嵌入表操作中的聚合操作卸載到固態(tài)硬盤中執(zhí)行,利用 UNVMe 驅(qū)動庫實現(xiàn)了用戶態(tài)的驅(qū)動器訪問,降低了端到端的時延。為解決非結(jié)構(gòu)化數(shù)據(jù)查詢的 I/O 瓶頸問題,伊利諾伊大學香檳分校提出的 DeepStore[49]設(shè)計了一種支持全連接網(wǎng)絡(luò)、卷積網(wǎng)絡(luò)、元素(element-wise)和排序 4 種智能查詢操作的近存儲計算加速器,與使用 GPU 的查詢系統(tǒng)相比,性能提高了 17.7 倍。
除數(shù)據(jù)庫與神經(jīng)網(wǎng)絡(luò)外,NDP 技術(shù)還應(yīng)用于圖計算、大數(shù)據(jù)分析、模式匹配等大數(shù)據(jù)場景中。
圖計算:在社交網(wǎng)絡(luò)、金融分析和推薦系統(tǒng)等應(yīng)用中,圖計算發(fā)揮著關(guān)鍵作用,但圖的大小可能超過內(nèi)存容量,導(dǎo)致 I/O 操作成為圖計算應(yīng)用的瓶頸。南加州大學提出的 GraphSSD[20]在固態(tài)硬盤中執(zhí)行圖分析操作和圖更新操作的同時,在圖存儲時考慮圖結(jié)構(gòu),采用頂點-頁面映射方案取代固態(tài)硬盤中傳統(tǒng)的邏輯到物理頁面映射機制,實現(xiàn)了 1.85 倍的性能提升。中國科學院計算技術(shù)研究所提出的 GLIST[9]在存儲器中添加了圖學習加速器,包含圖采樣器、緩沖區(qū)和 PE 陣列,支持圖更新、模型注冊等操作,與 CPU 和GPU 的方法相比,GLIST 分別實現(xiàn)了 13.2 倍和10.1 倍的性能提升。美國麻省理工學院提出的GraFBoost[53]通過 NDP 技術(shù),利用少量內(nèi)存即可實現(xiàn)高性能的圖分析。
大數(shù)據(jù)分析:大數(shù)據(jù)的超大數(shù)據(jù)量對存儲和分析系統(tǒng)提出了新的挑戰(zhàn)。韓國漢陽大學提出的Intelligent SSD[10-11]通過在每個閃存通道上設(shè)置加速器的方式加速數(shù)據(jù)挖掘過程,將 Map-Reduce模型應(yīng)用到 NDP 系統(tǒng)中,由每個加速器執(zhí)行 Map操作后利用嵌入式處理器執(zhí)行 Reduce 操作,帶來了 2~4 倍的性能提升。美國 ScaleFlux 公司[39]的CSS1000 和韓國三星公司[54-55]都曾嘗試將 NDP 技術(shù)應(yīng)用到 Hadoop 框架中。
模式匹配:模式匹配是許多應(yīng)用的基礎(chǔ),其具有數(shù)據(jù)量大但有效數(shù)據(jù)少的特點,適合利用 NDP 技術(shù)進行加速。韓國延世大學提出的REACT[50]設(shè)計了一種適用于 NDP 架構(gòu)的正則匹配加速器,利用并行處理架構(gòu),可同時處理多個輸入流,通過隱藏延遲提高性能,基于 NVMe SSD 可提高 22.6% 的吞吐量。INSIDER[8]利用FPGA 實現(xiàn)了 grep 操作的加速,實現(xiàn)了超過 8 倍的性能提升。
目前,針對特定應(yīng)用的 NDP 系統(tǒng)包括數(shù)據(jù)庫、人工智能、圖計算等。數(shù)據(jù)庫具有原始數(shù)據(jù)量大、有效數(shù)據(jù)少、數(shù)據(jù)操作較簡單和易于分布式處理的特點,是 NDP 系統(tǒng)的主要應(yīng)用場景。人工智能需要大量的數(shù)據(jù)集,其利用 NDP 技術(shù)進行神經(jīng)網(wǎng)絡(luò)訓(xùn)練和推理,除了可以減少大量數(shù)據(jù)傳輸、實現(xiàn)并行處理外,還可以帶來安全性能的提升,未來可與聯(lián)邦學習[56]技術(shù)相結(jié)合,解決在高隱私要求和分布場景下的神經(jīng)網(wǎng)絡(luò)訓(xùn)練問題。但固態(tài)硬盤的資源受限,NDP 系統(tǒng)如何應(yīng)對神經(jīng)網(wǎng)絡(luò)所需的高算力需求是亟待解決的問題。圖計算中的圖數(shù)據(jù)具有一定的結(jié)構(gòu)性,現(xiàn)有工作一般是通過更改存儲接口,以適應(yīng)圖存儲的特點,并在存儲器中更改映射結(jié)構(gòu),以獲得更高的存取效率,此外,還可利用硬件加速器對圖計算相關(guān)操作進行加速。
在系統(tǒng)設(shè)計時,針對特定應(yīng)用的 NDP 系統(tǒng)充分考慮了應(yīng)用的特性,具有較好的性能,得到了廣泛的應(yīng)用。但由于專用性強,需要進行全系統(tǒng)設(shè)計,開發(fā)代價較高,若需要對系統(tǒng)進行更改,成本很高。如何提高性能、利用有限的性能進行系統(tǒng)優(yōu)化,以及增強系統(tǒng)通用性和靈活性是未來的研究重點。
NDP 架構(gòu)從最早的基于模擬器的理論研究階段[5-6,47]到硬件驗證階段[7,9,13],再到目前正在進行的真實系統(tǒng)部署階段[12],從基于機械硬盤的研究[5]到基于 SATA SSD 的研究[27],再到基于NVMe SSD 的研究[7],實驗方法、平臺以及工業(yè)界的產(chǎn)品與標準互相促進,共同進步。本節(jié)主要針對支持相關(guān)研究的模擬器、硬件平臺、相關(guān)產(chǎn)品和標準進行介紹。NDP 系統(tǒng)軟硬件平臺與產(chǎn)業(yè)現(xiàn)狀總結(jié)如表 3 所示。
表3 NDP 系統(tǒng)軟硬件平臺與產(chǎn)業(yè)現(xiàn)狀總結(jié)Table 3 Summary of software and hardware platform and industry status of NDP system
除在商業(yè)硬件上實現(xiàn) NDP 架構(gòu)[19,25]的工作外,由于成本和平臺的限制,許多研究都采用模擬的方法。芝加哥大學設(shè)計的 FEMU[57],基于QEMU 實現(xiàn)了多通道的固態(tài)硬盤模擬器,可模擬黑盒(塊設(shè)備)、白盒(開放通道)和 ZNS 固態(tài)硬盤,F(xiàn)EMU 包含整個計算和存儲系統(tǒng)的軟硬件棧模擬,可支持 NDP 架構(gòu)的相關(guān)研究。韓國延世大學提出的 SimpleSSD[58-59]基于 Gem5 實現(xiàn)了全系統(tǒng)模擬器,可對嵌入式處理器、內(nèi)存和閃存等整個軟硬件棧進行建模,并開展相關(guān)研究[50]。INSIDER[8]基于亞馬遜的 FPGA 云實現(xiàn)了閃存控制器和近數(shù)據(jù)計算單元。韓國科技院[66]使用英特爾推出的眾核加速卡 MIC 模擬多核嵌入式處理器。伊利諾伊大學香檳分校和華中科技大學使用 SSDSim[49,60]模擬可編程固態(tài)硬盤。此外,多種對現(xiàn)代多隊列固態(tài)硬盤進行全系統(tǒng)模擬的模擬器[67-68]也具有進行 NDP 系統(tǒng)研究的潛力。
隨著固態(tài)硬盤的普及和應(yīng)用,涌現(xiàn)出了許多支持 NDP 系統(tǒng)研究的開放硬件平臺,相關(guān)研究工作不再局限于軟件模擬。韓國漢陽大學推出的開放固態(tài)硬盤平臺 OpenSSD[61]通過內(nèi)置的ZYNQ 芯片實現(xiàn)了包括 PCIe 控制器、閃存控制器和 FTL 等功能,開放二次開發(fā)方法,具有很高的靈活性,可實現(xiàn)開放通道固態(tài)硬盤[35]和多種NDP 系統(tǒng)[9,14,28]。戴爾公司推出的可編程固態(tài)硬盤 DFC[62-63]具有 8 核 ARMv8 處理器、16 GB 內(nèi)存和多種硬件加速器(壓縮解壓縮、加密等),通過可替換的存儲模塊實現(xiàn)了對多種存儲介質(zhì)的支持。可同時支持 RDMA 訪問,支持通過 PCIe 安裝閃存或其他形式的非易失性存儲器[4]。
目前,NDP 架構(gòu)已經(jīng)在某些固態(tài)硬盤產(chǎn)品中實現(xiàn),除前文提到的 ScaleFlux[39,69]支持數(shù)據(jù)壓縮功能和定制化的數(shù)據(jù)處理功能,NGD System[52]發(fā)布的包含 NDP 專用的 4 核 ARM A53 的企業(yè)級計算型存儲外,還有中國深圳大普[15]發(fā)布的嶸神 5 系列 PCIe SSD。該產(chǎn)品包含其自研的固態(tài)硬盤控制器 DPU600,支持數(shù)據(jù)實時加解密存儲和智能數(shù)據(jù)處理與分析等功能。三星 Smart SSD 已經(jīng)發(fā)布的第 3 代產(chǎn)品[26,70],該產(chǎn)品通過 FPGA+獨立固態(tài)硬盤控制器的架構(gòu)實現(xiàn)計算型存儲。ARM 發(fā)布的計算型存儲專用核心 R82[71],可以運行 Linux 系統(tǒng),最高支持 1 TB DRAM,結(jié)合 ARM Neon 等技術(shù)可滿足高端計算型存儲的需求。
在產(chǎn)業(yè)標準方面,2019 年,中國阿里巴巴公司提出了計算型存儲 AliFlash V5[72],并與韓國三星公司、美國 ScaleFlux 公司合作構(gòu)建生態(tài)。2020 年,SNIA 成立了計算型存儲工作組,發(fā)布了計算型存儲體系結(jié)構(gòu)和編程模型草案[65],目的是制定行業(yè)標準,實現(xiàn)設(shè)備和系統(tǒng)之間的互操作,該草案定義了存儲器與主機或存儲器間的接口和功能,包含管理、安全和操作等方面;同年,ARM 發(fā)布了計算型存儲白皮書[64],討論了計算型存儲的優(yōu)勢、應(yīng)用方法與應(yīng)用領(lǐng)域。
多種模擬器和開放硬件平臺為 NDP 架構(gòu)的研究帶來了便利,但這些模擬器和硬件平臺通常不是針對 NDP 技術(shù)研究開發(fā)的,缺乏相關(guān)資料和庫的支持,導(dǎo)致基于模擬器和開放硬件平臺的研究和開發(fā)門檻較高,如何降低開發(fā)難度是一個尚未解決的問題。目前,NDP 架構(gòu)并未被大規(guī)模應(yīng)用,與產(chǎn)品成本較高、生態(tài)不成熟等因素有關(guān)。隨著產(chǎn)品性能和易用性的提升,以及標準的成熟,NDP 技術(shù)將會在實際場景中得到越來越多的應(yīng)用。
目前,基于閃存的 NDP 技術(shù)作為解決存儲墻問題的有效手段得到了一定程度的研究與應(yīng)用。相關(guān)研究與應(yīng)用包括編程框架、文件系統(tǒng)、數(shù)據(jù)壓縮等面向通用的場景,以及數(shù)據(jù)庫、人工智能等面向?qū)S脩?yīng)用的場景,均具有一定的性能、成本和功耗的優(yōu)勢。但是,目前 NDP 架構(gòu)仍不夠成熟,在通用性和性能等方面還需進一步完善。目前的解決方案還存在以下問題:
(1)編程模型與開發(fā)框架。目前,雖然在NDP 領(lǐng)域已有一定數(shù)量的研究成果和上市產(chǎn)品,但并沒有形成固定的編程模型,有基于會話的模型[27]、數(shù)據(jù)流模型[8]和分布式模型[13]等各種模型。針對特定應(yīng)用的加速通常是基于 NVMe 協(xié)議擴展的自定義指令,由于目前缺乏相關(guān)標準,缺乏通用性,為后續(xù)開發(fā)、應(yīng)用和研究帶來了困難。隨著行業(yè)的成熟以及標準的建立,相信這些問題會逐漸得到解決。
(2)數(shù)據(jù)訪問問題。與傳統(tǒng)的以計算為中心的架構(gòu)相比,NDP 系統(tǒng)需要從存儲器內(nèi)部直接獲取數(shù)據(jù),帶來了新的挑戰(zhàn),例如:①數(shù)據(jù)安全問題,如何保證 NDP 應(yīng)用無法訪問到不屬于當前用戶的數(shù)據(jù);②訪問效率問題,現(xiàn)有方案通常采用傳輸數(shù)據(jù)塊地址的方法告知 SSD 所需數(shù)據(jù)位置,帶來了額外的數(shù)據(jù)訪問開銷,且加重了 CPU 的負擔;③一致性問題,如何保證主機訪問到的數(shù)據(jù)與 NDP 單元訪問數(shù)據(jù)的一致性問題。
(3)可擴展性問題。當進行大規(guī)模部署時,NDP 系統(tǒng)能夠充分發(fā)揮其高并發(fā)性以及高可擴展性的優(yōu)勢,但現(xiàn)有工作通常在單存儲器場景下展開,當部署數(shù)量提高時,會帶來性能隔離、多副本數(shù)據(jù)一致性、異構(gòu)數(shù)據(jù)的處理等問題和挑戰(zhàn)。此外,由于閃存的壽命較短,當存儲單元壽命耗盡時,計算單元通常仍可正常工作。對于失去存儲功能但仍具有計算功能的節(jié)點,如何妥善處理這些節(jié)點是大規(guī)模部署下亟待解決的問題。除上文中提及的當前解決方案中存在的問題外,未來的研究還可以從以下幾個方面進行:
(1)與 AI 技術(shù)結(jié)合。與 AI 技術(shù)的結(jié)合可以通過兩方面進行:①設(shè)計針對 AI 應(yīng)用進行優(yōu)化的近數(shù)據(jù)存儲系統(tǒng)。如通過 NDP 技術(shù)優(yōu)化 AI 網(wǎng)絡(luò)的數(shù)據(jù)處理部分[14],針對 AI 算法的特性(如容錯率高、非常結(jié)構(gòu)化的訪問模式)進行存儲優(yōu)化,設(shè)計表達神經(jīng)網(wǎng)絡(luò)數(shù)據(jù)訪問意圖的 API[73],通過緩存中間結(jié)果[74]、檢查點[75]、數(shù)據(jù)追蹤[76]等技術(shù)優(yōu)化 AI 網(wǎng)絡(luò)的各個階段。②使用 AI 技術(shù)對存儲系統(tǒng)進行優(yōu)化。如利用神經(jīng)網(wǎng)絡(luò)預(yù)測數(shù)據(jù)訪問模式,有利于優(yōu)化數(shù)據(jù)緩存[77]、預(yù)取[78]和存儲資源配置[79],還可檢測存儲系統(tǒng)的故障和數(shù)據(jù)損壞[80]等。
(2)研發(fā)針對 NDP 架構(gòu)的操作系統(tǒng)。由于存儲器內(nèi)的計算資源越來越豐富,需要管理的資源和工作負載類型也越來越多,傳統(tǒng)的裸機開發(fā)方法已經(jīng)難以應(yīng)對這些挑戰(zhàn)。若引入完整的桌面級操作系統(tǒng)(如 Linux),會導(dǎo)致性能開銷過高,給性能受限的嵌入式處理器帶來過大的負擔;而嵌入式操作系統(tǒng)(如 FreeRTOS)又難以支撐計算型存儲對任務(wù)動態(tài)加載、提供運行環(huán)境的需求,因此,需要研究面向 NDP 架構(gòu)的操作系統(tǒng),在滿足資源管理需求的同時,充分利用存儲器性能。
(3)實現(xiàn)對更多應(yīng)用的加速。由于相關(guān)標準的缺乏和生態(tài)的不成熟,針對特定應(yīng)用進行優(yōu)化在未來的一段時間內(nèi)仍將是 NDP 技術(shù)的主要應(yīng)用方法。但 NDP 系統(tǒng)具有性能相對較低,所面向的應(yīng)用訪存特性差異大等特點。即使是具有相對通用的編程框架,也需要針對不同的應(yīng)用進行針對性的優(yōu)化,才能充分發(fā)揮 NDP 系統(tǒng)的優(yōu)勢,規(guī)避短板。因此,一方面可針對更多類型的應(yīng)用(如自動駕駛、金融分析和藥物研發(fā)等)進行優(yōu)化,另一方面還可研究具有一定通用性的領(lǐng)域?qū)S密浖涌?,以及對相關(guān)軟件庫進行研究。通過軟件接口和庫的深度優(yōu)化,可簡化具有相似特性的 NDP 應(yīng)用的開發(fā)工作,便于應(yīng)用的部署,提升應(yīng)用性能。
在大數(shù)據(jù)和人工智能時代,NDP 架構(gòu)減少了數(shù)據(jù)遷移,提高了擴展性和安全性,降低了功耗和成本,是解決存儲墻問題的有效途徑。本文總結(jié)了 NDP 架構(gòu)的概念、優(yōu)勢、相關(guān)研究、相關(guān)產(chǎn)品和行業(yè)標準,提出了目前存在的問題以及未來的研究方向。NDP 技術(shù)現(xiàn)已得到了學術(shù)界和工業(yè)界越來越多的關(guān)注,具有廣闊的應(yīng)用前景。然而,該技術(shù)仍然面臨著許多問題以及尚未探索的領(lǐng)域,值得相關(guān)學者對其進一步深入探索。