亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Nual執(zhí)行語義微處理器中保持延時一致性的斷點(diǎn)實(shí)現(xiàn)方法

文檔序號:6601734閱讀:162來源:國知局

專利名稱::Nual執(zhí)行語義微處理器中保持延時一致性的斷點(diǎn)實(shí)現(xiàn)方法
技術(shù)領(lǐng)域
:本發(fā)明涉及微處理器中的精確斷點(diǎn)的實(shí)現(xiàn)方法,尤其是能夠保持非單位假定延遲NUAL(Non-UnitAssumedLatencies)執(zhí)行語義下精確的延時一致性的斷點(diǎn)實(shí)現(xiàn)方法。
背景技術(shù)
:斷點(diǎn)對于微處理器上的程序調(diào)試有著特別重要的意義。用戶在程序調(diào)試過程中,經(jīng)常需要進(jìn)入斷點(diǎn),觀察處理器或修改當(dāng)前處理器的狀態(tài)。斷點(diǎn)并不僅僅是簡單的停止處理器中流水線的運(yùn)行,還需要確保進(jìn)入斷點(diǎn)和重新運(yùn)行后的程序執(zhí)行與順序體系結(jié)構(gòu)(SequentialArchitecture)模型完全一致,保證用戶查看到的處理器狀態(tài)具有簡單而唯一的定義。傳統(tǒng)的微處理器采用單位假定延遲UAL(UnitAssumedLatencies)的執(zhí)行語義。在UAL語義處理器中,指令在重排序硬件結(jié)構(gòu)的控制下總是順序提交,對用戶隱藏了指令延時。在UAL語義下斷點(diǎn)可以通過調(diào)試邏輯用填入NOP指令(空操作)排空流水線的方法簡單實(shí)現(xiàn)調(diào)試邏輯位于微處理器芯片內(nèi)部,一端通過調(diào)試接口與外部調(diào)試主機(jī)連接,另一端與微處理器的流水線以及通用寄存器相連。在外部調(diào)試主機(jī)的控制下,調(diào)試邏輯可以控制流水線的運(yùn)行、停止及單節(jié)拍運(yùn)行,允許及禁止取指以及允許及禁止外部存儲器的讀寫操作;也可以對流水線站間寄存器和通用寄存器的數(shù)據(jù)進(jìn)行讀寫?;谶@樣的調(diào)試邏輯,UAL語義微處理器中實(shí)現(xiàn)斷點(diǎn)的具體過程為在外部調(diào)試主機(jī)的控制下,調(diào)試邏輯停止流水線的運(yùn)行并禁止取指。此時,流水線中執(zhí)行站前是尚未發(fā)射的指令,通過調(diào)試邏輯將這些指令寫為NOP指令取消其進(jìn)一步執(zhí)行;執(zhí)行站中是已經(jīng)發(fā)射但未提交的指令,通過調(diào)試邏輯控制流水線運(yùn)行多拍,直到這些指令完全提交。近年來,非單位假定延遲NUAL的執(zhí)行語義開始廣泛的應(yīng)用于各種微處理器中。NUAL語義處理器中,指令的真實(shí)延遲暴露給編譯器和用戶。NUAL語義處理器通過編譯器進(jìn)行指令調(diào)度來確保指令間的嚴(yán)格的時序關(guān)系,極大降低了微處理器中硬件動態(tài)調(diào)度的開銷。目前在NUAL語義處理器中仍然采用傳統(tǒng)的NOP指令排空流水線的方法實(shí)現(xiàn)斷點(diǎn),這一方法會在調(diào)試時導(dǎo)致斷點(diǎn)破壞預(yù)先編譯好的時序關(guān)系。以表1中的指令序列為例,在NUAL執(zhí)行語義下,0p2由于有3個節(jié)拍的延時,當(dāng)0p3執(zhí)行時R2尚未被0p2修改,其值應(yīng)當(dāng)是Opl的結(jié)果。如果斷點(diǎn)設(shè)在第3條指令并采用傳統(tǒng)的方法來實(shí)現(xiàn)斷點(diǎn),那么當(dāng)斷點(diǎn)觸發(fā)時,0p2將在流水線排空過程中執(zhí)行完畢并提交,而0p3由于尚未進(jìn)入執(zhí)行站將被取消。當(dāng)從斷點(diǎn)處重新運(yùn)行時,0p3取得的操作數(shù)R2將是0p2的結(jié)果,而這與預(yù)期的NUAL執(zhí)行語義不一致。表1<table>tableseeoriginaldocumentpage4</column></row><table>目前,尚沒有自動保持延時一致性的調(diào)試邏輯出現(xiàn),只能依靠人工分析斷點(diǎn)對執(zhí)行語義的影響,這不但極大的限制了斷點(diǎn)調(diào)試的能力,而且也增加了用戶的工作量。因此,需要一種在NUAL執(zhí)行語義下能夠保持延遲一致性的精確斷點(diǎn)實(shí)現(xiàn)方法。
發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問題是針對NUAL執(zhí)行語義下的嵌入式微處理器,提出一種能夠維持指令間的延時一致性的斷點(diǎn)實(shí)現(xiàn)方法。本發(fā)明的技術(shù)方案是步驟1,進(jìn)入斷點(diǎn)1.1,調(diào)試邏輯停止處理器的運(yùn)行,流水線中執(zhí)行站前的所有站都寫入NOP指令,調(diào)試邏輯禁止新的取指、禁止存儲器寫操作。1.2,保存當(dāng)前執(zhí)行站寄存器內(nèi)容和通用寄存器內(nèi)容。調(diào)試邏輯讀出流水線中所有執(zhí)行站的寄存器內(nèi)容并保存到調(diào)試主機(jī),調(diào)試邏輯讀出當(dāng)前所有通用寄存器的內(nèi)容并保存到調(diào)試主機(jī)。1.3,保存流水線排空過程中各拍的外部存儲器訪問內(nèi)容。調(diào)試邏輯控制流水線向前運(yùn)行1拍,并讀出第1拍外部存儲器讀端口寄存器內(nèi)容并保存到調(diào)試主機(jī)。重復(fù)1.3步多次,直到流水線中所有殘存指令執(zhí)行完畢。1.4,調(diào)試邏輯將1.2步中保存的通用寄存器內(nèi)容寫回到通用寄存器中。1.5,調(diào)試邏輯控制允許外部存儲器寫操作。步驟2,重新運(yùn)行2.1,調(diào)試邏輯允許新的取指。2.2,調(diào)試邏輯控制流水線運(yùn)行1拍,從指令計(jì)數(shù)器PC(ProgramCounter)指向的地址開始取指,取到第1條新指令。重復(fù)2.2步多次,直到流水線的執(zhí)行站前的每一站都填充了一條新取的指令。2.3,調(diào)試邏輯將1.2步保存的所有執(zhí)行站內(nèi)容寫入當(dāng)前的流水線寄存器中,將流水線的執(zhí)行站恢復(fù)為進(jìn)入斷點(diǎn)前的指令。2.4,調(diào)試邏輯控制流水線運(yùn)行1拍,從PC指向的地址取新的指令,將進(jìn)入斷點(diǎn)時對應(yīng)節(jié)拍的存儲器讀端口寄存器內(nèi)容寫入當(dāng)前寄存器中。重復(fù)2.4步多次,直到所有的恢復(fù)指令全部提交。2.5,調(diào)試邏輯控制流水線持續(xù)運(yùn)行。采用本發(fā)明可以得到以下技術(shù)效果1.本發(fā)明消除了進(jìn)入斷點(diǎn)時填充NOP指令,保持了斷點(diǎn)前后指令間相對延時一致性,保證了指令執(zhí)行與NUAL語義一致。2.進(jìn)入斷點(diǎn)時,在流水線排空前保存了通用寄存器文件的內(nèi)容,并在流水線排空后寫回到通用寄存器中,保證了斷點(diǎn)時通用寄存器內(nèi)容與NUAL語義一致。3.本發(fā)明在流水線排空過程中禁止流水線對存儲器的寫操作,保證了斷點(diǎn)前后存儲器內(nèi)容與NUAL語義一致。4.本發(fā)明保存了流水線排空過程中各拍存儲器讀端口寄存器的內(nèi)容,并在重新運(yùn)行時進(jìn)行了恢復(fù),保證了流水線對存儲器的讀操作與NUAL語義一致。圖1是微處理器中調(diào)試邏輯的示意2是
背景技術(shù)
中UAL進(jìn)入斷點(diǎn)時的流程3是本發(fā)明步驟1進(jìn)入斷點(diǎn)時的流程4是
背景技術(shù)
中重新運(yùn)行時的流程5是本發(fā)明步驟2重新運(yùn)行時的流程6是某微處理器的流水線說明圖7是某微處理器在
背景技術(shù)
下進(jìn)入斷點(diǎn)時各拍的流水線狀態(tài)圖8是某微處理器在本發(fā)明中進(jìn)入斷點(diǎn)時各拍的流水線狀態(tài)圖9是某微處理器在
背景技術(shù)
下重新運(yùn)行時各拍的流水線狀態(tài)圖10是某微處理器在本發(fā)明中重新運(yùn)行時各拍的流水線狀態(tài)具體實(shí)施例方式圖1是微處理器中調(diào)試邏輯的示意圖調(diào)試邏輯位于微處理器芯片內(nèi)部,通過調(diào)試接口與外部調(diào)試主機(jī)連接,在內(nèi)部和微處理器的流水線以及通用寄存器相連。在外部調(diào)試主機(jī)的控制下,調(diào)試邏輯可以控制流水線運(yùn)行/停止及單節(jié)拍運(yùn)行,允許/禁止取指,允許/禁止讀寫存儲器;也可以對流水線站間寄存器和通用寄存器的進(jìn)行讀寫。存儲器讀端口寄存器是流水線站間寄存器的一部分,該寄存器保存了存儲器讀數(shù)據(jù)的結(jié)果。圖2是
背景技術(shù)
所述在傳統(tǒng)的UAL語義下進(jìn)入斷點(diǎn)的流程圖。首先,調(diào)試邏輯停止處理器的運(yùn)行、禁止新的取指,流水線中執(zhí)行站前的所有站都寫入NOP指令。調(diào)試邏輯控制流水線逐拍向前運(yùn)行,直到流水線中所有殘存指令執(zhí)行完畢。圖3是本發(fā)明中進(jìn)入斷點(diǎn)時的流程圖,本發(fā)明中的NUAL語義下進(jìn)入斷點(diǎn)的流程圖如圖3所示。首先,調(diào)試邏輯停止處理器的運(yùn)行,流水線中執(zhí)行站前的所有站都寫入NOP指令,調(diào)試邏輯禁止新的取指、禁止存儲器寫操作。然后,調(diào)試邏輯保存當(dāng)前執(zhí)行站寄存器內(nèi)容和通用寄存器內(nèi)容。接下來,調(diào)試邏輯控制流水線逐拍運(yùn)行,并保存每一節(jié)拍的存儲器讀端口寄存器內(nèi)容,直到流水線中所有指令執(zhí)行完畢。最后,調(diào)試邏輯將流水線排空前的通用寄存器內(nèi)容寫回到通用寄存器中,調(diào)試邏輯控制允許存儲器寫操作。圖4是
背景技術(shù)
所述在UAL語義下重新運(yùn)行的流程圖。調(diào)試邏輯允許新的取指。調(diào)試邏輯控制流水線逐拍向前運(yùn)行,直到流水線中填滿了新取的指令。然后,調(diào)試邏輯控制流水線持續(xù)運(yùn)行。圖5是本發(fā)明中的NUAL語義下重新運(yùn)行的流程圖。首先,調(diào)試邏輯允許新的取指,調(diào)試邏輯控制流水線逐拍向前運(yùn)行,直到執(zhí)行站之前填滿了新取的指令。然后,調(diào)試邏輯將在進(jìn)入斷點(diǎn)時第二步中保存的所有執(zhí)行站內(nèi)容寫入當(dāng)前的流水線寄存器中,恢復(fù)執(zhí)行站內(nèi)容。之后,調(diào)試邏輯控制流水線逐拍向前運(yùn)行,在每一拍將進(jìn)入斷點(diǎn)時對應(yīng)節(jié)拍的存儲器讀端口寄存器內(nèi)容寫入當(dāng)前寄存器中,直到執(zhí)行站中恢復(fù)的指令執(zhí)行完畢。最后,調(diào)試邏輯控制流水線持續(xù)運(yùn)行。圖6是某微處理器的流水線劃分。下面以某處理器為例具體講述本發(fā)明的實(shí)現(xiàn),該處理器的流水線如圖6所示,共分為6站,其中Pl為取指站,P2為譯碼站,ElE4為指令執(zhí)行站,不同指令執(zhí)行站的長短不同。其中使用存儲器作為源操作數(shù)的僅有l(wèi)oad指令,在E4站存儲器數(shù)據(jù)到達(dá)存儲器讀端口寄存器。圖7是某微處理器在
背景技術(shù)
下進(jìn)入斷點(diǎn)時各拍的流水線狀態(tài)圖8是某微處理器在本發(fā)明中進(jìn)入斷點(diǎn)時各拍的流水線狀態(tài)對比圖7和圖8可以發(fā)現(xiàn),本發(fā)明和
背景技術(shù)
的異同如下在第0拍,
背景技術(shù)
無操作,而本發(fā)明中保存了執(zhí)行站的內(nèi)容,保存了通用寄存器的內(nèi)容,并且禁止了存儲器寫操作;在第13拍,
背景技術(shù)
無操作,而本發(fā)明中保存了存儲器讀端口寄存器的內(nèi)容;在第4拍,
背景技術(shù)
無操作,而本發(fā)明中將第0拍保存的通用寄存器內(nèi)容寫回,保證了通用寄存器內(nèi)容與NUAL語義一致;圖9是某微處理器在
背景技術(shù)
下重新運(yùn)行時各拍的流水線狀態(tài)圖10是某微處理器在本發(fā)明中重新運(yùn)行時各拍的流水線狀態(tài)對比圖9和圖10可以發(fā)現(xiàn),本發(fā)明和
背景技術(shù)
的異同如下在第0拍,本發(fā)明和
背景技術(shù)
在一致的;在第1拍,執(zhí)行站前的PI、P2填滿新取指令后,
背景技術(shù)
沒有其他操作,本發(fā)明中通過調(diào)試邏輯將執(zhí)行站ElE4恢復(fù)為圖8中進(jìn)入斷點(diǎn)時第0拍的指令(對應(yīng)圖10中的恢復(fù)指令1恢復(fù)指令4)。對比可以發(fā)現(xiàn),
背景技術(shù)
中在新取指令前有多個NOP指令,因而改變了斷點(diǎn)前指令和新取指令間的相對延時,而本發(fā)明中恢復(fù)指令和新取指令間沒有任何多余的NOP,因此保證了新取指令和恢復(fù)指令之間相對延時的一致性。在第24拍,
背景技術(shù)
沒有其他操作,而本發(fā)明中分別將存儲器讀端口寄存器恢復(fù)為進(jìn)入斷點(diǎn)時的內(nèi)容,這樣就保證了指令1指令4存儲器讀操作的結(jié)果和進(jìn)入斷點(diǎn)時是完全一致的。權(quán)利要求一種NUAL執(zhí)行語義微處理器中保持延時一致性的斷點(diǎn)實(shí)現(xiàn)方法,其特征在于包括以下步驟步驟1,進(jìn)入斷點(diǎn)1.1,調(diào)試邏輯停止處理器的運(yùn)行,流水線中執(zhí)行站前的所有站都寫入NOP指令,調(diào)試邏輯禁止新的取指、禁止存儲器寫操作;1.2,保存當(dāng)前執(zhí)行站寄存器內(nèi)容和通用寄存器內(nèi)容調(diào)試邏輯讀出流水線中所有執(zhí)行站的寄存器內(nèi)容并保存到調(diào)試主機(jī),調(diào)試邏輯讀出當(dāng)前所有通用寄存器的內(nèi)容并保存到調(diào)試主機(jī);1.3,保存流水線排空過程中各拍的外部存儲器訪間內(nèi)容調(diào)試邏輯控制流水線向前運(yùn)行1拍,并讀出第1拍外部存儲器讀端口寄存器內(nèi)容并保存到調(diào)試主機(jī);重復(fù)1.3步多次,直到流水線中所有殘存指令執(zhí)行完畢;1.4,調(diào)試邏輯將1.2步中保存的通用寄存器內(nèi)容寫回到通用寄存器中;1.5,調(diào)試邏輯控制允許外部存儲器寫操作;步驟2,重新運(yùn)行2.1,調(diào)試邏輯允許新的取指;2.2,調(diào)試邏輯控制流水線運(yùn)行1拍,從指令計(jì)數(shù)器PC指向的地址開始取指,取到第1條新指令;重復(fù)2.2步多次,直到流水線的執(zhí)行站前的每一站都填充了一條新取的指令;2.3,調(diào)試邏輯將1.2步保存的所有執(zhí)行站內(nèi)容寫入當(dāng)前的流水線寄存器中,將流水線的執(zhí)行站恢復(fù)為進(jìn)入斷點(diǎn)前的指令;2.4,調(diào)試邏輯控制流水線運(yùn)行1拍,從PC指向的地址取新的指令,將進(jìn)入斷點(diǎn)時對應(yīng)節(jié)拍的存儲器讀端口寄存器內(nèi)容寫入當(dāng)前寄存器中,重復(fù)2.4步多次,直到所有的恢復(fù)指令全部提交;2.5,調(diào)試邏輯控制流水線持續(xù)運(yùn)行。全文摘要本發(fā)明公開了一種NUAL執(zhí)行語義微處理器中保持延時一致性的斷點(diǎn)實(shí)現(xiàn)方法,目的是針對NUAL執(zhí)行語義下的嵌入式微處理器提出一種能夠維持指令間的延時一致性的斷點(diǎn)實(shí)現(xiàn)方法。技術(shù)方案是進(jìn)入斷點(diǎn)時,在流水線排空前保存通用寄存器文件的內(nèi)容,并在流水線排空后寫回到通用寄存器中,在流水線排空過程中禁止流水線對存儲器的寫操作并保存流水線排空過程中各拍存儲器讀端口寄存器的內(nèi)容,重新運(yùn)行時調(diào)試邏輯將流水線的執(zhí)行站恢復(fù)為進(jìn)入斷點(diǎn)前的指令并將進(jìn)入斷點(diǎn)時對應(yīng)節(jié)拍的存儲器讀端口寄存器內(nèi)容寫入當(dāng)前寄存器中。采用本發(fā)明可消除進(jìn)入斷點(diǎn)時填充NOP指令,保持?jǐn)帱c(diǎn)前后指令間相對延時一致性,保證指令執(zhí)行與NUAL語義一致。文檔編號G06F11/36GK101826052SQ20101016220公開日2010年9月8日申請日期2010年5月4日優(yōu)先權(quán)日2010年5月4日發(fā)明者萬江華,余再祥,劉宗林,劉必慰,劉祥遠(yuǎn),劉蓬俠,吳虎成,羅恒,胡春媚,許邦建,郭陽,陳書明,魯建壯申請人:中國人民解放軍國防科學(xué)技術(shù)大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1