亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于SysML&SystemC的GPU任務(wù)調(diào)度單元事務(wù)級建模

        2021-03-16 08:30:16張少鋒吳曉成
        無線電工程 2021年2期
        關(guān)鍵詞:任務(wù)調(diào)度線程視圖

        張少鋒,田 澤,3,吳曉成,張 駿,3,陳 佳

        (1.航空工業(yè)西安航空計算技術(shù)研究所,陜西 西安 710068;2.西安翔騰微電子科技有限公司,陜西 西安 710068;3.集成電路與微系統(tǒng)設(shè)計航空科技重點實驗室,陜西 西安 710068)

        0 引言

        在人工智能技術(shù)和各種并行計算應(yīng)用蓬勃發(fā)展的今天,GPU作為高性能計算平臺扮演著極其重要的角色,隨著GPU芯片規(guī)模的日益復雜和龐大,其設(shè)計難度也日益增高。傳統(tǒng)的“瀑布”式芯片設(shè)計及驗證方法存在架構(gòu)、軟件和RTL之間缺乏有效的協(xié)同設(shè)計驗證手段,導致算法、硬件結(jié)構(gòu)、軟硬件交互和軟件實現(xiàn)的問題直到RTL仿真階段才集中暴露出來,再加上無法避免的RTL邏輯實現(xiàn)缺陷,芯片設(shè)計各環(huán)節(jié)之間的迭代周期和難度大幅增加,傳統(tǒng)的芯片設(shè)計及驗證方法已不能滿足架構(gòu)復雜的GPU的設(shè)計開發(fā)要求。綜合運用SysML和SystemC軟硬件設(shè)計語言的基于事務(wù)級模型的芯片設(shè)計驗證方法應(yīng)運而生,給架構(gòu)、軟件和RTL設(shè)計提供了統(tǒng)一的協(xié)同設(shè)計驗證載體,縮短了芯片設(shè)計驗證的迭代環(huán),逐漸成為主要方法[1-3]。

        GPU是涉及計算機學、圖形學和微電子學等多學科交叉的高復雜度集成電路,模塊化設(shè)計是必由之路,其中任務(wù)調(diào)度單元是GPU的關(guān)鍵子模塊,是連接用戶著色任務(wù)和GPU染色內(nèi)核的紐帶。本文采用SysML和SystemC構(gòu)建了任務(wù)調(diào)度單元的視圖模型和事務(wù)級建模(Transaction-Level Modeling,TLM)模型,通過軟硬件協(xié)同仿真,驗證和優(yōu)化了任務(wù)調(diào)度單元架構(gòu)和算法設(shè)計,為軟件開發(fā)提供了虛擬原型,并為RTL設(shè)計驗證提供了先驗依據(jù)和參考模型[4-8],有效降低了GPU設(shè)計驗證迭代的復雜度,加速了GPU的設(shè)計驗證進度。

        1 基于SysML&SystemC的GPU設(shè)計開發(fā)方法

        基于SysML&SystemC的復雜芯片設(shè)計開發(fā)方法是在傳統(tǒng)的開發(fā)流程中加入了TLM模型,TLM模型提供了架構(gòu)、軟件、RTL三者交互的媒介,降低了三者之間的耦合度,有效降低了GPU設(shè)計驗證迭代的復雜度,加速了GPU的設(shè)計驗證進度?;赟ysML&SystemC的復雜芯片設(shè)計開發(fā)流程如圖1所示。

        圖1 基于SysML&SystemC的GPU設(shè)計開發(fā)流程Fig.1 GPU design and development process based on SysML&SystemC

        在這種設(shè)計模式中,SysML用于系統(tǒng)架構(gòu)的分析與設(shè)計,描述系統(tǒng)的需求、結(jié)構(gòu)、功能及相應(yīng)的行為,SystemC利用軟硬件協(xié)同的思想建立事務(wù)級模型。首先根據(jù)體系架構(gòu)設(shè)計建立SysML視圖模型,然后將SysML視圖模型映射為SystemC模型,SystemC模型經(jīng)過檢查和細化后形成TLM模型,然后聯(lián)合軟件進行軟硬件協(xié)同仿真,最后對仿真結(jié)果進行分析以達到盡可能早的驗證和優(yōu)化架構(gòu)以及算法的目的,并為RTL提供了參考設(shè)計。

        1.1 SysML模型

        SysML是由統(tǒng)一建模語言(Unified Modeling Language,UML)繼承發(fā)展而來的能夠表達豐富內(nèi)容的可視化系統(tǒng)建模語言,能夠支持各種復雜系統(tǒng)的詳細分析、設(shè)計、驗證和說明,可以把系統(tǒng)的結(jié)構(gòu)、行為、需求和參數(shù)可視化,然后與其他人溝通這些信息。SysML定義了9種基本圖形如2所示,包含模塊定義圖(Block Definition Diagram,BDD)、內(nèi)部模塊圖(Internal Block Diagram,IBD)、包圖、用例圖、活動圖、序列圖、狀態(tài)機圖、參數(shù)圖和需求圖,可以使用它們說明系統(tǒng)的所有設(shè)計信息。每種圖都針對特定的目的,并說明系統(tǒng)一個方面的特定信息[9-12]。

        圖2 SysML視圖元素Fig.2 SysML view elements

        1.2 基于SystemC的TLM模型

        TLM模型是比RTL更高的抽象級別,是一種高級的數(shù)字系統(tǒng)模型化方法,它將模型間的通信細節(jié)與函數(shù)單元或通信架構(gòu)的細節(jié)分離開來。由于TLM模型具有更高的抽象層次,它具備開發(fā)周期短和仿真速度快的特點,可以在項目早期驗證算法和架構(gòu)的正確性,為軟件開發(fā)提供虛擬原型平臺,還可以為RTL開發(fā)提供參考設(shè)計。

        SystemC本質(zhì)上是在C++的基礎(chǔ)上添加了硬件擴展庫和仿真內(nèi)核,利用類的繼承性來擴展C++在硬件開發(fā)驗證領(lǐng)域的能力,所以它具備TLM的優(yōu)勢[9]。SystemC提供了必要的硬件時序、并發(fā)等概念,支持線程同步和通信細化,并提供了一個專門的擴展驗證庫,使得利用它可以建模不同抽象級別的復雜系統(tǒng),既可以描述純功能模型和系統(tǒng)體系結(jié)構(gòu),也可以描述軟硬件的具體實現(xiàn)[13]。

        如果迅速完成高層次系統(tǒng)行為的TLM描述,便可以確定最佳系統(tǒng)架構(gòu),進而逐步細化模型,并在模型基礎(chǔ)上同時開展軟件和硬件設(shè)計和驗證,從而在保證設(shè)計優(yōu)化的情況下減少仿真時間以加速設(shè)計收斂。TLM2.0中,事務(wù)級模型可以細分為非定時、松散定時、近似定時和周期精確模型,每個層次的模型應(yīng)用場景有所不同,非定時模型可以提供虛擬原型,更快地驗證架構(gòu)和算法的正確性,松散定時模型主要用于體系結(jié)構(gòu)分析、軟件開發(fā)和軟件性能評估,近似定時模型主要用于體系結(jié)構(gòu)優(yōu)化分析和硬件驗證,周期精確模型更適合硬件RTL驗證[14-15]。

        本文采用SystemC TLM2.0進行松散時間的事務(wù)級建模,能在保證較快仿真速度的基礎(chǔ)上快速建立硬件的可執(zhí)行事務(wù)級模型,又能最大限度地精確描述硬件行為以評估優(yōu)化體系架構(gòu)。

        圖3 GPU任務(wù)調(diào)度單元內(nèi)部模塊Fig.3 Internal block diagram of GPU task scheduling unit

        2 SysML建模

        SysML是UML在系統(tǒng)工程應(yīng)用領(lǐng)域的延續(xù)和擴展,從視圖模型的不同描述角度SysML視圖可劃分為需求圖、參數(shù)圖、結(jié)構(gòu)圖和行為圖四大類。需求圖和參數(shù)圖是SysML語言針對復雜系統(tǒng)而設(shè)計的特有的圖類,需求圖用于識別、描述和管理芯片設(shè)計的需求,參數(shù)圖用于說明系統(tǒng)的約束。SysML針對復雜系統(tǒng)在UML基礎(chǔ)上對結(jié)構(gòu)圖和行為圖進行了擴展。

        本文采用Sparx Systems公司的Enterprise Architect建模工具構(gòu)建SysML視圖,通過梳理GPU架構(gòu)和算法構(gòu)建GPU任務(wù)調(diào)度單元的結(jié)構(gòu)圖和行為圖。結(jié)構(gòu)圖和行為圖的構(gòu)建是逐步細化并且準確的過程,構(gòu)建過程本身就達到了初步驗證架構(gòu)和算法的目的。SysML視圖模型可以為架構(gòu)、軟件和RTL提供一個相對準確無歧義的信息交互媒介。

        2.1 結(jié)構(gòu)圖

        結(jié)構(gòu)圖中描述子模塊結(jié)構(gòu)的圖是IBD,通過組件、端口和連接器來用于描述系統(tǒng)模塊的內(nèi)部結(jié)構(gòu)和交互,組件包括SC_THREAD、SC_METHOD、sc_fifo和monitor,端口和連接器包括pin-port、 socket和API,socket是TLM2.0的核心內(nèi)容。

        GPU任務(wù)調(diào)度單元IBD如圖3所示。

        圖3主要包括2個block:接口適配(JSU_Adapter)和內(nèi)核(JSU_CORE)。接口適配一方面通過monitor監(jiān)控和解析其他模塊發(fā)送的控制信息和數(shù)據(jù)交給本單元的處理進程,另一方面通過SC_METHOD驅(qū)動本單元的輸出信息到其他單元。與其他模塊交互的通道是pin-port和socket,socket將在TLM建模中詳細描述。任務(wù)調(diào)度單元內(nèi)核包括頂點組裝單元、片段組裝單元、染色陣列管理單元和組裝控制寄存器組管理單元。每個子單元都包含了若干個用于描述行為的組件。

        通過JSU_Adapter和JSU_CORE的互聯(lián)通信,完成GPU染色任務(wù)的調(diào)度工作包括:① 頂點組裝單元按照組裝控制寄存器組的控制信息將用戶下發(fā)的符合OpenGL和GLSL標準的頂點著色任務(wù)進行組裝并下發(fā)至分配的染色陣列單元;② 片段組裝單元按照組裝控制寄存器組的控制信息將圖像處理單元或幾何引擎單元下發(fā)的片段著色任務(wù)進行組裝并下發(fā)至分配的統(tǒng)一染色陣列單元;③ 染色內(nèi)核管理負責染色陣列資源分配映射和任務(wù)管理;④ 組裝控制寄存器組管理單元用于接收和管理用戶的組裝控制信息。

        2.2 行為圖

        行為圖主要關(guān)注控制流程和模塊內(nèi)部狀態(tài)變化,描述在事件觸發(fā)下的不同狀態(tài)間的轉(zhuǎn)換和輸入轉(zhuǎn)化為輸出的過程。在描述GPU任務(wù)調(diào)度單元時,行為圖是對內(nèi)部塊圖的一種細化,描述了線程或?qū)ο蟮年P(guān)鍵成員函數(shù)的處理流程,展現(xiàn)一個線程基于事件反應(yīng)的動態(tài)行為,顯示了該線程如何根據(jù)當前所處的狀態(tài)對不同事件做出不同的反應(yīng)。

        GPU任務(wù)調(diào)度單元是GPU的調(diào)度中樞,功能比較復雜,由于篇幅有限,只描述頂點組裝單元的行為圖。根據(jù)著色任務(wù)的復雜性,組裝過程分為簡單模式和復雜模式2種。不同的工作模式下,頂點組裝單元的行為也不同,如圖4所示。工作模式由組裝控制寄存器組管理單元根據(jù)包括紋理開關(guān)、光照開關(guān)、霧開關(guān)等一系列開關(guān)計算形成的。頂點組裝單元的fifo管理進程將來自狀態(tài)參數(shù)與圖形處理管理單元(SGU)的多個頂點的屬性存入vertex_fifo,頂點屬性包括坐標屬性、顏色屬性、紋理屬性和光照屬性等;然后由頂點組裝進程組裝為一個統(tǒng)一染色陣列(USA)上能夠運行的vertex WARP,WARP是USA處理的最小單元;最后WARP被調(diào)度到對應(yīng)的USA內(nèi)核進行頂點著色處理。

        圖4 頂點組裝線程行為圖Fig.4 Vertex assembling thread behavior diagram

        3 基于SystemC的事務(wù)級建模及仿真

        SysML視圖模型經(jīng)過多次迭代和梳理驗證后,能較精準地描述芯片體系架構(gòu)和算法流程,這時可以自然且直觀地將視圖模型以某種方式映射為事務(wù)級模型。本文采用SystemC&TLM2.0將SysML視圖“翻譯”為松散時間的事務(wù)級模型。結(jié)構(gòu)圖可以映射為模塊定義,行為圖可以映射為線程定義。

        3.1 模塊定義

        與Verilog類似,模塊是SystemC設(shè)計中完成特定功能的最基本單元,主要包含用于模塊間通信的端口或信道,用于實現(xiàn)內(nèi)部行為的方法、線程和存儲模型。任務(wù)調(diào)度單元定義了2個module,分別是G3D_JSU_ADAPTER和G3D_JSU_CORE,G3D_JSU_ADAPTER繼承于G3D_JSU_CORE,G3D_JSU_CORE繼承于sc_module。

        TLM2.0中,用pin-port來實現(xiàn)功能簡單的信號并傳遞信息;完成同一類較復雜事務(wù)的多組信號可以封裝為socket,利用TLM2.0對socket通信的支持來完成事務(wù)通信。發(fā)起事務(wù)的模塊稱為發(fā)起者(initiator),而接收該事務(wù)并作出響應(yīng)的模塊稱為目標(target),發(fā)起者和目標之間通過套接字(socket)連接。發(fā)起者和目標模塊必須遵守在TLM2.0中稱為事務(wù)處理核心接口的接口標準才能互聯(lián)互通。

        TLM2.0提供了豐富的socket方法來建模功能行為,包括雙向的非阻塞接口方法、阻塞接口方法、雙向的DMI(Direct Memory Interface)接口方法、調(diào)試接口方法。這些方法用于解析模塊間傳遞的控制信息和數(shù)據(jù)。

        任務(wù)調(diào)度單元的G3D_JSU_ADAPTER包含了pin-ports、soket、socket function、api、thread的聲明,實現(xiàn)的功能包括:① 將其他模塊輸入的信息或數(shù)據(jù)在socket function或thread 中進行解析,并調(diào)用api觸發(fā)內(nèi)核的相關(guān)處理操作;② 將內(nèi)核要傳輸?shù)男畔⒃趕ocket function中組包為payload通過socket發(fā)送,或者在thread中驅(qū)動pin-port端口通信。

        G3D_JSU_CORE包含了api、method和thread的聲明,實現(xiàn)的功能主要接收G3D_JSU_ADAPTER下發(fā)的信息交由method或thread進行處理,將處理結(jié)果通過純虛函數(shù)API(該API在G3D_JSU_CORE 中聲明,在G3D_JSU_ADAPTER實現(xiàn))傳送給G3D_JSU_ADAPTER再發(fā)送出去。2個module具體的實現(xiàn)如下:

        classG3D_JSU_CORE:public

        sc_core::sc_module

        {protected: ∥ api functions

        virtual void api1_send_vertex_shade_

        data_to_usa_a () = 0;

        private: ∥ process functions

        ∥頂點組裝線程進程

        void vertex_assemble_cthread_0();

        ∥片段組裝線程進程

        void fragment_assemble_cthread_0 ();

        ∥頂點FIFO管理進程

        void vertex_fifo_manage_cthread();};

        class G3D_JSU_ADAPTER: public G3D_JSU_CORE

        {public: ∥ pin-ports

        sc_core::sc_in CLK; ∥時鐘

        sc_core::sc_in RST_N; ∥復位

        ∥簡單復雜模式,

        sc_core::sc_out

        JSU2SGU_VERTEX_SIMPLE_COMPLEX_MODE;

        sc_core::sc_out

        JSU2SGU_FRAGMENT_SIMPLE_COMPLEX_MODE;

        public: ∥ socket

        tlm::tlm_initiator_socket<>

        jsu2usa_vertex_data_initiator_socket_a;

        tlm::tlm_target_socket<>

        sgu2jsu_send_vertex_data_target_socket;

        public: ∥ constructior and destructor

        G3D_JSU_CORE

        ( sc_core::sc_module_name _name );

        virtual ~G3D_JSU_CORE();

        private: ∥ socket function

        void b_transport(

        tlm::tlm_generic_payload &payload

        ,sc_core::sc_time &delay_time );∥阻塞

        tlm::tlm_sync_enum

        b_transport_fw(tlm::tlm_generic_payload &gp

        , tlm::tlm_phase &phase, sc_core::sc_time

        &delay_time );∥非阻塞-前向

        tlm::tlm_sync_enum

        nb_transport_bw(tlm::tlm_generic_payload

        &payload,tlm::tlm_phase phase,sc_core::sc_time

        &delta ); ∥非阻塞-后向

        protected: ∥ api functions

        void

        api1_send_vertex_shade_data_to_usa_a ();

        void api0_send_new_vertex_data();

        private: ∥ process function

        ∥用于監(jiān)控和解析SGU發(fā)送的頂點數(shù)據(jù)

        voidsgu2jsu_send_vertex_data_target_cthread();};

        3.2 進程定義

        SystemC進程是任務(wù)調(diào)度單元處理事務(wù)的載體,包括方法進程SC_METHOD、線程進程SC_THREAD和鐘控線程進程SC_CTHREAD,它們被調(diào)用來仿真目標系統(tǒng)的行為,實現(xiàn)模塊的算法和控制細節(jié)。最常用的是線程進程,特點是它能夠被掛起和重新激活:線程進程使用wait()掛起,當敏感表中有事件發(fā)生,線程進程被重新激活運行到遇到新的wait()語句再重新掛起。

        定義了大量的進程來協(xié)同完成GPU的任務(wù)調(diào)度,下面以頂點組裝線程進程為例來說明進程的實現(xiàn),包括進程的注冊和定義:

        SC_THREAD(Vertex_Assemble_Cthread_0);∥啟動進程

        sensitive_pos << clock;∥注冊敏感事件為時鐘

        void G3D_JSU_VAU:: Vertex_Assemble_Cthread_0 ()∥進程的定義

        { while(true)

        { wait();

        jsuVertexBusy.write(1);∥

        ∥ read sgu2jsu_fifo

        do{ wait();

        } while(sguVertexFifoEmpty == ds_basic::EMPTY);

        sgu2jsu_fifo->read()

        ∥ update GVP Reg

        Update_Gvp_Vertex_Attribute(graphDrawData);

        ∥ check workMode is simple or complex

        if(vdauGetServicePort->Get_Vertex_Simple_Complex_Mode() == ds_basic::SIMPLE) ∥ simple mode{Update_Ocu_Simple_Vertex_Task(ds_func_jsu::VERTEX_TYPE);}

        else ∥ complex mode

        { Get_Vertex_Slot_Id(gotSlotId);

        Update_Usa_Vertex_Attrib_From_Gvp(ds_func_jsu::VERTEX_TYPE,gotSlotId,updateMask,graphDrawData.type);}

        jsuVertexBusy.write(0);

        return;}}

        3.3 仿真驗證

        任務(wù)調(diào)度單元的TLM模型開發(fā)完成后與其他模塊的TLM模型進行互聯(lián)構(gòu)成整個GPU的TLM模型,TLM模型之間依靠時鐘和動態(tài)事件同步,通過pin-port、socket進行事務(wù)通信。接下來的工作就是基于SystemC simulation kernel的仿真驗證,該kernel的主要任務(wù)是控制仿真、響應(yīng)event、對不同線程進行切換等。本文采用的SystemC庫版本為2.3.3,參考平臺采用Mesa,Mesa是以開源軟件形式實現(xiàn)的OpenGL標準應(yīng)用程序接口模型,不依賴任何硬件。

        采用OpenGL2.0,構(gòu)造如下的測試場景:利用glViewPort將屏幕劃分為4個子窗口,第1個窗口中使用一維紋理和二維紋理貼圖功能,第2個窗口中使用了壓縮紋理功能,第3個窗口中使用了位圖(glBitmap)功能,第4個窗口中繪制了平滑著色的多邊形帶。驗證場景涵蓋了頂點著色和片段著色的典型功能,能觸發(fā)任務(wù)調(diào)度單元的關(guān)鍵控制通路。圖5顯示了TLM模型輸出了跟MESA相同的正確結(jié)果圖,并且該驗證項在TLM仿真平臺僅耗時10 min,相同的驗證項在RTL虛擬仿真平臺將耗時數(shù)小時,由此可見TLM模型功能正確并且仿真速度得到了巨大提升。

        圖5 TLM模型結(jié)果和MESA參考Fig.5 TLM model result figure and MESA reference figure

        4 結(jié)束語

        采用基于TLM模型的GPU設(shè)計驗證方法,能盡早驗證優(yōu)化算法、架構(gòu)和電路功能,并為RTL設(shè)計提供了參考模型,加速了GPU的軟硬件協(xié)同設(shè)計。TLM模型采用SysML和SystemC聯(lián)合開發(fā),首先構(gòu)建任務(wù)調(diào)度單元的SysML視圖模型,然后將其映射為事務(wù)級模型,最后進行仿真驗證。本文主要研究松散定時的功能性建模,后續(xù)將建立近似定時TLM模型和時鐘周期精確TLM模型,以此進行體系結(jié)構(gòu)的性能分析向模塊設(shè)計提供性能指標依據(jù),以及硬件RTL和TLM模型的混合仿真驗證。

        猜你喜歡
        任務(wù)調(diào)度線程視圖
        基于改進NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
        基于時間負載均衡蟻群算法的云任務(wù)調(diào)度優(yōu)化
        5.3 視圖與投影
        視圖
        Y—20重型運輸機多視圖
        SA2型76毫米車載高炮多視圖
        淺談linux多線程協(xié)作
        云計算環(huán)境中任務(wù)調(diào)度策略
        云計算中基于進化算法的任務(wù)調(diào)度策略
        Linux線程實現(xiàn)技術(shù)研究
        极品 在线 视频 大陆 国产| 少妇伦子伦情品无吗| 久久久www成人免费精品| 久久天天躁夜夜躁狠狠躁2022| 国产精品欧美成人片| 久久一区二区国产精品| 女人脱了内裤趴开腿让男躁| 色av综合av综合无码网站| 亚洲精品午夜精品国产| 最新中文字幕亚洲一区| 少妇中文字幕乱码亚洲影视| 天堂√最新版中文在线天堂| 国产美女av一区二区三区| 亚洲国产精品情侣视频| 亚洲av日韩精品久久久久久久| 国产nv精品你懂得| 亚洲av第一区综合激情久久久 | 免费av在线国模| 亚洲av自偷自拍亚洲一区| 人妻熟妇乱又伦精品视频| 中文字幕久无码免费久久| 白丝美女被狂躁免费视频网站| 国产在线观看女主播户外| 免费国产a国产片高清网站| 亚洲日韩乱码中文无码蜜桃臀| 胳膊肘上有白色的小疙瘩| 亚洲一区二区三区国产| 我爱我色成人网| 久久人妻AV无码一区二区| 国产午夜视频高清在线观看| 观看在线人视频| 国产精品久久久久免费a∨| 日韩精品一区二区av在线| 国产午夜在线视频观看| 久久久久久久岛国免费观看| 亚洲地区一区二区三区| 亚洲美女主播内射在线| 国产av无码专区亚洲avjulia| 粗大的内捧猛烈进出在线视频| 午夜精品一区二区久久做老熟女| 人妻少妇中文字幕在线观看|