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

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

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

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

電子設(shè)計 ? 來源:網(wǎng)絡(luò)整理 ? 作者:工程師吳畏 ? 2018-06-12 16:35 ? 次閱讀

0 引言

隨著GPU技術(shù)的發(fā)展,GPU結(jié)構(gòu)變得越來越復(fù)雜,對硬件的調(diào)試成為一個越來越困難的任務(wù)。硬件調(diào)試的困難在于硬件本身的不透明性。在發(fā)生問題的時候,工程師沒有辦法像軟件調(diào)試那樣,看到硬件內(nèi)部發(fā)生了什么,也不能像軟件調(diào)試那樣,半路設(shè)一個斷點,把硬件停下來。

為方便對硬件的調(diào)試,GPU設(shè)計人員開發(fā)出很多種硬件調(diào)試方法來降低硬件調(diào)試的難度,傳統(tǒng)上有DebugBus、掃描路徑法、ARM CoreSightTM技術(shù)。這些方法的目的都是用某種方法將硬件內(nèi)部信息暴露給工程師,降低硬件的不透明性,但其暴露出的信息都是硬件內(nèi)部某個時間點的靜態(tài)信息,對硬件工程師的幫助是有限的。

本文提出一種新的調(diào)試架構(gòu),相對于傳統(tǒng)技術(shù),它能夠提供一段時間內(nèi)的動態(tài)數(shù)據(jù)給工程師,讓工程師能夠了解在這段時間內(nèi)硬件內(nèi)部狀況是如何變化的,使得工程師能迅速定位到造成問題的異常變化。甚至更進一步,工程師可以將得到的信息導(dǎo)入模擬環(huán)境,在模擬環(huán)境里面重現(xiàn)硬件的問題。

1 傳統(tǒng)硬件調(diào)試方式及其缺陷

1.1 DebugBus

DebugBus技術(shù)是最早在芯片設(shè)計中引進的調(diào)試技術(shù)[1-2]。其基本原理是在硬件設(shè)計中添加一批狀態(tài)寄存器,每個模塊都把自己的狀態(tài)編碼后送到這個狀態(tài)寄存器中。當(dāng)發(fā)生問題的時候,工程師讀取狀態(tài)寄存器中的狀態(tài)碼,從而可以分析問題發(fā)生的原因。

DebugBus技術(shù)缺陷在于,狀態(tài)寄存器的位是有限的,所以能反映模塊的狀態(tài)也是有限的,工程師通過狀態(tài)碼只能大概了解模塊的真實情況。

1.2 基于掃描路徑法的可測性設(shè)計技術(shù)

基于掃描路徑法的可測性設(shè)計技術(shù)是可測性設(shè)計(DFT)技術(shù)的一個重要方法[3-5],這種方法能夠從芯片外部設(shè)定電路中各個觸發(fā)器的狀態(tài),并通過簡單的掃描鏈設(shè)計,掃描觀測觸發(fā)器是否工作在正常狀態(tài),以此來檢測電路的正確性。

這種技術(shù)的缺陷在于它速度太慢,因為它是一個串行的操作,不能一次讀出全部數(shù)據(jù),導(dǎo)致工程師不能得到一個即時的數(shù)據(jù)[6]。

1.3 ARM CoreSightTM技術(shù)

CoreSightTM技術(shù)是ARM公司在2004年推出的一個新的調(diào)試體系架構(gòu),以提供更為強大的調(diào)試能力[7]。

CoreSightTM技術(shù)比較適合于軟件調(diào)試,因為它提供給工程師的是模塊之間的指令和寄存器傳遞序列,軟件工程師可以知道自己送給硬件的命令是如何在硬件各個模塊之間傳遞。但硬件開發(fā)工程師更多的是想了解模塊和模塊之間完整的會話信息,甚至是模塊內(nèi)部的一些信號[8-9]。

2 新調(diào)試系統(tǒng)硬件部分

對于硬件開發(fā)工程師來說,要調(diào)試硬件問題需要得到大量硬件內(nèi)部模塊和模塊之間的會話信息,這些信息最好是某個時間段內(nèi)連續(xù)的信息,而不是簡單的某個時間點的信息。

但是要把所有這些信息收集給調(diào)試人員,就需要解決兩個問題:

第一,每個時鐘周期產(chǎn)生的信息是大量的,為了不影響后面的時序,必須在一個時鐘周期內(nèi)處理完。但硬件帶寬的限制又決定了這些不可能在一個周期內(nèi)處理完。這也是過去技術(shù)上只能提供簡略信息的主要原因。

第二,由于每個時鐘周期都產(chǎn)生大量的信息,因此我們要處理的整體信息量非常巨大,導(dǎo)致這些信息的存儲就是一個問題。

為了解決這些問題,設(shè)計了一個雙時鐘系統(tǒng)。當(dāng)我們發(fā)現(xiàn)需要存儲信息的時候,我們就把全局時鐘停止,從而使得各個模塊停止工作。同時我們用另外一套時鐘系統(tǒng)驅(qū)動調(diào)試模塊收集和壓縮信息。當(dāng)信息收集完成以后,就把相關(guān)的數(shù)據(jù)發(fā)送到存儲模塊去存儲。當(dāng)存儲完成時候,再重新激活全局時鐘,讓各個模塊繼續(xù)工作。

由于采用了雙時鐘系統(tǒng),提供了足夠的時間來進行信息的收集和存儲。因此在存儲媒介上,我們放棄了價格昂貴但容量偏小的閃存,而是選擇了從板載內(nèi)存中分配一塊較大的區(qū)間,這樣就能在成本范圍內(nèi)提供能夠存放足夠多信息的存儲空間。

根據(jù)以上設(shè)計,我們把新的調(diào)試系統(tǒng)分成了5個模塊。

2.1 會話取樣模塊

會話取樣模塊負(fù)責(zé)將模塊和模塊之間的會話傳給會話監(jiān)控模塊或者會話記錄模塊。假設(shè)我們有兩個模塊A和B,一般情況下,模塊A和模塊B之間通過接口C連接,互相傳遞信息,如圖1所示。

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

將會話取樣模塊放在接口C上,通過它來檢查模塊A和模塊B之間是否有會話,如果有會話發(fā)生,那么就把會話內(nèi)容傳給會話存儲模塊,并由會話存儲模塊將內(nèi)容整理存儲到存儲媒介上,如圖2所示。

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

2.2 會話監(jiān)控模塊

會話監(jiān)控模塊負(fù)責(zé)監(jiān)控模塊之間的會話,一旦它發(fā)現(xiàn)模塊A和模塊B之間發(fā)生了會話,那么會話監(jiān)控模塊就會通知全局時鐘控制模塊,把所有模塊的時鐘中止,如圖3所示。

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

2.3 會話記錄模塊

會話記錄模塊負(fù)責(zé)在全局時鐘停止時,將會話的內(nèi)容記錄到內(nèi)存中。我們沒有采用傳統(tǒng)上的內(nèi)部Cache的模式,因為雖然內(nèi)存中記錄比較慢,但是可以提供極大的記錄空間,可以記錄相當(dāng)長時間的會話。只要內(nèi)存足夠大,就可以記錄足夠長的會話。

會話記錄模塊會把會話記錄循環(huán)寫入對于軟件分配給硬件的內(nèi)存,同時它提供兩個寄存器給軟件用于判斷是否有信息寫入。一個寄存器表示內(nèi)存中未處理信息的頭部,一個寄存器表示內(nèi)存中未處理信息的尾部。會話記錄模塊在寫入信息前,會檢查未處理信息的尾部是否和未處理信息頭部重合,如果是,說明內(nèi)存中信息已經(jīng)滿了,那么記錄模塊會停下等待軟件把信息讀走。

由于各個模塊之間會話大小不同,因此在存儲的數(shù)據(jù)結(jié)構(gòu)上,我們沒有采取固定長度的數(shù)據(jù)結(jié)構(gòu),而是設(shè)計了一種變長的數(shù)據(jù)結(jié)構(gòu)。它分為頭部和數(shù)據(jù)兩塊。頭部是一個固定結(jié)構(gòu),表面數(shù)據(jù)包的信息,而其后跟隨著一個變長的數(shù)據(jù)流。它包含了三部分信息:

(1)模塊ID:記錄了信息來自哪個模塊。

(2)數(shù)據(jù)長度:會話信息的大小。

(3)時間戳:會話發(fā)生的時間,可以用于仿真模型。

在實際應(yīng)用中,內(nèi)存控制器只有一個輸入,為了協(xié)調(diào)各個模塊的寫入順序,我們專門設(shè)計了一個記錄控制器,用來接收各個會話記錄模塊的輸出,并轉(zhuǎn)送到內(nèi)存控制器中,如圖4所示。

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

2.4 全局時鐘控制器

該模塊用來控制各個模塊的時鐘。一旦一個會話記錄的請求發(fā)生,那么全局時鐘控制器就會向各個模塊發(fā)出時鐘停止信號,中止各個模塊的運行,在會話記錄完成后,才會發(fā)出時鐘繼續(xù)的信號。

圖5就是全局時鐘控制器的模塊圖,這是整個架構(gòu)設(shè)計中最基本的一塊。

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

2.5 調(diào)試時鐘模塊

在全局時鐘被中止的時候,雖然其他模塊都停止工作了,但是會話記錄模塊、會話取樣模塊、內(nèi)存控制器等一系列模塊都還要繼續(xù)工作,因為系統(tǒng)為他們單獨設(shè)置了這么一個時鐘模塊,在全局時鐘被中止時,繼續(xù)為其他模塊提供時鐘中斷。

3 新調(diào)試系統(tǒng)的軟件部分

軟件部分的功能就是根據(jù)工程師的需求配置相應(yīng)的調(diào)試環(huán)境,并將硬件產(chǎn)生的信息存儲到相應(yīng)的文件中去。

雖然新調(diào)試系統(tǒng)解決了存儲時間較長的問題,但是為了提高調(diào)試效率,在存儲過程中,我們采用多Buffer輪替的方式來提高數(shù)據(jù)的讀取效率。

4 應(yīng)用的成果

在新一代GPU的結(jié)構(gòu)中加上了新的硬件調(diào)試架構(gòu),取得了初步的成果。

在這次設(shè)計開發(fā)中,在FPGA上通過大量的應(yīng)用,利用新的調(diào)試系統(tǒng)對L2Cache進行了研究,獲取了大量的數(shù)據(jù)。圖6是在不同的L1Cache設(shè)計下,L2 Cache和內(nèi)存存儲模塊(MXU)之間會話后的分析結(jié)果。從圖中,我們可以清晰地看到在實際中,L2 Cache是如何處理接收的請求,以及其中的4個bank各自的負(fù)載情況如何,使得硬件開發(fā)人員可以清晰地發(fā)現(xiàn)Cache設(shè)計中存在的問題,并為優(yōu)化Cache結(jié)構(gòu)提供了充分的數(shù)據(jù)基礎(chǔ)。

關(guān)于基于動態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)的設(shè)計和實現(xiàn)

另外,我們也在FPGA上重現(xiàn)了一些硬件隨機問題,并且獲取了相應(yīng)的數(shù)據(jù)。在把這些數(shù)據(jù)導(dǎo)入我們的RTL仿真環(huán)境后,成功地在模擬環(huán)境中重現(xiàn)了這些硬件問題?,F(xiàn)在通過調(diào)試系統(tǒng)獲取信息進行模擬重現(xiàn),解決了過去硬件開發(fā)人員調(diào)試硬件問題由于硬件封裝而只能通過間接信息分析來調(diào)試的問題。硬件開發(fā)人員可以根據(jù)波形來分析出問題的原因,極大地提高開發(fā)人員調(diào)試的速度。

5 結(jié)語

利用這種雙時鐘架構(gòu),我們能否更進一步開發(fā)單步調(diào)試系統(tǒng),使得硬件調(diào)試象軟件調(diào)試一樣,可以設(shè)斷點,停下后即時查看硬件狀態(tài)。如果能實現(xiàn),那將更進一步簡化硬件調(diào)試能力,提高硬件開發(fā)水平,這也是我們下一步的研究方向之一。

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

    關(guān)注

    31

    文章

    5294

    瀏覽量

    119816
  • gpu
    gpu
    +關(guān)注

    關(guān)注

    28

    文章

    4673

    瀏覽量

    128594
收藏 人收藏

    評論

    相關(guān)推薦

    輪胎動態(tài)試驗臺在線測控系統(tǒng)的研制

    和剔除奇異項算法有效地提高了系統(tǒng)的信噪比和測量精度取得了令人滿意的效果總之本文設(shè)計的輪胎動態(tài)試驗臺動態(tài)參量檢測系統(tǒng)具有檢測精度高可靠性好實時性好等優(yōu)點控制
    發(fā)表于 04-16 13:38

    基于labview的動態(tài)波形數(shù)據(jù)連續(xù)顯示

    基于labview的動態(tài)波形數(shù)據(jù)連續(xù)顯示這段代碼的目的是讓用戶從動態(tài)數(shù)據(jù)轉(zhuǎn)換到兩個2維數(shù)組再轉(zhuǎn)回動態(tài)
    發(fā)表于 12-13 16:14

    采集的動態(tài)數(shù)據(jù) 繪制成XY圖,如何實現(xiàn)連續(xù)?

    采集到的2路動態(tài)數(shù)據(jù)點1分別作為X,Y 繪制成XY圖,得到的圖示為一個 即時點,見附圖1、2。我想得到一個連續(xù)的曲線圖,見 圖3還請高手指點一二...
    發(fā)表于 06-13 11:25

    NVIDIA Tesla P40動態(tài)GPU內(nèi)存分配可能嗎?

    你好是由VM分配的P40修復(fù)的GPU內(nèi)存還是動態(tài)的? p40有24GB gpu ram所以讓我們采取以下的配置文件p40-1q1024 mb幀緩沖2個虛擬顯示器頭最大分辨率4096x2160max
    發(fā)表于 09-25 17:27

    從一個文本數(shù)據(jù)的文件夾中,怎樣實現(xiàn)數(shù)據(jù)連續(xù)提取

    比如 文本數(shù)據(jù)中有很多關(guān)于物體的信息,比如位置(經(jīng)度和緯度),移動速度,時間信息,而我只需要(進度和緯度)的數(shù)據(jù),這些經(jīng)度和緯度信息怎樣從文本文件夾中實現(xiàn)
    發(fā)表于 11-03 19:00

    如何利用FPGA實現(xiàn)高速連續(xù)數(shù)據(jù)采集系統(tǒng)設(shè)計?

    高速連續(xù)數(shù)據(jù)采集系統(tǒng)的背景及功能是什么?如何利用FPGA實現(xiàn)高速連續(xù)數(shù)據(jù)采集
    發(fā)表于 04-08 06:19

    如何對RK GPU進行調(diào)試

    如何對RK GPU進行調(diào)試呢?有哪些技巧呢?
    發(fā)表于 02-15 07:21

    動態(tài)模塊加載的調(diào)試經(jīng)驗分享

    問題一在調(diào)試基于 ZYNQ7000 的動態(tài)模塊加載功能時,發(fā)現(xiàn)動態(tài)模塊在加載到內(nèi)存中后,去執(zhí)行相關(guān)代碼時,大概率系統(tǒng)會跑飛掉,有時會執(zhí)行一些莫名其妙的指令,出現(xiàn) undefined
    發(fā)表于 03-22 14:53

    動態(tài)二進制翻譯系統(tǒng)調(diào)試器框架

    傳統(tǒng)的動態(tài)二進制翻譯系統(tǒng)缺少調(diào)試器支持或者調(diào)試功能有限,隨著開發(fā)規(guī)模的擴大,調(diào)試手段成為制約設(shè)計開發(fā)進度的瓶頸。該文提出一種針對
    發(fā)表于 04-01 09:39 ?27次下載

    基于FPGA的高速連續(xù)數(shù)據(jù)采集系統(tǒng)的設(shè)計

    本文提出了一種用于雷達回波信號采集的高速數(shù)據(jù)采集系統(tǒng)。該系統(tǒng)實現(xiàn)了對數(shù)十兆赫的回波信號進行連續(xù)的采樣和存儲。
    發(fā)表于 08-15 11:45 ?23次下載

    關(guān)于動態(tài)甲類功放電路的工作原理與調(diào)試要點

    動態(tài)甲類功放電路的制作試驗,多數(shù)電路動態(tài)偏置的線性不佳且無法精確控制偏置量,無奈另辟捷徑搞創(chuàng)新卻獲得了成功。本電路與傳統(tǒng)OCL電路區(qū)別較大,下面簡介其工作原理與調(diào)試要點。
    發(fā)表于 05-08 08:35 ?1.9w次閱讀

    連續(xù)時間系統(tǒng)時域分析的MATLAB實現(xiàn)

    掌握應(yīng)用 MATLAB 實現(xiàn)對線性時不變連續(xù)時間系統(tǒng)的時域分析,即熟悉應(yīng)用 MATLAB 實現(xiàn)微分方程的求解、連續(xù)時間信號卷積計算等。
    發(fā)表于 11-10 08:00 ?0次下載
    <b class='flag-5'>連續(xù)</b>時間<b class='flag-5'>系統(tǒng)</b>時域分析的MATLAB<b class='flag-5'>實現(xiàn)</b>

    連續(xù)數(shù)據(jù)網(wǎng)絡(luò)通信系統(tǒng)設(shè)計與實現(xiàn)

    連續(xù)數(shù)據(jù)網(wǎng)絡(luò)通信系統(tǒng)設(shè)計與實現(xiàn)
    發(fā)表于 06-24 16:08 ?22次下載

    單片機系統(tǒng)硬件的靜態(tài)調(diào)試動態(tài)調(diào)試綜述

    單片機系統(tǒng)硬件的靜態(tài)調(diào)試動態(tài)調(diào)試綜述
    發(fā)表于 07-18 10:59 ?2次下載

    避免FPGA、GPU和ASIC系統(tǒng)電源管理中的調(diào)試周期

    在設(shè)計FPGA、GPU或ASIC控制系統(tǒng)時,與數(shù)字設(shè)計相關(guān)的電源管理和模擬系統(tǒng)相關(guān)的設(shè)計挑戰(zhàn)數(shù)量相形見絀。然而,假設(shè)電源系統(tǒng)設(shè)計可以留給“以后”或與數(shù)字設(shè)計保持一致是有風(fēng)險的。即使是電
    的頭像 發(fā)表于 01-06 09:24 ?921次閱讀
    避免FPGA、<b class='flag-5'>GPU</b>和ASIC<b class='flag-5'>系統(tǒng)</b>電源管理中的<b class='flag-5'>調(diào)試</b>周期