0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

FPGA加速圖數(shù)據(jù)庫查詢執(zhí)行

OSC開源社區(qū) ? 來源:OSCHINA 社區(qū) ? 2023-02-23 10:22 ? 次閱讀

來源 | OSCHINA 社區(qū)

作者 | KaiwuDB

導(dǎo)讀

本篇博客主要講解發(fā)布于 Microprocessors and Microsystems 的文章《Semi-static Operator Graphs for Accelerated Query Execution on FPGAs》,介紹它所提出的算法與試驗結(jié)果,并結(jié)合實際情況給出一些思考。

一、背景介紹

在當(dāng)今的數(shù)據(jù)化場景越來越豐富的大環(huán)境下,涌現(xiàn)出的非結(jié)構(gòu)化數(shù)據(jù)存儲分析被應(yīng)用于多數(shù)領(lǐng)域。 為了使機器能夠自動分析數(shù)據(jù),語義網(wǎng)絡(luò)的概念被創(chuàng)建,元數(shù)據(jù)被用來描述和鏈接任何類型的數(shù)據(jù)和資源。

面對存儲和處理大規(guī)模的數(shù)據(jù),除了不斷被優(yōu)化的數(shù)據(jù)結(jié)構(gòu)外,硬件也是需要被極大優(yōu)化的。 海量數(shù)據(jù)的持續(xù)存儲在當(dāng)今硬件環(huán)境下是沒有問題的,但是要實現(xiàn)在一個可以被接受的、被允許的時間范圍內(nèi)進行處理和分析則變得愈發(fā)艱難。

因此,許多數(shù)據(jù)庫系統(tǒng)逐漸傾向于異構(gòu),由專門的計算內(nèi)核來有效地執(zhí)行特定的任務(wù)。

那么不得不提的,便是高性能計算常用到的 GPU (圖形處理器)。 GPU 最突出的優(yōu)點是高性能,即高密度運算和高效并行性,非常適合處理計算密集型的任務(wù); 同時,其易于連接到處理器端的屬性也是它可以被廣泛應(yīng)用的原因。 然而,其缺點也是顯而易見的,就是高功耗。

在 GPU 之外,還存在為特定任務(wù)設(shè)計的專有硬件加速器,其對于指定的任務(wù)擁有較高的性能,但是其使用非常的不靈活,只能處理特定的任務(wù),重新擴展的性能幾乎為零。

最后,則是最近被廣泛使用的 FPGA,它具有動態(tài)部分重配置的能力,可以縮小 CPU 的靈活性和專用硬件加速器的性能之間的差距,并且還擁有低功耗、高并發(fā)的優(yōu)勢。

a6a86fde-b2e3-11ed-bfe3-dac502259ad0.png

FPGA 卡的核心部分示意圖

如上圖所示,一塊 FPGA 芯片由可配置邏輯模塊(CLB)構(gòu)成,每個 CLB 都包含特定的結(jié)構(gòu),如:查找表(LUT)、多路復(fù)用器、進位鏈、觸發(fā)器等。 除此之外,一塊 FPGA 卡上還有 BRAM(Block RAM),可以將其想象成 CPU 中 cache 的角色,以及 DSP (數(shù)字信號處理器)和一些通信接口(PCIe 等)。

這篇文章通過引入半靜態(tài)操作符圖,設(shè)計了一個 FPGA-CPU 異構(gòu)的圖數(shù)據(jù)庫系統(tǒng),加速了在大規(guī)模語義數(shù)據(jù)集上的查詢性能。

二、相關(guān)工作

a6ca9d3e-b2e3-11ed-bfe3-dac502259ad0.png

上圖為一個 FPGA-CPU 混合處理運算的基本架構(gòu),客戶端應(yīng)用程序向混合數(shù)據(jù)庫服務(wù)器發(fā)送查詢,該服務(wù)器使用基于 FPGA 的硬件加速器透明地確定結(jié)果。

文中主要引用的內(nèi)容為:

Dennl 等人提出了關(guān)系型數(shù)據(jù)庫 MySQL 中 SQL 查詢的實時硬件加速的概念,但他們主要關(guān)注限制和聚合操作符,因此無法在 FPGA 上執(zhí)行完整的查詢。

Becher 等人添加了更復(fù)雜的運算符(例如:歸并連接、小數(shù)據(jù)集上的排序)。 對于一個包含一個 Join 的簡單的查詢,它們的性能與標(biāo)準(zhǔn)的基于 x86 的系統(tǒng)相當(dāng),不過能源效率更高一些。

Woods 等人提出了 Ibex,一種用于關(guān)系數(shù)據(jù)庫 MySQL 的智能存儲引擎,可以支持使用 FPGA 卸載復(fù)雜的查詢操作符。

Wang 等人使用 OpenCL high level synthesis (HLS) 將數(shù)據(jù)庫操作符實現(xiàn)為 FPGA 的 Kernel。 但是查詢只用到了范圍檢查和一個 Join,相對簡單。

Heinrich 等人提出了一種混合索引結(jié)構(gòu),它在 FPGA 上存儲包括根節(jié)點在內(nèi)的高層 B+ 樹,在主機上存儲包括葉子節(jié)點在內(nèi)的低層。

而本文是第一個針對語義 Web 數(shù)據(jù)庫完全集成的基于 FPGA 的查詢引擎。

在介紹本文的混合數(shù)據(jù)庫系統(tǒng)之前,先介紹一下本文用到的圖數(shù)據(jù)庫基礎(chǔ)。 論文的工作是基于一個開源的圖數(shù)據(jù)庫系統(tǒng) LUPOSDATE,它支持完整的 SPARQL 1.0 和 SPARQL 1.1 標(biāo)準(zhǔn)查詢語言。 論文通過引入基于 FPGA 的查詢引擎,與 LUPOSDATE 系統(tǒng)結(jié)合在一起。

LUPOSDATE 使用 RDF 三元組作為基本數(shù)據(jù)格式來描述 Web 資源,RDF 三元組表示為 ,其中 s 是 subject (主語)、p 是 predicate (謂詞)、o 是 object (賓語)。

相應(yīng)的,LUPOSDATE 存儲的 B+ 樹索引結(jié)構(gòu)有六種:SPO、SOP、PSO、POS、OSP、OPS,可以在檢索時方便的得到有序的三元組。 除此之外,LUPOSDATE 還維護一個 ISTree 和一個 SITree,用于 RDF 字符串和整數(shù) id 之間的映射,這有利于 FPGA 模塊的設(shè)計,因為 FPGA 無法處理不定長度的字符串。

如下圖所示,對于給定的一個 SPARQL 查詢:

a6ee090e-b2e3-11ed-bfe3-dac502259ad0.png

LUPOSDATE 語法分析器會產(chǎn)生相應(yīng)的變量數(shù)組和操作符圖:

a711905e-b2e3-11ed-bfe3-dac502259ad0.png

三、論文解決的問題

a72463f0-b2e3-11ed-bfe3-dac502259ad0.png

本文實現(xiàn)的混合數(shù)據(jù)庫系統(tǒng)是一個 LUPOSDATE 的擴展,由 CPU 主機和 FPGA 異構(gòu)而成,如上圖所示。 主機提供更高層級的功能,如用戶界面、查詢優(yōu)化、評估指標(biāo)維護等,而 FPGA 被用作查詢執(zhí)行時的自適應(yīng)加速器。 主機和 FPGA 之間的通信是基于外設(shè)原件 PCIe 的。

FPGA 區(qū)域被劃分為靜態(tài)邏輯和許多個小 RP,每個 RP 可以配置任意類型的運算符,每個運算符作為一個可配置模塊是提前生成的。 靜態(tài)邏輯包含與實際查詢結(jié)構(gòu)獨立的模塊,包括 PCIe 接口、一個管理模塊和查詢協(xié)調(diào)器(QC)。

QC 的主要任務(wù)是將傳入的三元組交給最上層的 RP 進行相應(yīng)索引結(jié)構(gòu)的導(dǎo)入,以及檢索和序列化變量數(shù)組用以生成最終結(jié)果。 此外,每個 RP 之間的互聯(lián)也位于靜態(tài)邏輯中。 每個實現(xiàn)的查詢操作符都使用了如下圖所示的一個公共模板:

a73a378e-b2e3-11ed-bfe3-dac502259ad0.png

每個操作符至多有兩個前向操作符和一個后向操作符,如果一個操作符只需要一個前向操作符,那么只有左邊的輸入被啟用。 每一個輸入或輸出都有如下參數(shù):一個 data 向量對應(yīng)輸入輸出的數(shù)組,一個 valid 信號表示數(shù)據(jù)的有效性,一個 finished 參數(shù)指定數(shù)據(jù)的結(jié)尾,一個反向 read 信號通知前向操作符數(shù)據(jù)已經(jīng)被讀取,并且在新數(shù)據(jù)到來之前不會進行操作。 最后,數(shù)據(jù)的寬度也必須作為一個參數(shù)傳入,因為 FPGA 無法支持變長的數(shù)據(jù)類型。

下面介紹一下論文實現(xiàn)的操作符:

RDF3XIndexScan:RDF3XIndexScan 是 QC 和內(nèi)部操作符之間的聯(lián)系。 這個操作符的主要目標(biāo)是從 QC 中接收三元組,并將它們所需的組件映射到變量數(shù)組的某個位置。 它維護三個 one-hot 編碼的向量,每個向量的第 i 位代表第 i 個變量,如果某一個元素是常量,那么就將其所有位置為 1。

Join:Join 操作符是自然連接,本文使用的是 MergeJoin 的方式。 它維護一個 one-hot 編碼的向量,向量的第 i 位代表第 i 個變量,指代要 Join 的變量。

Filter:Filter 操作符是用于執(zhí)行條件查詢。 復(fù)雜的 Filter 表達式將被分解為多個簡單的 VALUE COND VALUE 的 Filter 操作符。 其中,VALUE 可以是一個值、一個變量或一個式子,COND 是比較條件。 但由于 FPGA 無法處理字符串的問題,所以通過將字符串映射為整數(shù) id 之后,系統(tǒng)只能支持相等和不相等的比較。

Projection:Projection 操作符是用于將需要的變量結(jié)果從變量數(shù)組中投影出來。

Union:Union 操作符就是簡單的將兩個前向操作符得到的結(jié)果做一個并集操作。

Limit 和 offset:Limit 操作符會轉(zhuǎn)發(fā)特定數(shù)量的結(jié)果給變量數(shù)組。 而 offset 操作符會跳過特定數(shù)量的結(jié)果。 它們一般作為操作符圖的最后幾步。

a75ed274-b2e3-11ed-bfe3-dac502259ad0.png

從混合系統(tǒng)結(jié)構(gòu)圖中可以看到,每個 RP 之間并不是直接輸入輸出互聯(lián),而是通過了一個上圖所示的半靜態(tài)路由元素(SRE)結(jié)構(gòu)。 論文以一個兩路復(fù)用 SRE 為例,當(dāng) succ_sel 信號為 0 時,數(shù)據(jù)流會直接向下路由,為 1 時,會向另一側(cè)路由。 SRE 的存在使得可以用更少的 RP 組成一個支持查詢范圍更大的半靜態(tài)操作符圖。

四、混合系統(tǒng)工程流程

a770b412-b2e3-11ed-bfe3-dac502259ad0.png

上圖給出了混合系統(tǒng)的工作流程圖,可以將其分為部署階段和系統(tǒng)運行時。 在部署階段,除了需要導(dǎo)入數(shù)據(jù)之外,整個靜態(tài)邏輯必須部署在 FPGA 上,每個操作符對應(yīng)的 RM 也需要提前生成并存儲在 RM 庫中。

在系統(tǒng)運行時,主機通過分析輸入的 SPARQL 查詢,將其解析成相應(yīng)的操作符圖,檢測其是否可以用配置在 FPGA 上,如果有不支持的操作符存在,那么會直接 CPU 端執(zhí)行查詢,如果所有操作符都支持,那么 ICAP 會選擇對應(yīng)操作符的 RM 配置在 FPGA 的半靜態(tài)操作符圖上。 主機通過 PCIe 向 FPGA 端提供輸入三元組,并接收 FPGA 端發(fā)回的結(jié)果進行后處理,F(xiàn)PGA 端負責(zé)具體的計算任務(wù)。

五、實驗結(jié)果

本文使用的是 Xilinx 的 Virtex-6 FPGA 卡和 PCIe 2.0 八通道通信接口,在 SP2Bench 三個不同大小的數(shù)據(jù)集(66M,131M 和 262M 個三元組)上進行了實驗。 下圖是他們采用的 SPARQL 查詢示例:

a7a6d880-b2e3-11ed-bfe3-dac502259ad0.png

a7dbb8b6-b2e3-11ed-bfe3-dac502259ad0.png

Query 1 是用到了 Filter 操作符的查詢,Query 2 是用到了 Union 操作符的查詢,Query 3-5 分別是用到了不同數(shù)量的 Join 操作符。 他們在 FPGA 端部署的半靜態(tài)操作符圖如下:

a802df5e-b2e3-11ed-bfe3-dac502259ad0.png

最后的實驗結(jié)果表明,加入了 FPGA 的混合系統(tǒng)比原來的 LUPOSDATE 系統(tǒng)的查詢執(zhí)行速度更快。 并且隨著數(shù)據(jù)規(guī)模的增大,加速比會更大,說明混合系統(tǒng)更加適合大規(guī)模的數(shù)據(jù)集上的查詢。

a81d49c0-b2e3-11ed-bfe3-dac502259ad0.png

六、總結(jié)

在這篇文章中,作者在 FPGA 上引入了半靜態(tài)運算符圖(SOG)的概念,為語義網(wǎng)數(shù)據(jù)庫中的查詢執(zhí)行提供靈活的硬件加速器。 作者沒有為給定的查詢系統(tǒng)運行時生成一個 FPGA 配置,而是以一定程度的靈活性部署了通用查詢結(jié)構(gòu)。

SOG 由多個具有公共接口的 RP 組成。 在為每個 RP 部署系統(tǒng)期間,會生成一組部分位文件的 RM,并將其存儲到存儲庫中。 在系統(tǒng)運行時,作者的混合系統(tǒng)針對給定的 SPARQL 查詢選擇 RM,并通過 ICAP 將其配置為 RP,RP 設(shè)置 FPGA 上運算符圖的最終結(jié)構(gòu)。 作為這項工作的主要貢獻,耗時的 RM 生成在系統(tǒng)運行時之前執(zhí)行,并且信號大大減少了查詢執(zhí)行期間的重新配置。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1629

    文章

    21750

    瀏覽量

    604071
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4323

    瀏覽量

    85922
  • 數(shù)據(jù)庫
    +關(guān)注

    關(guān)注

    7

    文章

    3817

    瀏覽量

    64492
  • 圖形處理器
    +關(guān)注

    關(guān)注

    0

    文章

    198

    瀏覽量

    25583
  • gpuz
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    3530

原文標(biāo)題:FPGA加速圖數(shù)據(jù)庫查詢執(zhí)行

文章出處:【微信號:OSC開源社區(qū),微信公眾號:OSC開源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    數(shù)據(jù)庫查詢

    數(shù)據(jù)庫查詢
    發(fā)表于 10-06 16:06

    數(shù)據(jù)數(shù)據(jù)庫,按時間查詢數(shù)據(jù)庫

    數(shù)據(jù)數(shù)據(jù)庫,在數(shù)據(jù)里新建表,按時間查詢數(shù)據(jù)庫
    發(fā)表于 01-09 16:08

    基于數(shù)據(jù)庫查詢過程優(yōu)化設(shè)計

    在大型關(guān)系數(shù)據(jù)庫管理與開發(fā)中,優(yōu)化設(shè)計極大地提高數(shù)據(jù)庫的性能。通過對一大型數(shù)據(jù)庫查詢語句執(zhí)行過程的討論,提出了對同一表格進行多個選擇運算的優(yōu)
    發(fā)表于 02-27 16:05 ?18次下載

    查詢數(shù)據(jù)庫的最完美技巧

    查詢數(shù)據(jù)庫的最完美技巧.rar
    發(fā)表于 03-15 14:15 ?24次下載

    數(shù)據(jù)庫查詢優(yōu)化方法的研究與探索

    SQL是一種數(shù)據(jù)庫查詢和程序設(shè)計語言,用于存取數(shù)據(jù)以及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)。不同的實現(xiàn)方法之間可能存在的性能差異,這種性能差異在大
    發(fā)表于 08-08 14:43 ?0次下載

    JAVA教程之查詢數(shù)據(jù)庫

    JAVA教程之查詢數(shù)據(jù)庫,很好的JAVA的資料,快來學(xué)習(xí)吧。
    發(fā)表于 04-12 17:49 ?6次下載

    基于循環(huán)神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)庫查詢開銷預(yù)測

    數(shù)據(jù)庫負載管理、性能調(diào)優(yōu)中,開銷預(yù)測模型是提高其效率的關(guān)鍵技術(shù).首先,由于數(shù)據(jù)庫系統(tǒng)的復(fù)雜性和計算機資源的競爭。很難精確地估計不同操作的開銷.其次。由于查詢計劃結(jié)構(gòu)的復(fù)雜性,現(xiàn)有研究更多使用籠統(tǒng)
    發(fā)表于 12-18 15:45 ?1次下載
    基于循環(huán)神經(jīng)網(wǎng)絡(luò)的<b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>查詢</b>開銷預(yù)測

    基于Greenplum數(shù)據(jù)庫查詢優(yōu)化

    針對分布式數(shù)據(jù)庫查詢效率隨著數(shù)據(jù)規(guī)模的增大而降低的問題,以Greenplum分布式數(shù)據(jù)庫為研究對象,從優(yōu)化查詢路徑的角度提出一個基于代價的最
    發(fā)表于 03-29 17:46 ?0次下載

    數(shù)據(jù)庫系統(tǒng)概論之如何進行關(guān)系查詢處理和查詢優(yōu)化

    本文檔的主要內(nèi)容詳細介紹的是數(shù)據(jù)庫系統(tǒng)概論之如何進行關(guān)系查詢處理和查詢優(yōu)化主要內(nèi)容包括了:1、關(guān)系數(shù)據(jù)庫系統(tǒng)的查詢處理 2、關(guān)系
    發(fā)表于 11-15 15:12 ?11次下載
    <b class='flag-5'>數(shù)據(jù)庫</b>系統(tǒng)概論之如何進行關(guān)系<b class='flag-5'>查詢</b>處理和<b class='flag-5'>查詢</b>優(yōu)化

    數(shù)據(jù)庫教程---Oracle表的查詢

    數(shù)據(jù)庫教程---Oracle表的查詢(現(xiàn)代高頻開關(guān)電源技術(shù)及應(yīng)用劉鳳君 百度網(wǎng)盤)-文檔為數(shù)據(jù)庫教程---Oracle表的查詢總結(jié)文檔,是一份不錯的參考資料,感興趣的可以下載看看,,,
    發(fā)表于 09-17 14:41 ?7次下載
    <b class='flag-5'>數(shù)據(jù)庫</b>教程---Oracle表的<b class='flag-5'>查詢</b>

    數(shù)據(jù)庫插入查詢刪除操作教程

    數(shù)據(jù)庫插入查詢刪除操作教程
    發(fā)表于 12-07 09:57 ?2次下載

    淺析FPGA加速數(shù)據(jù)庫查詢執(zhí)行的步驟

    在當(dāng)今的數(shù)據(jù)化場景越來越豐富的大環(huán)境下,涌現(xiàn)出的非結(jié)構(gòu)化數(shù)據(jù)存儲分析被應(yīng)用于多數(shù)領(lǐng)域。
    的頭像 發(fā)表于 02-23 10:21 ?1110次閱讀

    python讀取數(shù)據(jù)庫數(shù)據(jù) python查詢數(shù)據(jù)庫 python數(shù)據(jù)庫連接

    python讀取數(shù)據(jù)庫數(shù)據(jù) python查詢數(shù)據(jù)庫 python數(shù)據(jù)庫連接 Python是一門高級編程語言,廣泛應(yīng)用于各種領(lǐng)域。其中,Pyt
    的頭像 發(fā)表于 08-28 17:09 ?1843次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)-Oracle數(shù)據(jù)庫truncate table數(shù)據(jù)恢復(fù)案例

    北京某單位Oracle 11g R2數(shù)據(jù)庫執(zhí)行truncate table CM_CHECK_ITEM_HIS,表數(shù)據(jù)丟失,查詢該表時報錯。數(shù)
    的頭像 發(fā)表于 09-11 15:30 ?577次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)-Oracle<b class='flag-5'>數(shù)據(jù)庫</b>truncate table<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    多線程并發(fā)查詢oracle數(shù)據(jù)庫

    多線程并發(fā)查詢Oracle數(shù)據(jù)庫是指在同一時間內(nèi)有多個線程同時執(zhí)行數(shù)據(jù)庫查詢操作。這種并發(fā)查詢的方式可以提高系統(tǒng)的吞吐量和響應(yīng)速度,提高
    的頭像 發(fā)表于 11-17 14:22 ?3908次閱讀