潘 奇 王慧麗 雷元武 吳虎成
(國防科技大學計算機學院 長沙 410073)
集成電路制造工藝和微體系結構的迅速發展,對數字信號處理器(DSP)的處理能力及效率要求越來越高。單核DSP已經遠遠不能滿足市場需求,多核DSP的發展成為主流。然而,隨著DSP的單核數量的增加,DSP的仿真調試效率卻面臨著巨大的挑戰。
對于數字信號處理系統,其大部分功能需要通過仿真調試技術來進行功能驗證和調試開發[1]。仿真調試技術基于JTAG(Joint Test Action Group,聯合測試行動小組)標準協議[2~3],采用串行結構,而眾核DSP芯片因為核數量眾多,串聯調試鏈路過長,導致調試效率很低。因此如何加速眾核DSP芯片的仿真調試,也成為芯片設計者關注的重點之一。
文章基于我國自主設計研制的銀河飛騰[4]高性能數字信號處理器X-DSP,在經典菊花鏈仿真調試技術的基礎上,采用分組共享的優化策略,實現了一種總-分結構的仿真調試設計,極大地提高了眾核DSP仿真調試效率,縮短了芯片流片前的研發時間,高效地支持了DSP用戶的在線調試及應用需求。
基于經典菊花鏈的多核調試設計[5~6],如圖1所示。DSPCorex為多核處理器中的單核DSP,ETx為不同單核DSP中的仿真調試部件。在TAP(Test Access Port)控制器的作用下,指令通過TDI端口,串行掃描進入DSP內部,并將需要進行調試的指令移位至對應單核ET部件的指令/數據寄存器(IR/DR)中。ET對該IR/DR中的調試指令進行解碼,向DSP單核發送調試請求,并將調試返回數據/狀態經由TDO輸出到DSP外部。

圖1 基于經典菊花鏈的仿真調試結構
經典菊花鏈的串聯設計方式,廣泛應用于嵌入式芯片的調試設計中[7~9]。但是,當 DSP 單核數量增加時,處理器的整條調試鏈路會變得很長。假設DSP中單核數量多達N個,而一個IR/DR的位寬為IR_Len,則采用菊花鏈結構時,其調試鏈路長度為N*IR_Len。在圖1中,如果對DSP CoreN進行調試,則至少需要經過N*IR_Len個測試時鐘周期(TCK),調試指令才能由芯片TDI端口到達DSP CoreN。對于N達到一定規模的眾核DSP處理器,芯片的調試效率會發生顯著的下降[10~13]。因此,如何設計更為高效的仿真調試結構,是眾核DSP處理器仿真調試的重點研究內容。
在眾核處理器中,經典菊花鏈的調試效率低下,一個重要的原因在于:調試指令只能在軟件的控制下,以串聯的方式,逐位進入到需要進行調試的單核中,即使很多單核并不是調試的對象,也不可避免地串聯進了掃描鏈路中。因此,在調試指令到達調試目標單核的過程中,減少不必要的單核進入掃描鏈路,是提高調試效率所面臨的最主要的難題。而基于分組共享的優化策略,則比較高效地解決了這個問題。
圖2描述了基于分組共享策略的優化方法。如圖2中所示,每兩個DSP單核為一組,共享一個帶有ID標識的IR/DR資源;JTAG調試鏈路不再進入到單核內部,而是以分組為單位,依次串聯每個分組共享的IR/DR。在進行調試時,軟件將帶有ID標識的調試指令發送到對應的分組中,每個分組再根據ID標識,將IR/DR發送到對應的DSP單核中。基于分組共享策略的優化方法,其分組方式可以根據實際處理的結構和大小進行調整。

圖2 基于分組共享策略的優化方法
X-DSP眾核處理器中,包含了M個DSP簇(DSP Cluster),每個簇包含Z個DSP單核(Core)。結合X-DSP的體系結構及單核數目,對圖2中的分組方式進行了相應的調整,設計了一種基于分組共享策略的總-分JTAG仿真調試結構,如圖3所示。在每個簇中設計一個JTAG指令譯碼控制(JTAG-Controller,JTAGC),M 個 DSP Cluster在處理器頂層以菊花鏈形式串聯,接收基于JTAG協議的調試命令;每個簇內的Z個單核共享本簇內的一個JTAG控制器,JTAGC在對調試指令攜帶的每個Core的ID標識進行譯碼后,通過AXI協議將指令發送到對應的Core中。基于分組共享策略的總-分調試結構,其最長的調試鏈路為M*(ID+IR_Len),大幅減小了最長調試鏈路,有效地提高了調試效率。
X-DSP的調試通路進行優化設計后,仿真/調試部件包括兩個主要部分:位于DSP簇內的JTAG控制器與DSP單核內部的仿真調試部件(ET)。JTAG控制器負責TAP控制器以及對Core ID的譯碼,同時采用AXI協議與單核進行通信;單核內部ET則負責對IR/DR進行譯碼,并執行相應的調試工作,實現對X-DSP的資源訪問、流水線控制,以及事件統計的調試功能。

圖3 X-DSP眾核處理器的總-分仿真調試結構
X-DSP眾核處理器中,DSP單核內部調試通路,如圖4所示。單核內ET采用AXI協議,將JTAGC發送到單核的IR/DR進行譯碼后,按照調試通路的類型,實現以下三種仿真調試功能[14~15]:1)配置空間的讀寫訪問(包括核內私有地址空間以及核外共享地址空間),通過配置總線通路進行訪問;2)數據空間的讀寫訪問(包括核內私有地址空間AM/SM以及核外共享數據空間),通過DMA通路進行訪問;3)核內的映射(mem-map)地址空間(全部映射到ET的配置空間地址內),此部分包括核內的非全局編址的寄存器資源,流水線資源,ET的寄存器等,由ET直接進行訪問。

圖4 單核內的調試通路
高效的仿真調試設計,需要軟件和硬件的協同工作[16]。X-DSP在減少JTAG串行鏈路長度提高調試效率的同時,在軟件層面也通過靈活的驅動調用方式對存儲空間的大批量讀操作進行了優化。
優化前的仿真調試部件,訪問一次存儲空間的64bit數據,需要軟件發送一個讀指令IR_Read和一個捕獲數據指令IR_Capture。IR_Read負責將所需數據讀取到ET內部IR寄存器中進行保存(64位寬),IR_Capture則負責對ET的IR寄存器的數據進行捕獲。如果用戶需要訪問一個512bit的數據時,則需要分別發送8次IR_Read和IR_Capture,共16條指令。X-DSP經過硬件優化后的仿真/調試部件中,ET訪問存儲體寬度提高為512位,JTAGC接收到一個IR_Read指令后,即可將512位數據讀取到ET中進行保存;再通過8個連續的Capture指令,將512位數據以64bit為單位分8拍返回。此時,如果用戶需要訪問一個512bit的數據時,則只需要由軟件發送1次IR_Read和8次IR_Capture,共9條指令。軟硬件的聯合優化方式,極大地提高了對內存資源訪問時的效率。
X-DSP眾核處理器的仿真/調試部件采用兩種驗證手段:一種是在NC_verilog環境下進行的模擬驗證;另一種是基于FPGA的原型驗證。對仿真調試/部件的驗證需要匯編程序測試激勵作為背景程序,此外還需要手工編寫仿真/調試指令和數據。通過分析設計文檔提煉出相應的功能驗證點有如下:1)ET在進行資源訪問時,與DMA以及總線之間的通信機制驗證。2)流水線基本操作的驗證:運行、暫停、單步。3)軟件斷點的設置、恢復以及取消的驗證,硬件斷點的驗證。4)性能統計:對關鍵事件統計次數的驗證。
抽取部分驗證結果如圖5~6所示。

圖5 ET通過DMA的讀操作
圖5為ET通過DMA通道對向量存儲器AM地址為0X4_0000_0000進行讀寫讀操作。如圖所示,當ET接收到IR寄存器中的112位命令(0X3FF4_00000001_00000004_00000000)后向DMA發送請求信號ET_DMA_Rd以及要讀向量寄存器的地址;DMA接收到ET的訪問請求后,在不受到其他條件的干擾下,會將ET_DMA_Rd(DMA給ET讀數據返回有效信號)信號拉高的同時將訪問該地址的內容通過ET_DMA_Rd信號以512位數據返回。
圖6為ET通過設置硬件斷點控制流水線的情況,硬件斷點的設置不會改變目標指令,但是會消耗掉很多硬件資源,因此對硬件斷點的存儲是有限制的,X-DSP為ET部件分配了8個32的硬件斷點地址寄存器(HBPAR0~7),以及8個1位的硬件斷點使能寄存器(HBPER0~7)。如圖所示,設置硬件斷點為0X163,將執行指令地址與用戶設置的地址進行比較,發現一致則觸發硬件斷點。斷點指令停在E1站即BR_PCE1信號,硬件斷點標志信號HBPC_HWBP拉高,使流水線拉高即ET_Stall信號拉高,進入調試狀態。

圖6 ET的硬件斷點操作
對本文提出的設計進行綜合,面積和時序報告如表1。

表1 面積和時序報告
指令寄存器IR(78bit)是與JTAG標準兼容的指令寄存器并且連入TDI和TDO之間。IR本質是基于移位寄存器的設計,在有效狀態下對TDI的串行輸入數據進行移位處理并進行相應操作。IR即可以存儲指令,也可以產生指令通路的JTAG輸出信號TDO。優化前X-DSP的N個單核采取依次串聯的方式構成調試通路,所以調試鏈路長度為78*N。經過優化后JTAG調試通路結構如3.1小節,調試通路有M個JTAGC控制,每個DSP簇中包含Z個DSP單核,IR寬度擴至78+Z位,為了提高X-DSP芯片的高性能預留了8個單核用于擴展,即IR寬度調至86+Z位。因此優化后的調試鏈路長度為(86+Z)*M,X-DSP的JTAG串行鏈路長度降低了1-(86+Z)*M/(78*N)。3.4小節對存儲體的進行大批量讀操作時,優化前需要8個IR_Read和8個IR_Capture。通過軟硬件聯合優化后,需要1個IR_Read和8個IR_Capture。所以進行大批量讀操所需時間降低了(112+8*112)/(8*(112+112))。綜上所述,在這種新型的JTAG調試設計中,假設M為4,Z為24,相比未采用新的JTAG調試鏈路時,JTAG串行鏈路長度整體降低了94%,進行大批量讀操作所需時間降低了56%。
本文首先對經典菊花鏈仿真調試結構在眾核處理器中的工作原理進行了介紹,分析這種結構隨著單核數目增加,而出現的調試鏈路過長,調試效率下降的原因,提出了基于分組共享策略的優化方法,并結合對X-DSP眾核處理器的體系結構和單核數目,提出了基于分組共享策略的總-分調試結構,大大提高了X-DSP的調試性能。最后通過軟件驅動與硬件設計相結合的軟硬件聯合優化方法,大幅度提升了批量讀內存操作的效率。在硬件邏輯設計完成后,對X-DSP中仿真調試部件進行了功能驗證,以及后期的綜合優化。最終驗證結果與設計規范的期望一致。