除了做SSD還能干點啥?
DPU600是DapuStor業(yè)內(nèi)首創(chuàng)的智能存儲SoC,基于最新的12nm FinFET工藝,可作為SSD主控提供業(yè)界領(lǐng)先的性能,還集成了可計算存儲平臺,用于ASIC加速的機器學(xué)習(xí)架構(gòu)等。
上期講到得益于DPU600內(nèi)置的應(yīng)用處理器平臺,可以將DPU600作為SSD Tester的Client平臺。本期小編再說道說道,其他非傳統(tǒng)SSD功能-關(guān)于計算存儲的功能,這是研發(fā)小伙伴們努力后的干貨。
同樣地,小編需要先說道說道一下背景:
在大數(shù)據(jù)應(yīng)用的背景下,海量的數(shù)據(jù)傳輸占用了各類總線,網(wǎng)絡(luò)帶寬,與此同時,固態(tài)硬盤(SSD)本身含有的CPU的算力也越來越強。為了減少大數(shù)據(jù)量的傳輸,從而衍生出各類對存儲計算一體化(PIS-Processing In Storage)的需求,即在數(shù)據(jù)端固態(tài)硬盤內(nèi)進行計算處理,僅傳輸結(jié)果和部分數(shù)據(jù),從而減少海量數(shù)據(jù)傳輸,減輕總線和網(wǎng)絡(luò)負載(Offloading)。一般而言,對I/O通信帶寬敏感(I/O intensive)和對數(shù)據(jù)敏感(Data-intensive)的兩類操作;而需要高效計算、對CPU計算敏感的操作則不適合Offloading到SSD中。
有人肯定想問,小編你說這么多,光有想法好像有點空泛,有沒有具體方案和應(yīng)用場景?
小編必須承認:存算一體化固態(tài)硬盤(PIS-SSD)的相關(guān)架構(gòu)和實現(xiàn)技術(shù),目前確實相當少見被公布,畢竟在SSD領(lǐng)域,這里比較前沿的技術(shù)。在小編送出N個雞腿情況下,研發(fā)小伙伴還是給了一些材料,以便進行探討;
首先說說現(xiàn)有的技術(shù),如圖1,存儲器端運行的是裸系統(tǒng)(BareMetal)-固件(Firmware),系統(tǒng)偏重于進行硬件支持的相關(guān)數(shù)據(jù)處理,而對應(yīng)計算相關(guān)的需求,一般僅能承接部分簡單的數(shù)據(jù)計算,這主要是引入過多的數(shù)據(jù)計算,會影響存儲功能的實時處理。一般地,當有相關(guān)計算需求(主要是邊緣計算(EdgeComputing),機器學(xué)習(xí)(MachineLearning),主機通過自定義命令的形式通知SSD系統(tǒng)進行處理,此種方式不夠靈活,且偏重于定制化,其開發(fā)應(yīng)用效率低,無法滿足更多計算應(yīng)用的需求。
圖1
說到這里,大家想到了DPU600肯定有什么東東,可以在此類應(yīng)用上發(fā)揮作用?沒錯,大普微正在探索在DPU600上實現(xiàn)一種存儲計算一體的固態(tài)硬盤。
先看一下,相對于圖1,我們的設(shè)計基于如圖2,服務(wù)器或者本地CPU成為主機(Host)系統(tǒng),主機系統(tǒng)可以同一個系統(tǒng),也可以是不同的主機系統(tǒng)(如本地+網(wǎng)絡(luò))。同樣地,一般存儲管理和計算管理是同一系統(tǒng),也可以是不同系統(tǒng)。主機系統(tǒng)不在本文談?wù)摲秶?,只是為了說明相關(guān)性,主要是將服務(wù)器或者本地CPU的相關(guān)計算(存算應(yīng)用程序)進一步減輕負載(Offloading)到存儲器(固態(tài)硬盤)內(nèi),同時必須減少對固件實時處理影響。故而為了使計算應(yīng)用程序在存儲器內(nèi)能發(fā)揮更多更靈活的作用,且不影響存儲本身功能的實時性,在存儲器(固態(tài)硬盤)系統(tǒng)內(nèi)設(shè)計成至少兩個獨立的軟件系統(tǒng),一個用于存儲數(shù)據(jù),一個用于計算應(yīng)用。
基于此這種需求,那么設(shè)計需求上:
1.由于DPU600具有雙CPU Cluster架構(gòu),可以滿足運行雙系統(tǒng)的需求。同樣地, DPU600有2個主機接口(PCIe),滿足數(shù)據(jù)的存儲和計算兩種通路需求,即一個主機接口用于數(shù)據(jù)存儲,另一個主機接口用于數(shù)據(jù)計算。
2.系統(tǒng)架構(gòu)上,采用異構(gòu)并行系統(tǒng),包含兩個系統(tǒng):實時處理系統(tǒng)和應(yīng)用操作系統(tǒng)。一個CPU Cluster上運行實時處理系統(tǒng),一般是固件(BareMetal Firmware),專門處理存儲事務(wù);另一個CPU Cluster上運行計算應(yīng)用系統(tǒng),一般是應(yīng)用操作系統(tǒng),如Linux,專門處理計算應(yīng)用事務(wù)?;诟髯圆煌匦韵到y(tǒng)獨立并行運行,提高其各自對應(yīng)的事務(wù)的處理效率。
圖2
為了隔離軟件系統(tǒng)的不同特性,軟件系統(tǒng)之間,通過IPC(Inter-Process Communication)機制進行通信,完成數(shù)據(jù)和信息的交互,即通過IPC傳遞IO操作。其在CPU上軟件布局如圖3,其IPC的實現(xiàn)包括軟件FIFO,硬件 FIFO,共享內(nèi)存,硬件IPC邏輯電路等。
圖3
小編根據(jù)研發(fā)小伙伴的建議,這里把關(guān)鍵IO操作處理流程進行探討一下:
如圖4,描述了2個軟件系統(tǒng)的IO操作在主要模塊流向,其中
1.PIS應(yīng)用系統(tǒng),除了OSKernel之外, 包括:
數(shù)據(jù)計算應(yīng)用層,用于進行和主機任務(wù)相關(guān)應(yīng)用處理。由于基于操作系統(tǒng)(OS),應(yīng)用層的開發(fā)具有非常高的通用性,可以脫離相關(guān)硬件特性,應(yīng)用包括搜索引擎的求列表交集(List Intersection),MySQL的檢索等。數(shù)據(jù)計算中間層,處理底層驅(qū)動和應(yīng)用層的銜接事務(wù)。如將數(shù)據(jù)計算任務(wù)轉(zhuǎn)化成特定的IO操作。專用驅(qū)動層,主要處理和硬件特性相關(guān)驅(qū)動處理,如IPC相關(guān)接口出來,同時負責(zé)發(fā)送或者接收特定的IO操作。
2.存儲RTOS/FW系統(tǒng),是典型的存儲處理模塊系統(tǒng),包括:
前端模塊(FE)負責(zé)主機通信協(xié)議棧,命令數(shù)據(jù)分發(fā)處理。數(shù)據(jù)處理模塊(DP)負責(zé)數(shù)據(jù)通路的處理,如寫(讀)緩存的管理。算法模塊(FTL)負責(zé)映射表的管理,閃存數(shù)據(jù)分布管理等。后端模塊(BE)負責(zé)閃存數(shù)據(jù)讀寫和相關(guān)閃存命令的管理。
兩個系統(tǒng)均有分層結(jié)構(gòu),那么兩個系統(tǒng)之間傳遞的IO操作,可以在底層設(shè)定的特定數(shù)據(jù)處理單元,該數(shù)據(jù)單元通過IPC系統(tǒng)進行傳遞。數(shù)據(jù)單元包括數(shù)據(jù),操作信息等。對應(yīng)驅(qū)動而言,派發(fā)或者讀取IO操作是把IO操作的信息寫入或者讀取到“FIFO/共享內(nèi)存/硬件IPC邏輯電路”的接口,從而較好的隔離兩個系統(tǒng)。
圖4
存儲相關(guān)典型操作流程,除了其中計算需求的IO視作另一種FE的數(shù)據(jù)需求,其他處理方式可以通用化,即總體流程和現(xiàn)有技術(shù)大同小異,不再累述。整個系統(tǒng)設(shè)計時(指主機系統(tǒng)+存算系統(tǒng))會將計算應(yīng)用需求中分解出成適用于存算的計算應(yīng)用到存算系統(tǒng)。當有存算系統(tǒng)計算需求時,主機系統(tǒng)將發(fā)操作任務(wù)給存儲器內(nèi)的存算系統(tǒng),其中相關(guān)任務(wù)包括但不限于數(shù)據(jù)搜索(Search),數(shù)據(jù)比較(Compare),數(shù)據(jù)標簽(Tag),數(shù)據(jù)索引(Index)。存算系統(tǒng)收到任務(wù)后,在應(yīng)用系統(tǒng)進行任務(wù)分解,轉(zhuǎn)化為IO操作給存儲系統(tǒng)進行數(shù)據(jù)操作(主要是從閃存顆粒讀數(shù)據(jù)),存儲系統(tǒng)完成數(shù)據(jù)操作后,將數(shù)據(jù)返回給應(yīng)用系統(tǒng)進行數(shù)據(jù)計算,完成所有任務(wù)對應(yīng)的數(shù)據(jù)計算后,其中由于DPU600包含硬件PIS處理能力,故而處理時硬件PIS處理通過專用驅(qū)動完成,而軟件PIS處理則在計算應(yīng)用系統(tǒng)的應(yīng)用層程序完成。應(yīng)用系統(tǒng)回報計算結(jié)果給主機系統(tǒng),而不需要報整IO數(shù)據(jù)回給主機。
小編在這里Copy過來:一種計算應(yīng)用場景,在DPU600的加持下,下面所述的計算需求更容易Offloading到存儲器內(nèi)部的應(yīng)用系統(tǒng)。
服務(wù)器一種典型的搜索應(yīng)用,傳統(tǒng)的所有步驟步驟均是在主機計算完成。在引入存算一體化存儲器之后,可以把部分計算移入到存取器內(nèi)。如圖5,“獲得倒排序表”“計算列表操作”,存儲器內(nèi)完成后僅返回結(jié)果。我們的設(shè)計采用計算應(yīng)用獨立系統(tǒng)之后,對于哪些步驟(具有應(yīng)用可擴展性)移入存儲器內(nèi),可以更靈活:可以把對應(yīng)步驟的程序?qū)崟r在線地移植到存儲器內(nèi)OS上,而不是通過更新固件才能遷入。比如步驟獲得元數(shù)據(jù)和計算相似度和排序,可以根據(jù)存儲器內(nèi)CPU算力,或者存取器內(nèi)系統(tǒng)負載程度,來決定來是否有存儲器內(nèi)進行承接計算。
圖5
原文標題:SSD主控芯片,除了做SSD還能干點啥?-II
文章出處:【微信公眾號:大普微】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
責(zé)任編輯:haq
-
芯片
+關(guān)注
關(guān)注
452文章
50206瀏覽量
420871 -
SSD
+關(guān)注
關(guān)注
20文章
2833瀏覽量
117125
原文標題:SSD主控芯片,除了做SSD還能干點啥?-II
文章出處:【微信號:dputech,微信公眾號:DapuStor】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論