《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于動(dòng)態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
基于動(dòng)態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)
2018年電子技術(shù)應(yīng)用第6期
陳 崢
上海兆芯集成電路有限公司 軟件部,上海201203
摘要: 隨著GPU架構(gòu)日益復(fù)雜,對(duì)硬件問(wèn)題的調(diào)試越來(lái)越成為硬件工程師面臨的一個(gè)挑戰(zhàn),。造成硬件問(wèn)題調(diào)試?yán)щy的一個(gè)主要原因是硬件工程師沒(méi)有辦法清楚知道硬件中問(wèn)題發(fā)生的過(guò)程,,只能通過(guò)一些簡(jiǎn)略信息對(duì)問(wèn)題發(fā)生的環(huán)境和原因進(jìn)行猜測(cè),。提出一種新的調(diào)試架構(gòu),,相比于傳統(tǒng)方式,,新的架構(gòu)能夠?yàn)橛布こ處熖峁┮欢芜B續(xù)時(shí)間內(nèi)連續(xù)的動(dòng)態(tài)數(shù)據(jù),,使得硬件工程師能夠?qū)σ欢螘r(shí)間內(nèi)硬件狀況的變化過(guò)程有一個(gè)全面了解,,甚至硬件開(kāi)發(fā)人員能夠把這些信息導(dǎo)入RTL仿真環(huán)境模擬重現(xiàn)硬件問(wèn)題,,極大地提高硬件工程師解決問(wèn)題的效率。
中圖分類號(hào): TP311
文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.174703
中文引用格式: 陳崢. 基于動(dòng)態(tài)連續(xù)數(shù)據(jù)的GPU調(diào)試系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2018,,44(6):8-10,14.
英文引用格式: Chen Zheng. A GPU debug system based on continuous dynamic data[J]. Application of Electronic Technique,,2018,,
44(6):8-10,14.
A GPU debug system based on continuous dynamic data
Chen Zheng
Software Department,,Shanghai Zhaoxin Semiconductor Co.,,Ltd. Shanghai 201203,China
Abstract: Nowadays, with the increasing complexity of digital circuits design, the post silicon debugging becomes a major challenging for engineers. For post silicon debugging, the lacking of observability is the main problem, the engineers can’t know exactly what happened inside the chip, even with the limited debug registers. Here we propose a method, which could provide much more observability compared to traditional methods. And with this method, the engineers could know what happened inside the chip exactly, and could even reproduce the problem in RTL simulation, in most of the circumstances.
Key words : GPU,;debug system,;dynamic data;clock interrupt

0 引言

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

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

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

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

1.1 DebugBus

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

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

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

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

    這種技術(shù)的缺陷在于它速度太慢,,因?yàn)樗且粋€(gè)串行的操作,,不能一次讀出全部數(shù)據(jù),導(dǎo)致工程師不能得到一個(gè)即時(shí)的數(shù)據(jù)[6],。

1.3 ARM CoreSightTM技術(shù)

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

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

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

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

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

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

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

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

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

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

2.1 會(huì)話取樣模塊

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

wdz1-t1.gif

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

wdz1-t2.gif

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

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

wdz1-t3.gif

2.3 會(huì)話記錄模塊

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

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

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

    (1)模塊ID:記錄了信息來(lái)自哪個(gè)模塊。

    (2)數(shù)據(jù)長(zhǎng)度:會(huì)話信息的大小,。

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

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

wdz1-t4.gif

2.4 全局時(shí)鐘控制器

    該模塊用來(lái)控制各個(gè)模塊的時(shí)鐘,。一旦一個(gè)會(huì)話記錄的請(qǐng)求發(fā)生,,那么全局時(shí)鐘控制器就會(huì)向各個(gè)模塊發(fā)出時(shí)鐘停止信號(hào),中止各個(gè)模塊的運(yùn)行,,在會(huì)話記錄完成后,,才會(huì)發(fā)出時(shí)鐘繼續(xù)的信號(hào)。

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

wdz1-t5.gif

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

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

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

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

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

4 應(yīng)用的成果

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

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

wdz1-t6.gif

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

5 結(jié)語(yǔ)

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

參考文獻(xiàn)

[1] SUNIL C.On chip logic analyzer debug bus:US,,US6822474.[P/OL].(2004-11-23)[2017-08-30].http://www.freep-atentsonline.com/6822474.pdf.

[2] JOHNSON T J.System and method for using a debug bus as a capture buffer:US,,US 20040193790 A1.[P/OL].2004-09-30.http://www.freepatentsonline.com/20040193790.pdf.

[3] AERTS J,MARINISSEN E J.Scan chain design for test time reduction in core-based ICs[C].International Test Conference,,1998:448-457.

[4] KO H F,,NICOLICI N.Functional scan chain design at RTL for skewed-load delay fault testing[C].Asian Test Symposium,2004:454-459.

[5] GHOSH D,,BHUNIA S,,ROY K.Multiple scan chain design technique for power reduction during test application in BIST[C].IEEE International Symposium on Defect & Fault Tolerance in VLSI Systems,2003:191.

[6] HSU L C,,CHEN H M.On optimizing scan testing power and routing cost in scan chain design[C].International Symposium on Quality Electronic Design.2006:451-456.

[7] ARM Information Center ARM CoreSight Architecture Speci-fication[EB/OL].[2013-09-26].http://infocenter.arm.com/help/topic/com.arm.doc.ihi0029d/IHI0029D_coresight_archi-tecture_spec_v2_0.pdf.

[8] MARTIN T.Debugging with CoreSight.The Designer's Guide to the Cortex-M Processor Family[M].Newnes,,2016:217-254.

[9] 韓格欣,許翔,,劉嘯宇,,等.ARM CoreSight調(diào)試與追蹤體系在Cortex M3內(nèi)核中的實(shí)現(xiàn)[J].物聯(lián)網(wǎng)技術(shù),2014(7):22-24.



作者信息:

陳  崢

(上海兆芯集成電路有限公司 軟件部,,上海201203)

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。