中國電子科技集團公司第38研究所 劉小明 許 聰
隨著集成電路設計和制造工藝的發展,數字信號處理器(Digital Signal Processor)的集成度及性能越來越高,功能日趨復雜。為便于后期DSP應用軟件的開發,不同的開發調試手段應運而生。JTAG調試作為最為基礎的調試開發手段現已成為嵌入式系統默認集成的開發調試方式。然而不同體系架構DSP處理器在實現JTAG調試時,需要根據實際情況加以適配改進。
本文提出了一種某國產DSP處理器片上調試邏輯實現的改進方案,目的之一是降低調試邏輯控制指令流水啟停信號的負載,改善芯片整體時序,其二是在不等長指令流水處理器架構中,避免調試開發時,用戶觀察到后發指令先生效的現象,產生不必要的誤會。
處理器的JTAG片內調試邏輯通常會支持斷點、觀察點、單步等調試操作,其核心功能是在處理器指令流水滿足一定條件的情況下,調試邏輯控制處理器由運行狀態轉入停止狀態,或者命令內核從停止狀態轉入運行狀態[1]。為實現上述功能,需要JTAG調試邏輯提供一個供全芯片使用的全局信號dsp_en(‘0’表示處理器核心進入停止狀態,‘1’表示處理器核心進入運行狀態),控制處理器核心所有流水線寄存器的更新。由于處理器核心的啟停狀態切換需要在一個時鐘周期內完成,因此dsp_en信號需要與內核工作時鐘同頻,而不能像調試邏輯中的其他非關鍵信號可以使用multicycle技術改善時序,所以該信號極有可能成為全芯片物理實現的一個時序關鍵信號。如果能夠通過某種方式減少dsp_en控制的寄存器數目,即減少其負載,將可以有效降低dsp_en的時序實現難度。

圖1 某國產DSP指令流水示意圖

圖2 某國產DSP斷點生效時指令流水示意圖
隨著DSP性能的提升以及功能的不斷豐富,DSP處理器核心通常會采用較深的指令流水,指令的執行也會采用多級流水形式[2]。出于處理器執行效率的考慮,處理器中不同指令的執行流水可能不等長,也就是不同類型的指令在不同的指令流水級生效。下圖為某國產DSP的指令流水示意圖,其中AC、EX、WB為指令生效的主要3個流水級,其中地址輔助寄存更新、內核控制寄存器更新、核外訪存等指令在AC級生效;ACC/MACC/SACC等特殊寄存器的更新在EX級生效;通用寄存器更新在WB級生效(見圖1)。
該DSP處理器斷點、觀察點、單步生效時,內核會轉入停止狀態,所有流水線寄存器停止更新。軟件開發界面光標所指示的指令會停止在DC2級流水線寄存器上。由于指令的生效時機不一樣,會觀察到后發指令先生效的狀況,雖然經過時序規劃此種設計不存在功能問題,但會引發用戶的困惑。示例如圖2,斷點生效后后發射的特殊寄存器GCSR賦值指令會先于通用寄存器R7更新指令生效。
鑒于上述問題,考慮在指令流水控制器與調試邏輯之間增加握手機制,已斷點實現為例,當斷點等觸發時,不立即將DSP內核轉入停止狀態,而是在AC級生成一個普通的指令流水阻塞信號,將斷點所處指令及其后續指令阻塞進入AC級,待ACEXWB三級流水上的指令全部排空,即全部執行完畢后,指令流水控制器通知調試邏輯,調試邏輯再真正將DSP核心轉入停止狀態(dsp_en清0)。在排空指令流水的過程中,EX級若有分支指令生效,可以取消由于斷點引發的阻塞, flush整個指令流水,即斷點未生效。

圖3 某國產DSP斷點觸發改進方案
上述措施執行后可以產生如下效果:
后三級指令流水(AC/EX/WB)寄存器不再受dsp_en控制(后三級的寄存器數目可以達到整個DSP內核寄存器數目的三分之一),降低dsp_en信號的負載,同時降低了布線難度。
斷點真正生效時,先于斷點所標記指令之前發射的所有指令全部生效,避免用戶觀察到后發指令先生效的情況出現。
后續伴隨執行流水更長的指令出現時,此實現方案同樣適用。
上述斷點的處理方法,同樣適用于觀察點/單步操作,即JTAG調試常用的調試操作可以統一。
為檢驗改進方案的正確性,基于cadence公司的PalladiumXP硬件加速平臺構建軟硬件協同仿真平臺[2]。

圖4 PXP仿真驗證平臺
基于仿真驗證平臺,可以隨機產生測試激勵,隨機設置斷點、觀察點,連續執行單步操作,經過測試證明該實現方案切實可行。

圖5 仿真測試結果
本文介紹的調試邏輯改進方案是針對某國產DSP超長指令字的并行處理結構設計,可以有效降低調試邏輯全局控制信號的物理設計難度,同時改進用戶調試開發體驗,現已在某國產DSP中得到實際使用,效果良好,未來會在系列DSP產品中得到更進一步的應用。