999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

數據流計算研究進展與概述

2021-11-30 02:46:46范志華李文明葉笑春范東睿
數據與計算發展前沿 2021年5期
關鍵詞:指令程序模型

范志華,李文明,葉笑春,范東睿*

1.中國科學院計算技術研究所,計算機體系結構國家重點實驗室,北京 100190

2.中國科學院大學,計算機科學與技術學院,北京 100049

引言

傳統馮·諾依曼架構從提出至今已有70 多年,作為主流的計算機架構,幾十年間學術界、產業界圍繞其開展了多種多樣的探索研究。近年來,隨著社會和科學技術的不斷發展,大量新型應用對計算需求遠超從前,比如網絡服務、人工智能、AIoT(Artificial Intelligence and Internet of Things)等高通量應用場景,在這些新的應用場景的催化下,計算機的發展進入新的黃金時代。然而,馮·諾依曼架構基于全序程序執行的指令控制流計算模型,在存儲訪問和并行處理等方面表現出固有的局限性,“存儲墻”等問題日益嚴重,制約了計算機性能的提升。

在解決馮·諾依曼計算機的串行指令執行和訪存瓶頸問題過程中,出現了數據流(Dataflow)計算思想。因其天然的并行性、低訪存需求等結構優勢,近些年重新得到了學術界和工業界的青睞。數據流計算的概念由麻省理工學院的Jack.B.Dennis[1]等人首先提出,后由以高光榮教授為代表的數據流研究人員將其完善、發展。文獻[2]是國內最早的數據流計算研究成果。圖1 展示了從上世紀70年代至2020年計算機領域重要會議和期刊中,標題含有數據流關鍵詞的研究論文數量,可以發現數據流計算經歷發展的低谷期,現在又重新回到研究人員的視野中。后摩爾時代的到來將為數據流計算的發展帶來前所未有的機遇,數據流計算的創新即將進入下一個黃金時代。

圖1 數據流計算相關論文數量Fig.1 Number of papers related to dataflow computing

回溯歷史,本文將數據流計算的發展歷程概括為三個階段。第一階段是數據流計算的起源階段(20世紀90年代以前),此階段數據流計算的研究聚焦在數據流計算理論和數據流程序執行模型,比如數據流線程模型、數據流同步模型、數據流存儲模型。隨著數據流計算相關理論的完善,數據流計算進入第二階段(90年代至2010年),該階段的研究重點是數據流編譯技術和并行機系統。許多研究人員基于當時已有的處理器或系統展開了數據流計算機的研究,比如基于數據流思想的并行機系統,多核、多線程的數據流編譯技術。隨著工藝和應用場景的發展,傳統計算機架構的發展遇到瓶頸,數據流計算進入第三階段(2010年以后),第三階段的研究重點是數據流編譯技術和數據流硬件架構?;跀祿魉枷氲奶幚砥鳌f處理器等芯片被提出,并在人工智能、網絡服務、科學計算等高通量應用領域發揮出獨特的優勢。由這三個階段,我們可以發現數據流計算的研究是完整的、系統的、成體系的。它的研究重點經歷了由計算理論、到軟件技術、到硬件芯片的變化。

本文首先回溯數據流計算的起源,介紹數據流計算的概念,包括第一個具有重要意義的數據流計算語言、數據流計算機模型,靜/動態數據流以及重要的數據流計算理論。然后,從軟件系統和硬件架構兩方面分別介紹了標志性的里程碑工作。最后,根據數據流計算的研究進展,總結并討論了數據流計算的趨勢和挑戰,對未來數據流計算的研究提供參考,希望給該領域的研究人員帶來一定的啟發。

1 數據流計算的起源

數據流計算模型是馮·諾依曼模型的一種替代方案。在馮·諾依曼模型的概念中,數據只是被加工的對象,其核心思想是把程序像數據一樣存儲在計算機中,在程序計數器(Program Counter, PC)的控制下逐條執行。數據流計算把馮·諾依曼計算機中程序和數據的關系顛倒過來了,數據相關性形成的數據流圖就是可執行的機器指令,取消了程序計數器的概念。數據流計算突出了數據的主導作用,這是其對傳統計算機架構的重大突破。

“數據流”作為一種計算機并行性探索的概念,使用數據流來表示計算機程序最早出現在20 世紀60年代[3-4],數據流計算語言[5-7]、數據流計算機體系結構[6,8]的早期研究在20 世紀70年代開始展開,本文把數據流計算模型簡稱為數據流計算。在數據流計算中,程序用數據流圖(Dataflow Graph, DG)來表示,數據流圖是一個有向圖,由不同類型的節點(node, 也稱actor[5,7,9-10])和連接節點的邊組成。如果邊的一端不連接任何節點,則為輸入/輸出。節點表示計算過程,連接關系表示節點之間的數據依賴關系,該依賴關系可以定義為數據的“生產者”與“消費者”。當數據流圖中的一個節點獲取了其需要的所有操作數時,即可被調度執行,結果傳遞給其下游“消費者”節點。與馮·諾依曼計算機相比,數據流計算以圖的形式描述了計算任務的并發執行全過程, 同時數據可以按照數據流圖中邊的指向直接傳遞到下游節點,不需要緩存到存儲器中,能夠解決控制流指令串行以及訪存瓶頸等問題,充分挖掘并利用計算機程序中數據級并行性和指令級并行性。

圖2 是文獻[5]中的一個由數據流思想表示程序片段的例子。在這個示例中,長方形的節點表示操作,小的實心圓表示連接,大的實心圓表示程序初始時的配置或者輸入數據。程序由L1 和L2 開始,L1 被激活(fire)時,將數據a 復制并發送到A1 和A3,L2 被激活時,將數據b 傳遞至A1 和A4。L1和L2 節點以任意順序被激活之后,A1 節點即可激活,因為A1 節點已經獲得了所需的2 個源操作數。當A1 的計算完成之后,L3 節點即可被激活,程序將按照“數據驅動”的方式執行。節點的激活僅由該節點所有的輸入決定,因此可以降低同步的開銷。

圖2 第一個數據流程序表示Fig.2 The first dataflow program

為使上述數據流語言能表示分支和循環程序,Dennis[5]定義了2 種連接原語和6 種不同的節點原語,完善了數據流計算語言。數據連接(Data link)負責傳遞參與運算的數據,而控制連接(control link)傳輸為“真”或“假”的令牌(token),該令牌由專門的生成器(Decider)生成,生成器根據其輸入的值得到對應的令牌。另外,令牌的另一種產生方法是使用圖3(8)的布爾運算單元生成。令牌與T-gate、F-gate、Merge 一起控制數據的流向。對于T-gate,當其輸入的令牌為真時,將輸入邊的數據直接傳遞給輸出邊;當輸入的令牌為假時,輸出邊將沒有數據。相似的,當輸入的控制表示為假時,F-gate 將輸入邊的數據傳遞給輸出邊。Merge有三個不同的輸入,一個令牌、另外兩個分別與T 和F 端口相連的輸入,Merge 原語根據控制表示的值,將T/F 端的輸入傳遞給輸出端口。使用上述數據流計算語言,即可表示計算機中的循環和分支程序。

圖3 第一個數據流語言Fig.3 The first dataflow programming language

為支持數據流程序執行模型和數據流語言,Dennis[5]等提出了圖4 的數據流處理器模型,基本思想是將數據流圖轉換為一種本質上同構但更適合在實際硬件上執行的結構。在該模型中,存儲器被劃分多個基本塊(Cell block),每個基本塊存儲數據流圖中的一個節點,也就是一個指令。當基本塊包含了一條指令及其操作數,仲裁網絡(Arbitration Network)便將其打包為運算包(operation packets)的形式發送給運算單元(operation unit)進行計算。運算結束后,分配網絡(Distribution Network)將計算得到的結果(data packets)根據地址送回對應的寄存器,此次計算結束后,一個或多個基本塊將被激活。另外,Dennis 增加了多層存儲的概念,將基本塊視為cache,為數據流處理器增加了指令存儲和訪存網絡。由于數據流圖的主要特征是節點的參數在各條邊上流動,所以類似于 Dennis 架構的機器也被稱為 Argument-flow 機器。Dennis 等人開創了數據流研究的先河,在學術界引起了數據流計算的研究熱潮,對編程模型[11-15]、計算機體系結構[14-15]、應用程序[16,18]和系統軟件[15,17]都產生了深遠的影響。

圖4 第一個數據流計算機模型Fig.4 The first abstract model of dataflow computer

Argument-flow 機器的一個缺點是需要過多訪問存儲空間和進行操作數復制,Argument-fetch[19]數據流機器的提出正是為了解決這一問題,該架構與數據流圖的直接實現的不同之處在于,指令從存儲器或寄存器中獲取數據,而不是讓指令將操作數(Token)存入后續指令的“操作數接收器”中。在 Argument-fetch 機器中,數據值未附加到特定指令單元,可以存儲在任何位置。這意味著指令單元必須包含對那些位置的引用。數據不再從一個指令單元“流”到另一個指令單元,流動的只有信號。而且設計了執行指令單元程序的 PE(Processing Element)結構,以及PE 內部的 4 級流水結構。此后,針對數據流計算機性能的研究也相繼展開。一部分研究聚焦在程序的性能與數據流圖的關系,比如對數據流圖進行流水來探索并行度[20-22],文獻[20]證明了一個平衡的數據流圖可以最大流水;另一部分著力于探索程序性能與數據流圖到硬件結構的映射方式之間的關系[23-24],尋找最優調度和緩沖分配是一個NP完全問題。

基于Argument-flow 和Argument-fetch 模型的數據流計算架構被大量提出[19-25],這些架構可分為兩類:靜態數據流和動態數據流。在靜態數據流架構中,連接指令之間的邊僅能承載一個從源指令給出的令牌,且任何時刻對一個節點而言,只能有一個該節點的實例(instance)在執行。通信路徑不具有緩沖功能,在輸入數據就緒且輸出通道未被占有時,操作可以觸發執行,否則輸出路徑的阻塞將會延遲操作執行。靜態數據流同一時刻只允許執行一個線程。

在動態數據流架構中,標簽實際上與令牌關聯,以便可以區分與一個節點的不同實例相對應的令牌。這使得一條邊能夠同時攜帶多個令牌,通信路徑具有的緩沖功能可以減少輸出端阻塞帶來的影響。同時,它使用唯一的標簽來標記區分不同線程的數據,允許多個線程同時執行,當操作數就緒且數據的標簽匹配后,操作可以被觸發執行,從而表達出更多的并行性。

對于數據流計算架構的分類,還有許多其他方法。比如根據數據流圖中節點的指令數,可以分為粗粒度數據流和細粒度數據流。細粒度數據流中,數據流圖的每個節點表示一條指令,比如Argumentflow 機器[19]、SPU[26]。當程序變得復雜、執行部件規模變大之后,細粒度的映射、調度的開銷和設計復雜性增加,因此,粗粒度數據流結構出現,在粗粒度數據流中,數據流圖的節點表示一段指令,如Codelet 模型[18]、RISC-NN[27]。

類比Flynn 的分類方法,數據流架構還可分為單圖單數據(SGSD)模型、單圖多數據(SGMD)模型、多圖多數據(MGMD)模型。單圖單數據(SGSD)模型指的是在單個數據集上執行單個數據流圖的計算,例如Argument-flow 機器。單圖多數據(SGMD)模型指的是在空間分布的多個數據集上執行單個數據流圖的計算,該模型多用于向量計算應用和流式計算應用,比如數字信號處理[28]。多圖多數據(MGMD)模型指的是在多個數據集上執行多個數據流圖(來自于多個或者同一任務)的計算。例如Wavescalar[29],它采用具有匹配功能的FIFO 作為PE 之間的異步通信通道,MGMD 模型主要利用線程級并行。

數據流計算是一個宏大的概念,不但涉及底層的芯片設計,還包括數據流語言、編譯和系統結構設計,其突出的優點是并行性高、同步開銷低、訪存開銷低、片上邏輯簡單??刂屏饔嬎銠C有些改進方法也吸取了數據流計算的思想,因此出現了一些Dataflow-inspired 或 Dataflow-like 技術,其中最容易混淆的是流式計算(Stream processing)[30-31]。流式計算是將應用中的計算和數據分離,重新組成一條流水線型的計算鏈,通過開發多個層次上的并行性和充分利用各級存儲層次的局部性,得到較高的計算性能。所謂流式計算實際上是指無邊界的連續數據的處理,它仍然是控制流計算,不是基于數據流模型,而是源于Hoare 的CSP 計算模型[32]。

有一些計算技術與數據流計算有一些相似性。Google TPU[33]處理器的成功使得上世紀80年代提出的脈動陣列(Systolic array)[34]獲得新生。脈動陣列雖然不是典型的數據流計算機,不具有數據流計算的通用性,但可以認為是數據驅動的計算。

2 數據流計算的研究

數據流計算的研究涵蓋了計算機科學的方方面面,數據流計算從理論、軟件系統到硬件架構的生態是完整的,但是各層次的技術發展是不平衡的。例如,直到近十年,才設計并實現了數據流的芯片;自Codelet 執行模型提出后,數據流的程序執行模型沒有得到新的突破和創新。

數據流計算的生態缺少標準化、統一化的定義。例如,至今沒有統一的數據流計算機軟/硬件接口定義,每款數據流芯片都有自己的數據流指令、編譯器,使得許多數據流芯片或者編譯器不能兼容其他數據流工作,這是數據流生態與X86、ARM 生態的重要區別和弊端,這也是阻礙數據流計算機走向商用和通用的一個重要因素。數據流計算的研究缺少開放式聯盟、社區等組織的存在。

經過多年的研究,數據流計算已不是與傳統馮氏架構對立的存在。很多研究工作將兩者結合,做出了將數據流和控制流協同設計的創新性工作,以及數據流與脈動陣列融合的工作。

本節將對數據流計算的重要研究成果進行介紹,將從數據流軟件棧和數據流計算系統/芯片兩個方面展開介紹和討論。表1 是數據流計算具有代表性的研究成果。

表1 數據流計算代表性研究成果Table 1 Representative works of dataflow computing

2.1 軟件系統研究進展

本節將總結介紹數據流計算在軟件上的具有標志性的研究發展,包括編譯系統、程序模型、運行時系統以及編程語言。

純數據流圖的操作模型可以很容易地擴展以支持馮·諾依曼風格的程序執行[35-36]。數據流圖中的一個 actor 的集合可以組裝成一個線程,該線程在自己的私有程序計數器的控制下順序執行,而線程的激活和同步是數據驅動的。新的混合模型靈活地結合了數據流和控制流,以及在理想的級別上利用并行性。

很多工作對argument-flow 和argument-fetch 數據流原理進行了擴展。一條指令完成之后將發布一個事件(Event)(稱為信號)來通知依賴于該指令結果的其他指令,這實現了一種改進的數據流計算模型,稱為數據流信號圖(Dataflow Signal Graphs)[37]。該架構通過數據流軟件流水線來支持高效的循環執行,以及對線程功能的激活,結合了靜態和動態數據流模型的優點來定義線程模型。

基于數據流信號圖模型,高光榮教授等人提出了 EARTH(Efficient Architecture for Running Threads)模型[38-39]。純數據流模型的編程模型是基于語義模型的,在該語義模型中,執行任何操作都不會產生其他影響。EARTH 超越了純粹的數據流模型,對single assignment[40]樣式進行了擴展,使得在相同線程中的寫入操作可以被視為對內存的普通“更新”。線程之間的數據流式的同步確保了數據的生產者和消費者的依賴順序是正確的。在EARTH 模型的發展和實現的過程中,位置一致性(Location Consistency, LC)[41-43]作為順序一致性衍生的模型也取得 進展。

上述的執行模型都會遇到擴展性問題,即隨著計算機群規模擴展,難以保證代碼實際運行性能達到計算機的理論計算峰值,因此,文獻[18]提出了基于代碼段的程序執行模型 Codelet。代碼段指機器指令的集合, 當以一個代碼段的所有依賴項 (數據和資源需求) 都得到滿足時就可以執行了,并作為處理器計算單元的最小資源調度單位。換句話說,”代碼段” 是Codelet 執行模型中最小且不可分的調度量。一個代碼段一旦被調度至一個計算單元并開始運行后, 這個計算單元將長時間被此代碼段獨占, 且不會被其他機器指令搶占。針對Codelet 這種非搶占式計算功能, 計算機體系結構和軟件系統需要提供配套的功能支持并由此提高計算資源的利用率。Codelet 模型明確了代碼段與線程的關系,支持彈性的粒度大小。同時強調在多核、眾核系統中,運行時環境應該與操作系統有更明確的分工,操作系統負責基本的硬件管理,而運行時環境應該成為更為重要的角色,負責多核、眾核上的任務調度、內存管理、負載平衡等。

為了緩解日益加劇的“存儲墻”對高性能算法在多核和眾核體系結構上執行性能的影響,基于數據流的滲透模型(Percolation Model)[44-45]被提出。滲透模型利用眾核體系結構存在的并行為計算操作提供數據訪問的局部性,是一種高度融合并行性和局部性的延遲容忍的性能優化技術。滲透模型要求對算法中的計算和訪存操作分離。通過解耦計算和訪存,并行算法可以:(1)通過訪存任務和計算任務之間的多級流水隱藏存儲訪問的開銷;(2)組織和分配不同的訪存任務來適應存儲層次結構中的不同訪問延遲。

數據流程序編譯器也取得了明顯進展,EARTH- C[46]、Fresh Breeze[47-50]、COStream[17,51-52]是 典 型 代表。文獻[46]基于EARTH 模型設計了EARTH- C編譯器,該編譯器能夠從一個C 語言程序開始,編譯生成一個并行的數據流線程程序。EARTH-C 編譯器可以分為三個主要階段:第一階段由標準 McCAT 的轉換和分析組成;第二階段,對循環進行重組和轉換,以便利用函數/線程級別的并行性;第三階段將程序分割到適當的線程中,然后生成目標代碼。Fresh Breeze 編譯器會對 funJava 程序的每個方法 (函數)進行逐一編譯, 以生成實現該方法的一組代碼段(Codelet 模型)。Fresh Breeze 編譯器的編譯過程包括三個部分。第一步是將funJava 的方法 (函數) 轉換為數據流圖,以表示該方法所包含的計算過程;第二步是對源代碼中的每種方法 (函數) 的各個循環迭代語句,派生出一組與之對應的并行執行的代碼段;最后構建最佳機器代碼, 以實現每個代碼段。COStream 是一種面向數據流編程的編程語言與編譯系統。目標語言根據目標結構不同生成不同底層語言,如C、C++(在x86 平臺上執行)和OpenCL(在GPU 上執行)以及 Javascript(在跨平臺的瀏覽器中執行)等,編譯器通過調用底層語言編譯器生成對應目標平臺的可執行文件。它實現了對數據流圖最基本的抽象,方便數據流程序的編寫。

許多程序框架、代碼庫也受到數據流思想的啟發。HAMR[53]實現了一個基于數據流的分布式大數據系統,同時支持批處理和流處理。 HAMR 完全基于內存計算而設計,以減少不必要的磁盤訪問開銷;任務調度和內存管理以細粒度的方式探索更多的并行性;異步執行可以提高計算資源使用效率,還可以使整個集群的工作負載平衡更好。MapReduce 編程模型源于函數式編程語言和 MPI/OpenMP 等并行框架,而HAMR 基于數據流編程模型 Codelet。早期的深度學習框架如Caffe[54]已經使用 DAG 數據流圖來表示算法,其中的點由不同層(如卷積等)構成。Tensorflow[55]的數據流圖中的節點表示操作,可以是乘法、加法等底層計算,以便于靈活高效的組織算法。盡管上述工作并非完整的數據流系統,但充分體現了數據流作為一種可靠、簡單且功能強大的并行計算模型,由于其獨特價值,不斷在新的應用場景中體現。

2.2 數據流系統和芯片研究進展

本節介紹具有代表性的數據流硬件系統和數據流芯片的研究進展。

數據流計算模式提出后,早期被應用到EARTH[38]中。EARTH 抽象機由通過網絡連接的EARTH節點組成。圖5展示了EARTH抽象機的結構,每個節點都有以下五個基本組件:執行單元(EU)、同步單元(SU)、兩個隊列(RQ 和EQ)、本地存儲和網絡接口。同步單元用于調度和同步線程,以及處理遠程訪問,EU 和SU 通過兩個隊列進行通信,EU 和SU 共享本地內存。最初,EARTH 是一個抽象機,并非具體實現的計算機系統,其最初是在模擬平臺上實現的,但是,加上EARTH-c 編譯器的配合,使得EARTH 成為了一個完整的、具有里程碑意義的單核數據流計算機系統模型。

圖5 EARTH 抽象機模型Fig.5 Abstract model of the EARTH

MANNA 2.0 是90年代早期在德國柏林的 GMD-FIRST 平臺上開發的用于非數值和數值應用的大規模并行架構[56],Hum 等人在MANNA 上搭建了EARTH-MANNA[57]系統,是EARTH 抽象機的第一個具體實現。該系統的一個節點包含了2 個50MHz 的Intel i860XP RISC 處理器[58],每個處理器有16KB 的片上數據緩存和 16K 的指令緩存。這兩個處理器在一個公共總線上共享 32MB 的DRAM,并使用總線監聽和 MESI 協議保持內存保持一致性。EARTH- MANNA 一方面是基于數據流原理的多線程系統,更重要的意義是證明了數據流系統可以使用現成的處理器有效地實現。

CARE[59]的獨特之處在于其混合了數據流架構和馮·諾依曼架構,CARE 體系結構及其處理器核心如圖6 所示。處理器核心按照其流水線階段劃分為獲取單元、解碼器單元、分發/發布單元、緩沖區,然后是功能單元(FUs),最后是寫回單元。處理器核心其實是一個亂序執行引擎和一個亂序的發射單元,允許多個線程競爭解碼時間,沒有提交單元來對指令進行排序,編譯器和組成機構之間的協議保證了相關指令之間不會存在控制沖突和內存沖突。一方面,CARE 非常適合支持多線程多處理器執行;另一方面, CARE 的體系結構模型還可以通過增加“調度基本量”來更好地利用調度窗口,同時避免了過高的復雜性。

圖6 CARE 架構及其流水線Fig.6 The architecture of CARE and its pipeline

TRIPS[60]架構由德克薩斯大學奧斯汀分校的Madhu Saravana Sibi Govindan 等人開發研制。TRIPS提出背景是計算機體系結構的研究轉向了多核架構,多核架構的挑戰在于如何編程,多核程序的設計比單核程序設計要復雜。TRIPS 的設計目標是首先通過指令級并行提高單線程的性能,其設計了具有顯式的數據流圖執行 (EDGE) 指令集,在多個粒度探索程序的并行性,最后,TRIPS 探索了可擴展的多核數據流架構。圖7 是TRIPS 的結構組成,TRIPS 架構也是目前數據流架構、CGRA、AI 芯片的重要參考對象。

圖7 TRIPS 架構Fig.7 The architecture of TRIPS

WaveScalar[61]是一種基于 Cluster 的可擴展的數據流結構。WaveScalar 的基本組成部分為 Cluster。整個處理器可以由任意個Cluster 組成,并通過二維網絡互連。每個 Cluster 是一個完整的簡單的處理單元,這種分塊組織方式能使設計快速收斂并且降低驗證需要的開銷。同時,這種組織方式能在非集中控制下完成計算,每個 Cluster 獨立完成自己的運算,能降低網絡傳輸延遲。 Wave Scalar 以動態的方式將指令映射到執行陣列中,將相互依賴的指令映射到相鄰或者相同 PE 上,以降低操作數的傳遞延遲;沒有依賴的指令映射到不同 PE 上,以挖掘指令的并行性。

IBM 的“藍色基因”項目構建了一系列超級計算機, 包括分階段實施的兩類不同的體系結構:BlueGene 和Cyclops64,其中,后者Cyclops64[62]采用了數據流計算思想,提出了程序執行模型感知的線程虛擬機 (Thread Virtual Machine, TVM),通過用戶級程序直接管理硬件資源,設計開發了微線程庫TNT(Tiny Threads),這影響了后來的NVIDIA 的CUDA 編程模型。

Tianjic 芯片[63-64]是第一款融合支持基于計算機科學的人工神經網絡與受神經科學啟發的類腦模型(主要是 SNN)的人工智能芯片,該芯片采用了多核結構、可重構計算模塊和數據流驅動的計算方式,并采用了混合的信息編碼方案,既能適應基于計算機科學的機器學習算法,又能方便地實現腦啟發網絡和多種編碼方案。

REVEL[65]面向具有規約特性的矩陣運算,設計了一款脈動陣列和數據流計算相結合的芯片。該工作解決了數據流架構只能并行化內部循環(innerloop)的問題,設計了一種稱為歸納數據流的執行模型,它從以下兩個方面擴展了傳統的數據流模型:定義了規約依賴模式和規約訪存模式。該工作充分結合了脈動陣列的高效性和數據流架構的靈活性。

國內的中國科學院計算技術研究所高通量團隊最早于2005年開始了眾核數據流處理器的研究,目前為止已成功研發了多款數據流芯片,其中最具有代表性的有Godson-T 處理器、SPU 和DPU 芯片。

圖8 Godson-T 架構Fig.8 The architecture of Godson-T

2009年成功流片的Godson-T[66]處理器系統受到數據流思想啟發,拋棄基于目錄的cache 一致性,采用基于鎖的弱一致性作為片上存儲模型。此外,Godson-T 支持數據流的細粒度同步指令操作,針對Cholesky 分解、LU 分解等細粒度通信頻繁的應用取得了很好的并行效果。

SPU[26]是一款面向科學計算的數據流加速器,項目啟動于2013年。SPU 處理器采用細粒度數據流執行模型,由一個RISC 處理核、一個 DMA 控制器和一個數據流加速部件組成。RISC 核和數據流加速器之間采用主核-加速器的工作模式。SPU 從圖內并行(inner-graph)、流水線并行(pipeline)和圖間并行(inter graph)三個層次挖掘程序的并行性,提高了功能部件的利用率。此外,基于SPU 還展開了許多數據流相關的研究工作[67-73]。

圖9 SPU 架構Fig.9 The architecture of SPU

圖10 DPU 架構Fig.10 The architecture of DPU

2011年高通量團隊啟動DPU 系列數據流處理器芯片的研發,并于2013年成功流片面向高通量音視頻處理領域的DPU-m 芯片,2020年成功流片面向數字信號處理領域的DPU-s 及圖處理領域DPU-g 芯片。DPU 系列處理器芯片采用粗粒度數據流執行模型,在通用性/性能/能效等方面進行了良好的設計權衡,在高通量數字信號處理、音視頻處理、科學計算、人工智能以及加解密等應用場景都取得良好表現。DPU 在單個處理單元中,對流水線進行了優化設計,充分保障指令 ready 與 fire 的順暢執行,減少空泡的產生。且通過 SIMD 的結構設計,提高了數據的執行吞吐能力。其次,執行單元規模上進行了合理的設計,保障了合適的數據流動的距離和并發執行能力。

2.3 數據流體系結構優勢分析

數據流結構的計算模式與傳統控制流完全不同。在傳統控制流處理器中,指令按照程序計數器順序執行,即指令序列規定了發射/提交順序。但在數據流計算模式中,只要指令所需的操作數準備好了,這條指令即可被執行。在數據流計算中,程序是以數據流圖表示的,每條指令的執行結果直接傳遞到另外一條指令,作為目的指令的操作數,指令與指令之間通過依賴邊來建立依賴關系,從而形成數據流圖。與傳統的控制流結構相比,數據流的優勢主要體現在如下四個方面:

(1)并行性高:傳統控制流結構在執行過程中雖然也允許亂序執行和多發射執行,但是仍然只能在指令窗口內選取可執行的指令執行,并行度受限;而在數據流結構中程序被完全展開成數據流圖的形式,所有指令的執行沒有強制順序,操作數到齊即可發射執行,并沒有指令窗口滑動控制執行順序的需要,所以可以在整體程序范圍充分挖掘指令級并行。

(2)同步開銷低:控制流結構中,處理器核之間往往通過全局 barrier 實現同步,屬于粗粒度的線程級同步;數據流結構中,程序依靠依賴關系進行細粒度的同步,數據流結構指令操作數的單一賦值特性使得多處理器可以在不需要維護集中存儲的一致性的前提下完成數據同步。數據流的細粒度較控制流的粗粒度同步能挖掘更多潛在的并行指令,并且不會對片上存儲產生額外的負擔,同步開銷更低。

(3)訪存開銷低:數據流結構采用指令與操作數空間綁定的形式,將計算與存儲結合,分散式存儲,降低對于集中存儲的訪問壓力,數據直接在操作數存儲間傳遞,不需要進行頻繁的訪存,也不需要將中間的結果在更低的存儲層次中反復存取。數據一旦進入片上處理陣列后,產生的中間結果便在處理節點之間按照數據流圖的依賴關系流動,直到結果產生,再存入低一級的存儲中。

(4)片上邏輯簡單:數據流結構直接利用指令級并行充分發揮功能部件的執行效率,省去控制流復雜的并行設計;分支結構由控制依賴轉換成數據依賴,無需分支預測的支持;指令與對應數據一一對應,不需要重命名寄存器以及復雜的 cache 層次。綜上,數據流結構的片上邏輯簡單,可以用更少的面積、功耗實現更高的執行性能。

3 數據流計算發展的挑戰和趨勢

隨著網絡服務、人工智能、AIoT 等高通量應用場景的不斷興起,應用處理模式和數據類型發生了巨大的變革,傳統馮·諾依曼結構正受到“存儲墻”等的限制,針對萬物互聯、海量數據處理的高并發應用場景,越來越難以持續提高其處理能效比。

以深度神經網絡為代表的人工智能算法和數據流計算思想在計算本質上高度匹配。近年來,大量面向人工智能算法的數據流芯片被提出[27,67-74,77-78],人工智能應用無疑是數據流計算最有效的催化劑,必將不斷催生出嶄新的數據流計算架構。而數據流執行模式,憑借其天然的高并發性和數據與計算的耦合性,也有望打破“存儲墻”的限制。

盡管數據流具有諸多優點,但數據流計算的發展也不會是一帆風順的,仍然面臨著巨大的挑戰,包括:

(1)數據流計算理論研究。數據流計算理論的進展緩慢,數據流計算理論是數據流芯片、數據流計算機等設計研發的指導思想,為數據流計算的發展提供理論支持。數據流計算理論包括數據流程序執行模型、數據流圖優化、數據流圖調度/映射方法、線程模型、內存模型、同步模型等。

(2)數據流計算架構的可重構性探索。雖然人工智能應用極大地帶動了數據流計算的發展,但是人工智能算法的發展速度遠快于數據流新架構的開發周期,所以數據流計算架構的可重構性變得極為重要。另外,高通量應用、科學計算、物聯網、區塊鏈等應用場景的興起對數據流架構的可重構性提出了更高的要求。

(3)軟件生態開發。數據流計算從誕生以來,一直以學術研究為主,只有少數成功商用的產品。一個非常重要的原因是與數據流計算配套的軟件棧開發進程緩慢。數據流軟件棧,包括編程語言、操作系統、編譯器等,都需要進行進一步的研究。

在未來,數據流計算的研究人員需要從理論研究、架構設計、軟件開發各層面互相結合,共同探索,以滿足不同的應用需求,以求數據流計算的進一步的完善與發展。

4 總結與展望

本文回溯數據流計算的起源,對數據流計算的理論研究、軟/硬件發展進行介紹,總結了數據流體系結構的特點,并指出,未來的數據流計算的發展需要結合理論研究、架構設計、軟件開發。

數據流計算對計算機科學和工程研究的許多領域產生了深遠影響。這些領域包括:算法設計、編程語言、處理器設計、多線程架構、并行編譯、高級邏輯設計、分布式計算、脈動陣列、流處理器、可重構處理器等,隨著大數據和人工智能等新興應用的興起,數據流計算的優勢日益顯現,數據流計算的研究也有望迎來一個新的黃金時代。

致謝

僅以此文紀念高光榮教授(1945-2021)。高光榮教授是數據流計算研究的先驅,在他的指導下,國內的數據流計算取得了重要進展。高光榮教授為我國計算機研究發展做出了杰出貢獻,曾獲得2013年度中國計算機學會(CCF)海外杰出貢獻獎。

利益沖突聲明

所有作者聲明不存在利益沖突關系。

猜你喜歡
指令程序模型
一半模型
聽我指令:大催眠術
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
ARINC661顯控指令快速驗證方法
測控技術(2018年5期)2018-12-09 09:04:26
LED照明產品歐盟ErP指令要求解讀
電子測試(2018年18期)2018-11-14 02:30:34
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
3D打印中的模型分割與打包
主站蜘蛛池模板: 婷五月综合| 国产精品久久久免费视频| 99热国产这里只有精品无卡顿" | 精品国产成人a在线观看| 国产一在线观看| 亚洲精品无码在线播放网站| 欧美激情视频在线观看一区| 日韩视频精品在线| 亚洲欧洲日韩久久狠狠爱| 亚洲全网成人资源在线观看| 在线观看视频一区二区| 国产精品永久不卡免费视频 | 精品一区二区三区视频免费观看| 国产精品无码AV片在线观看播放| 久久久91人妻无码精品蜜桃HD| 人人妻人人澡人人爽欧美一区| 99精品这里只有精品高清视频| 国产91在线免费视频| 69免费在线视频| 91丝袜在线观看| 日韩欧美中文| 91国内在线观看| 精品1区2区3区| 蜜芽一区二区国产精品| 国产精品99r8在线观看| 视频在线观看一区二区| 91精品国产91久久久久久三级| 国产区福利小视频在线观看尤物 | 国产精品林美惠子在线播放| 欧美在线导航| 综合人妻久久一区二区精品| 亚洲综合狠狠| 亚洲第一在线播放| 国产专区综合另类日韩一区| 91成人试看福利体验区| 国产人免费人成免费视频| 午夜三级在线| 九月婷婷亚洲综合在线| 日韩亚洲综合在线| 色综合热无码热国产| 伊人久久大香线蕉影院| 亚洲国产成人无码AV在线影院L| 国产一二三区视频| 国产成人精品三级| 久热99这里只有精品视频6| 国产网站黄| 欧美视频二区| 亚洲区欧美区| 久久久久亚洲精品成人网| 丝袜无码一区二区三区| 国产流白浆视频| 69av在线| 国产精品视频久| 久久精品欧美一区二区| 亚洲日韩久久综合中文字幕| 欧美自慰一级看片免费| 国产精品爽爽va在线无码观看 | 亚洲最大看欧美片网站地址| 91亚洲精选| 亚洲最大在线观看| 久久香蕉国产线看观看亚洲片| 超碰免费91| 午夜不卡福利| 97国产在线观看| 色综合中文综合网| 免费va国产在线观看| 四虎永久免费网站| 精品国产福利在线| 国产真实乱子伦视频播放| 四虎影视无码永久免费观看| 日韩麻豆小视频| 欧美专区日韩专区| 日韩大乳视频中文字幕| 欧美亚洲国产视频| 99久久精彩视频| 免费一级毛片在线观看| 亚洲午夜福利在线| 亚洲天堂视频网站| 中文字幕精品一区二区三区视频| 亚洲国产成人自拍| 国内精品视频区在线2021| 国产一级特黄aa级特黄裸毛片|