中國電子科技集團公司第38研究所 劉小明 許 聰
隨著集成電路設(shè)計和制造工藝的發(fā)展,數(shù)字信號處理器(Digital Signal Processor)的集成度及性能越來越高,功能日趨復(fù)雜。為便于后期DSP應(yīng)用軟件的開發(fā),不同的開發(fā)調(diào)試手段應(yīng)運而生。JTAG調(diào)試作為最為基礎(chǔ)的調(diào)試開發(fā)手段現(xiàn)已成為嵌入式系統(tǒng)默認(rèn)集成的開發(fā)調(diào)試方式。然而不同體系架構(gòu)DSP處理器在實現(xiàn)JTAG調(diào)試時,需要根據(jù)實際情況加以適配改進(jìn)。
本文提出了一種某國產(chǎn)DSP處理器片上調(diào)試邏輯實現(xiàn)的改進(jìn)方案,目的之一是降低調(diào)試邏輯控制指令流水啟停信號的負(fù)載,改善芯片整體時序,其二是在不等長指令流水處理器架構(gòu)中,避免調(diào)試開發(fā)時,用戶觀察到后發(fā)指令先生效的現(xiàn)象,產(chǎn)生不必要的誤會。
處理器的JTAG片內(nèi)調(diào)試邏輯通常會支持?jǐn)帱c、觀察點、單步等調(diào)試操作,其核心功能是在處理器指令流水滿足一定條件的情況下,調(diào)試邏輯控制處理器由運行狀態(tài)轉(zhuǎn)入停止?fàn)顟B(tài),或者命令內(nèi)核從停止?fàn)顟B(tài)轉(zhuǎn)入運行狀態(tài)[1]。為實現(xiàn)上述功能,需要JTAG調(diào)試邏輯提供一個供全芯片使用的全局信號dsp_en(‘0’表示處理器核心進(jìn)入停止?fàn)顟B(tài),‘1’表示處理器核心進(jìn)入運行狀態(tài)),控制處理器核心所有流水線寄存器的更新。由于處理器核心的啟停狀態(tài)切換需要在一個時鐘周期內(nèi)完成,因此dsp_en信號需要與內(nèi)核工作時鐘同頻,而不能像調(diào)試邏輯中的其他非關(guān)鍵信號可以使用multicycle技術(shù)改善時序,所以該信號極有可能成為全芯片物理實現(xiàn)的一個時序關(guān)鍵信號。如果能夠通過某種方式減少dsp_en控制的寄存器數(shù)目,即減少其負(fù)載,將可以有效降低dsp_en的時序?qū)崿F(xiàn)難度。
圖1 某國產(chǎn)DSP指令流水示意圖
圖2 某國產(chǎn)DSP斷點生效時指令流水示意圖
隨著DSP性能的提升以及功能的不斷豐富,DSP處理器核心通常會采用較深的指令流水,指令的執(zhí)行也會采用多級流水形式[2]。出于處理器執(zhí)行效率的考慮,處理器中不同指令的執(zhí)行流水可能不等長,也就是不同類型的指令在不同的指令流水級生效。下圖為某國產(chǎn)DSP的指令流水示意圖,其中AC、EX、WB為指令生效的主要3個流水級,其中地址輔助寄存更新、內(nèi)核控制寄存器更新、核外訪存等指令在AC級生效;ACC/MACC/SACC等特殊寄存器的更新在EX級生效;通用寄存器更新在WB級生效(見圖1)。
該DSP處理器斷點、觀察點、單步生效時,內(nèi)核會轉(zhuǎn)入停止?fàn)顟B(tài),所有流水線寄存器停止更新。軟件開發(fā)界面光標(biāo)所指示的指令會停止在DC2級流水線寄存器上。由于指令的生效時機不一樣,會觀察到后發(fā)指令先生效的狀況,雖然經(jīng)過時序規(guī)劃此種設(shè)計不存在功能問題,但會引發(fā)用戶的困惑。示例如圖2,斷點生效后后發(fā)射的特殊寄存器GCSR賦值指令會先于通用寄存器R7更新指令生效。
鑒于上述問題,考慮在指令流水控制器與調(diào)試邏輯之間增加握手機制,已斷點實現(xiàn)為例,當(dāng)斷點等觸發(fā)時,不立即將DSP內(nèi)核轉(zhuǎn)入停止?fàn)顟B(tài),而是在AC級生成一個普通的指令流水阻塞信號,將斷點所處指令及其后續(xù)指令阻塞進(jìn)入AC級,待ACEXWB三級流水上的指令全部排空,即全部執(zhí)行完畢后,指令流水控制器通知調(diào)試邏輯,調(diào)試邏輯再真正將DSP核心轉(zhuǎn)入停止?fàn)顟B(tài)(dsp_en清0)。在排空指令流水的過程中,EX級若有分支指令生效,可以取消由于斷點引發(fā)的阻塞, flush整個指令流水,即斷點未生效。
圖3 某國產(chǎn)DSP斷點觸發(fā)改進(jìn)方案
上述措施執(zhí)行后可以產(chǎn)生如下效果:
后三級指令流水(AC/EX/WB)寄存器不再受dsp_en控制(后三級的寄存器數(shù)目可以達(dá)到整個DSP內(nèi)核寄存器數(shù)目的三分之一),降低dsp_en信號的負(fù)載,同時降低了布線難度。
斷點真正生效時,先于斷點所標(biāo)記指令之前發(fā)射的所有指令全部生效,避免用戶觀察到后發(fā)指令先生效的情況出現(xiàn)。
后續(xù)伴隨執(zhí)行流水更長的指令出現(xiàn)時,此實現(xiàn)方案同樣適用。
上述斷點的處理方法,同樣適用于觀察點/單步操作,即JTAG調(diào)試常用的調(diào)試操作可以統(tǒng)一。
為檢驗改進(jìn)方案的正確性,基于cadence公司的PalladiumXP硬件加速平臺構(gòu)建軟硬件協(xié)同仿真平臺[2]。
圖4 PXP仿真驗證平臺
基于仿真驗證平臺,可以隨機產(chǎn)生測試激勵,隨機設(shè)置斷點、觀察點,連續(xù)執(zhí)行單步操作,經(jīng)過測試證明該實現(xiàn)方案切實可行。
圖5 仿真測試結(jié)果
本文介紹的調(diào)試邏輯改進(jìn)方案是針對某國產(chǎn)DSP超長指令字的并行處理結(jié)構(gòu)設(shè)計,可以有效降低調(diào)試邏輯全局控制信號的物理設(shè)計難度,同時改進(jìn)用戶調(diào)試開發(fā)體驗,現(xiàn)已在某國產(chǎn)DSP中得到實際使用,效果良好,未來會在系列DSP產(chǎn)品中得到更進(jìn)一步的應(yīng)用。