面向軟件定義芯片通用的算子恢復(fù)技術(shù)
定 價:79 元
面對軟件和硬件在細(xì)節(jié)抽象上存在的巨大差異,為探索一條提高軟件定義芯片易用性和計算效率的有效途徑,本書提出一套通用的算子恢復(fù)技術(shù),為高級語言程序和芯片硬件架起一座高效溝通的橋梁。本書系統(tǒng)地介紹了軟件定義芯片的概念、國內(nèi)外研究與產(chǎn)業(yè)現(xiàn)狀、基本原理、需要研究的關(guān)鍵問題和研究平臺,深入闡述了編譯領(lǐng)域的多種指令選擇技術(shù),又基于指令選擇技術(shù)、圖匹配技術(shù)、最優(yōu)化原理方法和軟件逆向思維提出面向軟件定義芯片通用的算子恢復(fù)技術(shù),將細(xì)粒度的通用操作集合恢復(fù)成粗粒度的芯片算子操作,為增強(qiáng)軟件定義芯片的易用性和計算效率提供一套可行方案,并提供了相關(guān)的工程實現(xiàn)核心代碼。
本書作者提出一套通用的算子恢復(fù)技術(shù),在高級語言程序和芯片硬件之間架起一座橋梁,目的在于提高軟件定義芯片的易用性和計算效率。本書對相關(guān)技術(shù)進(jìn)行深入闡述,并附有工程代碼,將對計算機(jī)科學(xué)與技術(shù)和電子科學(xué)與技術(shù)專業(yè)的科研人員、高年級本科生、低年級研究生,以及相關(guān)行業(yè)的工程師大有裨益。
隨著現(xiàn)代社會向數(shù)字化、自動化、智能化的方向轉(zhuǎn)型發(fā)展,人們對計算服務(wù)的需求與日俱增。近半個世紀(jì)以來,集成電路工藝技術(shù)的進(jìn)步是提高計算結(jié)構(gòu)能力的主要措施之一,隨著摩爾定律和登納德縮放比例定律放緩甚至走向終結(jié),此方法正在逐漸失效。眾所周知,功耗墻問題的出現(xiàn)使得集成電路的功耗約束在許多應(yīng)用中變得更加嚴(yán)格。集成電路工藝進(jìn)步帶來的性能收益越來越小,這使得硬件架構(gòu)可實現(xiàn)的計算能力受到嚴(yán)重限制。因此,計算機(jī)架構(gòu)設(shè)計師不得不將注意力從性能轉(zhuǎn)移到能效上;計算電路的靈活性也成為不容忽視的設(shè)計考慮要素。隨著新興應(yīng)用不斷涌現(xiàn)、用戶需求持續(xù)增加、科技能力快速進(jìn)步以及軟件升級越來越快,不能適應(yīng)軟件變化的硬件實現(xiàn)形式將面臨生命周期過短和一次性工程成本過高的難題。效率、靈活性和易用性已成為新硬件架構(gòu)設(shè)計中三個最關(guān)鍵的評價指標(biāo)。對于主流計算架構(gòu),滿足這些新需求極具挑戰(zhàn)性。專用集成電路(ApplicationSpecific Integrated Circuit,ASIC)能效雖高,但不具備靈活性;而馮·諾依曼處理器,如通用處理器(General Purpose Processor,GPP)、圖形處理單元(Graphics Processing Unit,GPU)、數(shù)字信號處理器(Digital Signal Processor,DSP)雖足夠靈活,但能效太低。現(xiàn)場可編程邏輯門陣列(Field ProgrammableGate Array,FPGA)因具備定制實現(xiàn)大規(guī)模數(shù)字邏輯、快速完成產(chǎn)品定型等能力而被廣為使用,在通信、網(wǎng)絡(luò)、航天、國防等領(lǐng)域擁有牢固的重要地位。因其單比特編程粒度、靜態(tài)配置等本征屬性造成了能量效率低、容量受限、使用門檻高等問題,無法滿足不斷提高的應(yīng)用需求。近年來,通過采用擴(kuò)大硬件規(guī)模、異構(gòu)計算、高級語言編程等方法,F(xiàn)PGA進(jìn)行了持續(xù)的技術(shù)升級,但受其本征屬性限制,上述問題始終未能從根本上得到解決。如果FPGA的基礎(chǔ)架構(gòu)不發(fā)生根本性的改變,其未來將充滿重重困難。軟件定義芯片采用以粗粒度為主的混合編程粒度與動態(tài)配置相結(jié)合的方式,可以從根本上解決以上制約FPGA發(fā)展的技術(shù)難題,并同時滿足能效和靈活性的需求;旌暇幊塘6饶艽蠓鶞p小資源冗余,提升芯片能效;動態(tài)配置通過時分復(fù)用能擺脫承載容量的限制,與高級語言配合可提高芯片的可編程性、降低使用門檻。軟件定義芯片已成為世界強(qiáng)國戰(zhàn)略必爭的科研高地。2018年,美國國防高級研究計劃局(Defense Advanced Research Projects Agency,DARPA)為啟動電子振興計劃斥資7100萬美元,組織全美最強(qiáng)力量,開展了對軟件定義芯片的聯(lián)合攻關(guān)。歐盟推出的地平線2020也對該方向給予高度的重視和持續(xù)的研發(fā)支持。編程語言正朝著更高層次、更為抽象的表達(dá)方式演進(jìn);硬件體系結(jié)構(gòu)卻向更加復(fù)雜的方向發(fā)展。隨著應(yīng)用程序和硬件之間的抽象差距越來越大,編譯器在自動利用硬件資源以實現(xiàn)最佳性能方面變得越來越捉襟見肘。多數(shù)人習(xí)慣于串行化思維模式,高級語言通常描述的是串行執(zhí)行過程,軟件研發(fā)人員使用高級語言編程時效率更高。如何讓不了解硬件設(shè)計的軟件人員采用純軟件思維就能對軟件定義芯片進(jìn)行高效編程,以降低使用門檻、拓展使用范圍、加快應(yīng)用的迭代與部署速度,即提高軟件定義芯片的易用性,不僅是一項艱巨的挑戰(zhàn),也是一個亟待解決的問題。軟件定義芯片的功能,最終要靠程序員編寫的軟件來實現(xiàn)。一套硬件能否吸引大量用戶投入精力去開發(fā)軟件的一個必要條件是硬件支持的軟件需向前兼容,即用戶之前編寫的軟件能比較方便地在新的芯片上正確運行。一個優(yōu)秀的編譯系統(tǒng)可以在不過多地影響程序員生產(chǎn)力的條件下,有效地挖掘軟件定義芯片的硬件潛能,為用戶提供更加方便且高效地使用芯片硬件資源的方法。面對軟件和硬件在細(xì)節(jié)抽象上存在的巨大差異,為探索一條提高軟件定義芯片的易用性和計算效率的有效途徑,本書提出一套通用的算子恢復(fù)技術(shù),為高級語言程序和芯片硬件架起一座通用且能實現(xiàn)高效溝通的橋梁?捎行Ы鉀Q塊際指令、多輸出指令及循環(huán)控制等傳統(tǒng)方法難以處理的問題。本書首先系統(tǒng)地介紹了計算架構(gòu)發(fā)展的歷程、軟件定義芯片的概念及需要重點研究的關(guān)鍵問題。第二章介紹基于LLVM開發(fā)的研究平臺。第三章系統(tǒng)地介紹編譯領(lǐng)域的指令選擇技術(shù),基于模式匹配、模式選擇兩大維度及樹全覆蓋、DAG全覆蓋和圖全覆蓋三大策略對多種技術(shù)進(jìn)行深入闡述,為通用算子恢復(fù)技術(shù)的提出賦予了基礎(chǔ)理論的支撐。第四章詳細(xì)介紹通用算子恢復(fù)技術(shù),基于圖匹配技術(shù)、最優(yōu)化原理(Principle of Optimality,PO)方法和軟件逆向(Software Reverse,SR)思維將細(xì)粒度的通用操作集恢復(fù)成粗粒度的芯片算子操作,為增強(qiáng)軟件定義芯片的編程效率和計算效率提供一套可行方案。第五章基于通用算子恢復(fù)技術(shù)及配套算法給出通用算子恢復(fù)系統(tǒng)的工程實現(xiàn)核心代碼,并對代碼進(jìn)行詳細(xì)的分析介紹。第六章對面向軟件定義芯片通用的算子恢復(fù)技術(shù)及恢復(fù)系統(tǒng)進(jìn)行總結(jié),并展望了提高軟件定義芯片易用性、計算效率和靈活性的發(fā)展趨勢。本書是基于筆者在清華大學(xué)移動計算研究中心從事的科學(xué)研究工作而撰寫的,在寫作過程中,朱建峰博士、王婷博士和博士生張?zhí)┤唤o予了諸多寶貴建議和幫助。在此對他們表示衷心的感謝!最后,特別感謝我的妻子關(guān)霞,沒有她在背后默默的支持和鼓勵,本書絕沒有面世的可能。限于筆者時間和水平均有限,書中定然存在一些不足之處,敬請讀者不吝指正。吳偉峰2024年3月于清華園
吳偉峰博士,清華大學(xué)移動計算研究中心工程師。研究領(lǐng)域包括:編譯器、編程語言研發(fā)、多語言程序自動轉(zhuǎn)換、二進(jìn)制翻譯、反編譯、高性能計算和數(shù)據(jù)庫加密應(yīng)用等。目前主要致力于軟件定義芯片配套編譯系統(tǒng)的研究及開發(fā)工作。
第1章 軟件定義芯片 11.1 概述 11.1.1 計算架構(gòu)發(fā)展歷程 11.1.2 軟件定義芯片簡介 31.2 重點研究方向 61.2.1 硬件架構(gòu)與高效性 71.2.2 編程模型與靈活性 81.2.3 編譯框架與易用性9參考文獻(xiàn).11第2章 基于LLVM的研發(fā)平臺142.1 LLVM介紹142.1.1 經(jīng)典編譯器設(shè)計概覽 162.1.2 現(xiàn)有實踐172.1.3 LLVM中間碼182.1.4 LLVM三段式設(shè)計 192.1.5 模塊化設(shè)計附帶閃點 232.2 研發(fā)平臺介紹242.2.1 CMake構(gòu)建選項242.2.2 循環(huán)體 DFG圖生成 252.3 限制27參考文獻(xiàn) 27第3章 指令選擇技術(shù) 283.1 概述293.1.1 指令選擇介紹 293.1.2 機(jī)器指令特征 323.1.3 最優(yōu)指令選擇 343.1.4 指令選擇的早期發(fā)展 353.1.5 相關(guān)知識及定義 363.1.6 指令選擇的基礎(chǔ)分類 403.1.7 指令選擇的歸質(zhì)任務(wù)劃分493.2 技術(shù)介紹 493.2.1 初級技術(shù) 493.2.2 模式匹配 523.2.3 模式選擇 683.3 展望833.3.1 待研究主題833.3.2 挑戰(zhàn)84參考文獻(xiàn) 85第4章 通用算子恢復(fù)技術(shù)974.1 提高軟件定義芯片易用性的相關(guān)技術(shù) 974.2 算子恢復(fù)技術(shù)的引入984.3 軟件定義芯片通用算子恢復(fù)系統(tǒng) 994.3.1 軟件定義芯片抽象算子1004.3.2 通用算子恢復(fù)系統(tǒng)的輸入 1064.3.3 算子基本模板圖匹配 1174.3.4 算子聚合1264.3.5 算子選擇1274.3.6 算子生成1314.3.7 復(fù)雜度分析 1324.3.8 總結(jié) 135參考文獻(xiàn)135第5章 通用算子恢復(fù)系統(tǒng)實現(xiàn)1365.1 DFG 圖數(shù)據(jù)結(jié)構(gòu) 1365.1.1 結(jié)點操作碼定義1365.1.2 結(jié)點數(shù)據(jù)結(jié)構(gòu)1385.1.3 邊數(shù)據(jù)結(jié)構(gòu) 1395.1.4 圖數(shù)據(jù)結(jié)構(gòu) 1405.2 算子基本模板庫工程示例 1405.2.1 DOT語言 1415.2.2 算子基本模板工程示例1425.3 圖匹配優(yōu)先級序列工程示例 1475.4 算子聚合模板庫工程示例 1485.4.1 AU算子聚合模板1515.4.2 二級 LU算子聚合模板1555.4.3 三級 LU算子聚合模板1595.4.4 SU模式一算子聚合模板1795.4.5 SU模式二算子聚合模板1805.4.6 SU模式三算子聚合模板1835.5 算子基本模板庫圖匹配工程示例 1905.5.1 算子基本模板匹配總控函數(shù) 1905.5.2 算子基本模板匹配函數(shù)1915.5.3 結(jié)點匹配函數(shù)1935.5.4 結(jié)點向上匹配函數(shù) 1985.5.5 基本算子恢復(fù)函數(shù) 1995.6 算子聚合工程示例 2035.6.1 LU算子抽象轉(zhuǎn)換函數(shù) 2045.6.2 算子聚合模板匹配總控函數(shù) 2055.6.3 算子聚合模板匹配函數(shù)2075.6.4 LU抽象算子還原函數(shù) 2155.7 算子選擇工程示例 2165.8 算子生成工程示例224參考文獻(xiàn)238第6章 結(jié)語與展望 2396.1 結(jié)語 2396.2 展望2396.2.1 軟件定義芯片的虛擬化2406.2.2 利用機(jī)器學(xué)習(xí)進(jìn)行在線訓(xùn)練 241參考文獻(xiàn)243索引245