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