国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线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ī)模的日益復(fù)雜和龐大,其設(shè)計難度也日益增高。傳統(tǒng)的“瀑布”式芯片設(shè)計及驗證方法存在架構(gòu)、軟件和RTL之間缺乏有效的協(xié)同設(shè)計驗證手段,導(dǎo)致算法、硬件結(jié)構(gòu)、軟硬件交互和軟件實現(xiàn)的問題直到RTL仿真階段才集中暴露出來,再加上無法避免的RTL邏輯實現(xiàn)缺陷,芯片設(shè)計各環(huán)節(jié)之間的迭代周期和難度大幅增加,傳統(tǒng)的芯片設(shè)計及驗證方法已不能滿足架構(gòu)復(fù)雜的GPU的設(shè)計開發(fā)要求。綜合運(yùn)用SysML和SystemC軟硬件設(shè)計語言的基于事務(wù)級模型的芯片設(shè)計驗證方法應(yīng)運(yùn)而生,給架構(gòu)、軟件和RTL設(shè)計提供了統(tǒng)一的協(xié)同設(shè)計驗證載體,縮短了芯片設(shè)計驗證的迭代環(huán),逐漸成為主要方法[1-3]。

GPU是涉及計算機(jī)學(xué)、圖形學(xué)和微電子學(xué)等多學(xué)科交叉的高復(fù)雜度集成電路,模塊化設(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è)計驗證迭代的復(fù)雜度,加速了GPU的設(shè)計驗證進(jìn)度。

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

基于SysML&SystemC的復(fù)雜芯片設(shè)計開發(fā)方法是在傳統(tǒng)的開發(fā)流程中加入了TLM模型,TLM模型提供了架構(gòu)、軟件、RTL三者交互的媒介,降低了三者之間的耦合度,有效降低了GPU設(shè)計驗證迭代的復(fù)雜度,加速了GPU的設(shè)計驗證進(jìn)度。基于SysML&SystemC的復(fù)雜芯片設(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)過檢查和細(xì)化后形成TLM模型,然后聯(lián)合軟件進(jìn)行軟硬件協(xié)同仿真,最后對仿真結(jié)果進(jìn)行分析以達(dá)到盡可能早的驗證和優(yōu)化架構(gòu)以及算法的目的,并為RTL提供了參考設(shè)計。

1.1 SysML模型

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

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

1.2 基于SystemC的TLM模型

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

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

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

本文采用SystemC TLM2.0進(jìn)行松散時間的事務(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ù)和擴(kuò)展,從視圖模型的不同描述角度SysML視圖可劃分為需求圖、參數(shù)圖、結(jié)構(gòu)圖和行為圖四大類。需求圖和參數(shù)圖是SysML語言針對復(fù)雜系統(tǒng)而設(shè)計的特有的圖類,需求圖用于識別、描述和管理芯片設(shè)計的需求,參數(shù)圖用于說明系統(tǒng)的約束。SysML針對復(fù)雜系統(tǒng)在UML基礎(chǔ)上對結(jié)構(gòu)圖和行為圖進(jìn)行了擴(kuò)展。

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

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ù)交給本單元的處理進(jìn)程,另一方面通過SC_METHOD驅(qū)動本單元的輸出信息到其他單元。與其他模塊交互的通道是pin-port和socket,socket將在TLM建模中詳細(xì)描述。任務(wù)調(diào)度單元內(nèi)核包括頂點組裝單元、片段組裝單元、染色陣列管理單元和組裝控制寄存器組管理單元。每個子單元都包含了若干個用于描述行為的組件。

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

2.2 行為圖

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

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

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

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

SysML視圖模型經(jīng)過多次迭代和梳理驗證后,能較精準(zhǔn)地描述芯片體系架構(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)功能簡單的信號并傳遞信息;完成同一類較復(fù)雜事務(wù)的多組信號可以封裝為socket,利用TLM2.0對socket通信的支持來完成事務(wù)通信。發(fā)起事務(wù)的模塊稱為發(fā)起者(initiator),而接收該事務(wù)并作出響應(yīng)的模塊稱為目標(biāo)(target),發(fā)起者和目標(biāo)之間通過套接字(socket)連接。發(fā)起者和目標(biāo)模塊必須遵守在TLM2.0中稱為事務(wù)處理核心接口的接口標(biāo)準(zhǔn)才能互聯(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 中進(jìn)行解析,并調(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進(jìn)行處理,將處理結(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

∥頂點組裝線程進(jìn)程

void vertex_assemble_cthread_0();

∥片段組裝線程進(jìn)程

void fragment_assemble_cthread_0 ();

∥頂點FIFO管理進(jìn)程

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; ∥復(fù)位

∥簡單復(fù)雜模式,

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 進(jìn)程定義

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

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

SC_THREAD(Vertex_Assemble_Cthread_0);∥啟動進(jìn)程

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

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

{ 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模型進(jìn)行互聯(lián)構(gòu)成整個GPU的TLM模型,TLM模型之間依靠時鐘和動態(tài)事件同步,通過pin-port、socket進(jìn)行事務(wù)通信。接下來的工作就是基于SystemC simulation kernel的仿真驗證,該kernel的主要任務(wù)是控制仿真、響應(yīng)event、對不同線程進(jìn)行切換等。本文采用的SystemC庫版本為2.3.3,參考平臺采用Mesa,Mesa是以開源軟件形式實現(xiàn)的OpenGL標(biāo)準(zhǔn)應(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ù)級模型,最后進(jìn)行仿真驗證。本文主要研究松散定時的功能性建模,后續(xù)將建立近似定時TLM模型和時鐘周期精確TLM模型,以此進(jìn)行體系結(jié)構(gòu)的性能分析向模塊設(shè)計提供性能指標(biāo)依據(jù),以及硬件RTL和TLM模型的混合仿真驗證。

猜你喜歡
任務(wù)調(diào)度線程視圖
基于改進(jìn)NSGA-Ⅱ算法的協(xié)同制造任務(wù)調(diào)度研究
基于時間負(fù)載均衡蟻群算法的云任務(wù)調(diào)度優(yōu)化
5.3 視圖與投影
視圖
Y—20重型運(yùn)輸機(jī)多視圖
SA2型76毫米車載高炮多視圖
淺談linux多線程協(xié)作
云計算環(huán)境中任務(wù)調(diào)度策略
云計算中基于進(jìn)化算法的任務(wù)調(diào)度策略
云計算中基于進(jìn)化算法的任務(wù)調(diào)度策略
镇赉县| 炉霍县| 晋州市| 凤阳县| 涞源县| 博罗县| 突泉县| 榆林市| 蓬莱市| 基隆市| 榆树市| 叙永县| 东乡族自治县| 英吉沙县| 九江县| 江安县| 乌什县| 安达市| 舒城县| 齐齐哈尔市| 富阳市| 南通市| 阜宁县| 盘锦市| 静乐县| 古浪县| 星子县| 乐亭县| 揭西县| 张家川| 襄城县| 峡江县| 涿鹿县| 岳普湖县| 海宁市| 景德镇市| 青海省| 鹤岗市| 新丰县| 南木林县| 庆城县|