国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于監(jiān)視調(diào)試事件的系統(tǒng)和方法

      文檔序號(hào):6478533閱讀:251來(lái)源:國(guó)知局
      專利名稱:用于監(jiān)視調(diào)試事件的系統(tǒng)和方法
      技術(shù)領(lǐng)域
      本公開內(nèi)容一般地涉及數(shù)據(jù)處理系統(tǒng),并且更特別地涉及用于監(jiān)視調(diào)試事件的系統(tǒng)和方法。
      背景技術(shù)
      數(shù)據(jù)值斷點(diǎn)涉及比較數(shù)據(jù)存取地址,以及比較與數(shù)據(jù)存取地址關(guān)聯(lián)的數(shù)據(jù),以便 確定是否應(yīng)當(dāng)產(chǎn)生斷點(diǎn)異常。但是,當(dāng)在典型的流水線處理器中時(shí),數(shù)據(jù)可能直到存取地址 可用之后的多個(gè)周期后才可用。因此,斷點(diǎn)確切在指令流中的何處發(fā)生是不確定的,因?yàn)殡S 數(shù)據(jù)存取之后的一條或更多條指令可以在存取數(shù)據(jù)還不可用的間隔內(nèi)執(zhí)行。在現(xiàn)今可用的 一種數(shù)據(jù)處理系統(tǒng)中,附加的停車(stall)被添加到固有的執(zhí)行中以便防止任何指令在存 取數(shù)據(jù)仍不可用的間隔內(nèi)執(zhí)行。但是,這需要額外的開銷并且干擾了正常的執(zhí)行時(shí)序,這可 能是調(diào)試過(guò)程中所不希望的。


      本發(fā)明通過(guò)舉例進(jìn)行說(shuō)明但并不限定于附圖,在附圖中相似的標(biāo)記指示相似的元 素。出于簡(jiǎn)單清晰的目的對(duì)附圖中的元素進(jìn)行了說(shuō)明而并不一定按比例描繪。圖1是根據(jù)本發(fā)明的一種實(shí)施方案的數(shù)據(jù)處理系統(tǒng)的框圖。圖2是根據(jù)本發(fā)明的一種實(shí)施方案與圖1的數(shù)據(jù)處理系統(tǒng)關(guān)聯(lián)的處理器的框圖。圖3是說(shuō)明與圖1的數(shù)據(jù)處理系統(tǒng)關(guān)聯(lián)的示例性調(diào)試寄存器的圖表。圖4是根據(jù)本發(fā)明的一種實(shí)施方案與圖3的調(diào)試寄存器關(guān)聯(lián)的調(diào)試控制寄存器的 圖表。圖5和圖6以表格形式示出了圖4中根據(jù)本發(fā)明的一種實(shí)施方案的調(diào)試控制寄存 器的一部分的功能。圖7是根據(jù)本發(fā)明的一種實(shí)施方案與圖3的調(diào)試寄存器關(guān)聯(lián)的調(diào)試狀態(tài)寄存器的 圖表。圖8以表格形式示出了圖7中根據(jù)本發(fā)明的一種實(shí)施方案的調(diào)試狀態(tài)寄存器的一 部分的功能。圖9-11示出了對(duì)圖2的處理器的操作的不同實(shí)例進(jìn)行說(shuō)明的時(shí)序圖。圖12-16以表格形式示出了多種示例性數(shù)據(jù)地址比較(DAC)事件及其相應(yīng)的結(jié)果。圖17是根據(jù)本發(fā)明的一種實(shí)施方案與圖3調(diào)試寄存器關(guān)聯(lián)的調(diào)試狀態(tài)寄存器的 圖表。圖18示出了對(duì)圖2的處理器的操作實(shí)例進(jìn)行說(shuō)明的時(shí)序圖。
      具體實(shí)施例方式在調(diào)試(debug)代碼時(shí),通常難以了解實(shí)際上是哪條指令導(dǎo)致了所獲得的調(diào)試異常(debug exception) 0例如,在數(shù)據(jù)值斷點(diǎn)的情形中,執(zhí)行與所存取數(shù)據(jù)之間的數(shù)據(jù)存取 地址比較及數(shù)據(jù)值比較,并且比較結(jié)果可能觸發(fā)中斷正常的指令流執(zhí)行的調(diào)試異常??梢?在存取初始化之后多個(gè)周期返回?cái)?shù)據(jù)進(jìn)行存取,這通過(guò)提供數(shù)據(jù)存取請(qǐng)求及存取地址來(lái)觸 發(fā)。在關(guān)于所請(qǐng)求存取的數(shù)據(jù)地址比較與關(guān)于所接收數(shù)據(jù)的數(shù)據(jù)值比較之間的滯后可能使 得要確定是指令流中的哪條指令實(shí)際上導(dǎo)致了指令流中斷尤為困難。在一種實(shí)施方案中, 偏移值可以被用來(lái)指出在引起數(shù)據(jù)值斷點(diǎn)的指令與指令流中實(shí)際發(fā)生斷點(diǎn)異常的點(diǎn)之間 執(zhí)行了多少條指令。通過(guò)這種方式,可以獲得改進(jìn)的調(diào)試功能。如在此所使用的,術(shù)語(yǔ)“總線”被用來(lái)指示可以用來(lái)傳輸一種或多種不同類型的信 息(例如數(shù)據(jù)、地址、控制、或狀態(tài))的多種信號(hào)或?qū)w。在此所討論的導(dǎo)體可以作為單導(dǎo) 體、多導(dǎo)體、單向?qū)w、或雙向?qū)w來(lái)說(shuō)明或描述。但是,不同的實(shí)施方案可以改變導(dǎo)體的實(shí) 現(xiàn)。例如,可以使用分離的單向?qū)w而不是雙向?qū)w,反之亦然。此外,多導(dǎo)體可以用串行 地或以時(shí)分復(fù)用的方式傳輸多種信號(hào)的單導(dǎo)體來(lái)代替。類似地,輸送多種信號(hào)的單導(dǎo)體可 以被分開成輸送這些信號(hào)的子集的不同導(dǎo)體。因此,存在用于傳輸信號(hào)的多種選擇。在此術(shù)語(yǔ)“確證(assert) ”和“置位(set) ”或“否定(negate),,(或“取消確證 (deassert)”或“清除(clear)”)在涉及使信號(hào)、狀態(tài)位、或相似裝置分別呈現(xiàn)出其邏輯真 或邏輯假的狀態(tài)時(shí)被使用。如果邏輯真的狀態(tài)是邏輯電平1,則邏輯假的狀態(tài)是邏輯電平 0。而如果邏輯真的狀態(tài)是邏輯電平0,則邏輯假的狀態(tài)是邏輯電平1。在此所描述的每種信號(hào)可以被指定為正邏輯或負(fù)邏輯,其中負(fù)邏輯能夠由信號(hào)名 稱上方的橫線或名稱后的星號(hào)(* )來(lái)指示。在負(fù)邏輯信號(hào)的情形中,信號(hào)是低有效的,其 中邏輯真的狀態(tài)對(duì)應(yīng)于邏輯電平0。在正邏輯信號(hào)的情形中,信號(hào)是高有效的,其中邏輯真 的狀態(tài)對(duì)應(yīng)于邏輯電平1。應(yīng)當(dāng)注意,在此所描述的任何信號(hào)都能夠被指定為負(fù)邏輯信號(hào)或 正邏輯信號(hào)。因此,在可替換的實(shí)施方案中,可以將那些描述為正邏輯信號(hào)的信號(hào)實(shí)現(xiàn)為負(fù) 邏輯信號(hào),并且可以將那些描述為負(fù)邏輯信號(hào)的信號(hào)實(shí)現(xiàn)為正邏輯信號(hào)。在此使用方括號(hào)以指示總線的導(dǎo)體或值的數(shù)位位置。例如,“總線60[7:0] ”或“總 線60的導(dǎo)體[7:0]”指示總線60的8個(gè)低階導(dǎo)體,以及“地址位[7:0]”或“地址[7:0] (ADDRESS[70]) ”指示地址值的8個(gè)低階位。在數(shù)字之前的符號(hào)“$”指示該數(shù)字以其十六 進(jìn)制或基數(shù)16的形式來(lái)表示。在數(shù)字之前的符號(hào)“% ”或“Ob”指示該數(shù)字以其二進(jìn)制或 基數(shù)2的形式來(lái)表示。圖1說(shuō)明了根據(jù)本發(fā)明的一種實(shí)施方案的數(shù)據(jù)處理系統(tǒng)10。數(shù)據(jù)處理系統(tǒng)可以 是片上系統(tǒng)。數(shù)據(jù)處理系統(tǒng)10可以在單個(gè)集成電路或多個(gè)集成電路上實(shí)現(xiàn)。數(shù)據(jù)處理系 統(tǒng)10包括可以通過(guò)總線20進(jìn)行耦連的處理器12、外部調(diào)試電路14、I/O模塊16、及存儲(chǔ) 器18。在可替換的實(shí)施方案中,存儲(chǔ)器18可以是任何類型的存儲(chǔ)器以及可以位于與處理器 12相同的集成電路上,或者位于與處理器12不同的集成電路上。存儲(chǔ)器18可以是任何類 型的存儲(chǔ)器,例如,只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、非易失性存儲(chǔ)器(如閃存) 等。此外,存儲(chǔ)器18可以是位于另一外圍設(shè)備或從動(dòng)設(shè)備之內(nèi)的或者位于不同的集成電路 上的存儲(chǔ)器或其它數(shù)據(jù)存儲(chǔ)。圖2是與圖1的數(shù)據(jù)處理系統(tǒng)10關(guān)聯(lián)的處理器12的框圖。處理器12可以包括指 令管道22、執(zhí)行單元24、取指令單元26、控制電路28、通用寄存器30、裝載/存儲(chǔ)單元32、 總線接口單元(BIU)34以及內(nèi)部調(diào)試電路40。處理器12可以通過(guò)與BIU 34耦連的總線20與數(shù)據(jù)處理系統(tǒng)10的其它組件通信。內(nèi)部調(diào)試電路40可以通過(guò)圖2所示的調(diào)試端口耦 連至外部調(diào)試單元,例如IEEE IST0-5001兼容性Nexus 調(diào)試單元。Nexus 是位于德克薩 斯州的奧斯汀市的Freescale半導(dǎo)體公司的商標(biāo)。調(diào)試端口可以是串行接口,例如JTAG,或 者可以實(shí)現(xiàn)為并行端口,串行與并行端口的組合,或者以太網(wǎng)端口。內(nèi)部調(diào)試電路40可以 包括調(diào)試寄存器42和調(diào)試控制電路44。調(diào)試控制電路44可以包括一個(gè)或更多個(gè)偏移計(jì)數(shù) 器41,其中偏移計(jì)數(shù)器41可以用來(lái)確定在引起調(diào)試事件的指令與指令執(zhí)行中進(jìn)行調(diào)試事 件處理時(shí)的點(diǎn)之間完成指令執(zhí)行的指令的數(shù)量(如果有的話)。調(diào)試寄存器42可以包括按 字段分組用于控制各種調(diào)試關(guān)聯(lián)的事件的位,包括指令斷點(diǎn)、數(shù)據(jù)斷點(diǎn)、監(jiān)視點(diǎn)、以及與調(diào) 試關(guān)聯(lián)的其它消息接發(fā)。這些調(diào)試資源可以在處理器12與外部調(diào)試電路14之間共享。此 外,調(diào)試控制電路44可以通過(guò)導(dǎo)體35與BIU 34進(jìn)行地址及數(shù)據(jù)的通信。現(xiàn)在參考圖3,調(diào)試寄存器42內(nèi)的寄存器也可以被提供用于存儲(chǔ)一個(gè)或更多個(gè) 地址比較值、地址范圍、以及用于實(shí)現(xiàn)指令和/或數(shù)據(jù)存取斷點(diǎn)及監(jiān)視點(diǎn)事件的數(shù)據(jù)匹配 值,以及其它調(diào)試控制準(zhǔn)則。這些地址及數(shù)據(jù)值,與各種控制準(zhǔn)則一起,被用來(lái)確定處理器 12何時(shí)為了產(chǎn)生斷點(diǎn)或監(jiān)視點(diǎn)事件而存取一個(gè)或更多個(gè)預(yù)定的指令地址或數(shù)據(jù)地址,這能 夠在內(nèi)部調(diào)試模式有效時(shí)引起處理器12開始進(jìn)行用于調(diào)試異常的異常處理,或者在外部 調(diào)試模式有效時(shí)引起處理器12進(jìn)入調(diào)試暫停模式,在該調(diào)試暫停模式中處理器12響應(yīng)于 由外部調(diào)試電路14通過(guò)內(nèi)部調(diào)試單元40的調(diào)試端口提供的命令。舉例來(lái)說(shuō),調(diào)試寄存器 42可以包括各種調(diào)試控制寄存器,包括調(diào)試控制寄存器50 (DBCRO)以及其它調(diào)試控制寄存 器43(DBCR1、DBCR2、DBCR3、及DBCR4)。調(diào)試寄存器42還可以包括指令地址比較寄存器 45(IAC1和IAC2)。指令地址比較寄存器45可以為了地址比較的目的而存儲(chǔ)指令地址。調(diào) 試寄存器42還可以包括數(shù)據(jù)地址比較寄存器47(DAC1和DAC2)。數(shù)據(jù)地址比較寄存器47 可以為了地址比較的目的而存儲(chǔ)數(shù)據(jù)存取地址。調(diào)試寄存器42還可以包括調(diào)試狀態(tài)寄存 器49、調(diào)試計(jì)數(shù)器51 (DBCNT1和DBCNT2)、及數(shù)據(jù)值比較寄存器53 (DVC1和DVC2)。調(diào)試寄 存器42可以是用戶軟件編程模型的一部分。當(dāng)一個(gè)或更多個(gè)計(jì)數(shù)啟用事件發(fā)生時(shí),調(diào)試計(jì) 數(shù)器51可以被配置成倒計(jì)數(shù)(count-down)。當(dāng)計(jì)數(shù)值達(dá)到零時(shí),調(diào)試計(jì)數(shù)事件的可以被信 號(hào)發(fā)出,并且可以產(chǎn)生調(diào)試中斷(若已啟用)。數(shù)據(jù)值比較寄存器53可以為了數(shù)據(jù)比較的 目的而存儲(chǔ)數(shù)據(jù)值。在內(nèi)部調(diào)試模式中,這些寄存器資源由軟件來(lái)管理,并且不需要使用外部調(diào)試電 路。軟件可以通過(guò)使用移至專用寄存器或由專用寄存器移來(lái)的指令(其是編程器模型軟件 指令)進(jìn)行的數(shù)據(jù)移動(dòng)來(lái)配置寄存器以初始化各個(gè)調(diào)試寄存器用于執(zhí)行基于軟件的調(diào)試 活動(dòng),其中啟用的調(diào)試事件引起軟件調(diào)試中斷發(fā)生。然后,軟件中斷處理器可以執(zhí)行由數(shù)據(jù) 處理系統(tǒng)10的軟件編程器確定的各種所希望的活動(dòng)。在內(nèi)部調(diào)試模式中,外部調(diào)試電路 14被分派這些共享的調(diào)試事件配置寄存器的所有權(quán),并且當(dāng)所配置的調(diào)試事件發(fā)生時(shí),處 理器12可以進(jìn)入暫停狀態(tài)并等待將由外部調(diào)試電路14提供的命令。當(dāng)外部調(diào)試模式被啟 用(enable)時(shí),軟件不再擁有對(duì)共享調(diào)試資源的控制。外部調(diào)試電路14可以存取共享的 調(diào)試資源,包括直接通過(guò)調(diào)試端口(如圖2所示)存取的調(diào)試寄存器42,其中該調(diào)試端口 例如可以被實(shí)現(xiàn)為JTAG TAP端口。在一種實(shí)施方案中,調(diào)試寄存器42可以通過(guò)在用于各 種JTAG指令的一個(gè)或更多個(gè)字段內(nèi)所包含的寄存器選擇編碼映射為JTAG數(shù)據(jù)寄存器,這 提供了由調(diào)試器通過(guò)JTAG IR及DR操作對(duì)寄存器執(zhí)行的讀存取及寫存取。
      單組寄存器的共享需要更少的處理器12資源來(lái)實(shí)現(xiàn),并且這為數(shù)據(jù)處理系統(tǒng)10 的用戶簡(jiǎn)化了編程模型。內(nèi)部調(diào)試單元40監(jiān)視處理器12內(nèi)的活動(dòng)并且響應(yīng)基于所存儲(chǔ)的 調(diào)試配置信息的一個(gè)或更多個(gè)預(yù)定條件的探測(cè),可以產(chǎn)生一個(gè)或更多個(gè)數(shù)據(jù)斷點(diǎn)事件、指 令斷點(diǎn)事件、指令執(zhí)行事件(例如分支或陷阱獲得事件)、指令完成事件等。在這種操作方 式下,處理器12起著本領(lǐng)域技術(shù)人員能夠意識(shí)到的作用。圖4是與圖1的數(shù)據(jù)處理系統(tǒng)關(guān)聯(lián)的調(diào)試控制寄存器50的圖表??梢詫⒄{(diào)試控 制寄存器50作為調(diào)試寄存器42的一部分包含于其中,該調(diào)試寄存器42可以進(jìn)一步作為內(nèi) 部調(diào)試單元40的一部分包含于其中。調(diào)試控制寄存器50可以用來(lái)存儲(chǔ)調(diào)試配置信息。盡 管圖4說(shuō)明了本發(fā)明的一種使用具體位字段的具體實(shí)施方案,但是本發(fā)明的可替換實(shí)施方 案可以使用每個(gè)字段中位的數(shù)量不同的不同位字段。在圖4中所描述的具體位字段僅出 于說(shuō)明性的目的來(lái)示出。舉例來(lái)說(shuō),調(diào)試控制寄存器50可以包括32個(gè)位。調(diào)試控制寄存 器 50 可以包括標(biāo)記為EDM 52、IDM 54、ICMP 58、BRT 60、IACl 62、IAC264、DACl 66、DAC2 68、DVCl 70、及DVC2 72的位字段。這些位字段只是示例性的并且調(diào)試控制寄存器50可 以包括更少的或附加的位字段。另外,這些數(shù)位字段可以進(jìn)行不同的布置。調(diào)試控制寄存 器50也可以包括可在將來(lái)使用的保留位字段56、61、及74。各種位字段的功能在下文針對(duì) 圖5和圖6進(jìn)行說(shuō)明。舉例來(lái)說(shuō),調(diào)試控制寄存器50可以是可寫的寄存器,其中該可寫寄 存器也可以是可讀的并且可以是用戶軟件編程模型的一部分。在本發(fā)明的可替換實(shí)施方案 中,調(diào)試控制寄存器50可以不是用戶軟件編程模型中的控制寄存器,而是可以被實(shí)現(xiàn)于用 戶軟件編程模型之外。任何類型的存儲(chǔ)電路都可以用來(lái)實(shí)現(xiàn)調(diào)試控制寄存器50。圖5以表格形式示出了圖4中的調(diào)試控制寄存器50的一部分的功能。EDM位52 可以指示外部調(diào)試模式是啟用(enable)的還是禁用(disable)的。例如,當(dāng)EDM位52被置 為1時(shí),控制寄存器(例如調(diào)試控制寄存器56)被置于外部調(diào)試電路14的獨(dú)占控制之下并 且數(shù)據(jù)處理系統(tǒng)10軟件不能夠?qū)⑿畔懭脒@些控制寄存器中。作為選擇,當(dāng)EDM位52被置 為1時(shí),軟件不能夠?qū)懻{(diào)試控制寄存器的具體部分。因而,EDM位52被用來(lái)選擇性地阻止某 些重置事件清除調(diào)試控制寄存器50及其它調(diào)試資源中所存儲(chǔ)的信息,其中能夠包含調(diào)試 控制及設(shè)置信息。IDM位54可以指示內(nèi)部調(diào)試模式是啟用的還是禁用的,從而指示調(diào)試異 常是啟用的還是禁用的。ICMP位58可以用來(lái)指示指令完成調(diào)試事件是啟用的還是禁用的。 BRT位60可以用來(lái)指示分支獲得調(diào)試事件是啟用的還是禁用的。位6:7 61可以被保留以 備將來(lái)使用?,F(xiàn)在參考圖6,圖6以表格形式示出了圖4中的調(diào)試控制寄存器50的一部分 的功能。IACl位62可以用來(lái)指示指令地址比較1調(diào)試事件是啟用的還是禁用的。IAC2位 62可以用來(lái)指示指令地址比較2調(diào)試事件是啟用的還是禁用的。DACl位66可以用來(lái)指示 數(shù)據(jù)地址比較1調(diào)試事件是啟用的還是禁用的。如果已啟用,則DACl位66還指示數(shù)據(jù)地 址比較1調(diào)試事件對(duì)于何種類型的存儲(chǔ)存取(例如,用于存儲(chǔ)類型數(shù)據(jù)存儲(chǔ)存取,用于裝載 類型數(shù)據(jù)存儲(chǔ)存取,或者用于裝載類型或存儲(chǔ)類型數(shù)據(jù)存儲(chǔ)存取)是被啟用的。DAC2位68 可以用來(lái)指示數(shù)據(jù)地址比較2調(diào)試事件是啟用的還是禁用的。如果已啟用,則DAC2位68還 指示數(shù)據(jù)地址比較1調(diào)試事件對(duì)于何種類型的存儲(chǔ)存取(例如,用于存儲(chǔ)類型的存儲(chǔ)存取,用于裝載類型數(shù)據(jù)存儲(chǔ)存取,或者用于裝載類型或存儲(chǔ)類型數(shù)據(jù)存儲(chǔ)存取)是被啟用的。 DVCl位70可以用來(lái)指示數(shù)據(jù)值比較1限定器(qualifier)是否被啟用。DVC2位72可以 用來(lái)指示數(shù)據(jù)值比較2限定器是否被啟用。位16:31可以被保留以備將來(lái)使用。盡管圖5和圖6描述了具體數(shù)量的位字段以提供與調(diào)試事件關(guān)聯(lián)的不同配置信息,但是也可以使用 數(shù)量與這些圖中所示出的數(shù)量不同的位字段。
      圖7是與圖1中的數(shù)據(jù)處理系統(tǒng)關(guān)聯(lián)的調(diào)試狀態(tài)寄存器49的圖表。調(diào)試狀態(tài)寄存 器49可以被引入作為調(diào)試寄存器42的一部分,該調(diào)試寄存器42可以進(jìn)一步被引入作為內(nèi) 部調(diào)試單元40的一部分。調(diào)試狀態(tài)寄存器49可以被用來(lái)存儲(chǔ)關(guān)于調(diào)試事件的狀態(tài)信息。 盡管圖7說(shuō)明了本發(fā)明的一種使用具體位字段的具體實(shí)施方案,但是本發(fā)明的可替換實(shí)施 方案可以使用在每個(gè)字段中位的數(shù)量不同的不同位字段。圖7中所描述的具體位字段只是 出于說(shuō)明性的目的來(lái)示出。舉例來(lái)說(shuō),調(diào)試狀態(tài)寄存器49可以包括32個(gè)位。調(diào)試狀態(tài)寄 存器 49 可以包括標(biāo)記為IDE 76, ICMP 78, BRT 80、IACl 82、IAC2 84、IAC3 86、IAC4 88、 DAClR 90, DAClff 92、DAC2R 94、DAC2W96、及 DAC_0FST 98 的位字段。這些位字段只是示例 性的并且調(diào)試狀態(tài)寄存器49可以包括更少的或附加的位字段。另外,這些位字段可以進(jìn)行 不同的布置。調(diào)試狀態(tài)寄存器49還可以包括可在將來(lái)使用的保留的位字段100。各種位 字段的功能在下文針對(duì)圖8進(jìn)行說(shuō)明。此外,對(duì)于調(diào)試狀態(tài)寄存器49,位的置位(setting) 涉及存儲(chǔ)邏輯電平1并且位的清除涉及存儲(chǔ)邏輯電平0。舉例來(lái)說(shuō),調(diào)試狀態(tài)寄存器49可 以是其位通過(guò)硬件來(lái)置位以及通過(guò)軟件來(lái)讀取及清除的寄存器,并且該寄存器可以是用戶 軟件編程模型的一部分。在本發(fā)明的可替換實(shí)施方案中,調(diào)試狀態(tài)寄存器49可以不處于用 戶軟件編程模型內(nèi),而是可以被實(shí)現(xiàn)于用戶軟件編程模型之外。在一種實(shí)施方案中,只有在 內(nèi)部調(diào)試模式被啟用或者外部調(diào)試模式被啟用的時(shí)候,調(diào)試狀態(tài)寄存器49的調(diào)試狀態(tài)位 才由調(diào)試事件來(lái)置位。此外,在一種實(shí)施方案中,當(dāng)調(diào)試中斷被啟用時(shí),調(diào)試狀態(tài)寄存器49 中的置位位可以引起調(diào)試中斷產(chǎn)生,其中調(diào)試中斷處理器負(fù)責(zé)在返回正常執(zhí)行之前清除調(diào) 試狀態(tài)寄存器49的位。此外,任何類型的存儲(chǔ)電路都可以用來(lái)實(shí)現(xiàn)調(diào)試狀態(tài)寄存器49。圖8以表格形式示出了圖7中的調(diào)試狀態(tài)寄存器49的功能。IDE位76被用來(lái)指 示不準(zhǔn)確的調(diào)試事件的發(fā)生并且從而可以在調(diào)試異常被禁用并且調(diào)試事件引起其各自的 調(diào)試狀態(tài)寄存器位被置為1時(shí)被置為1。也就是,盡管調(diào)試事件可以發(fā)生,但是調(diào)試異???以保持為禁用,因?yàn)橛捎诹魉€的當(dāng)前狀態(tài)中斷還不能產(chǎn)生。如果指令完成調(diào)試事件發(fā)生, 貝丨J ICMP位78可以被置為1。如果分支獲得調(diào)試事件發(fā)生,則BRT位80可以被置為1。如 果IACl調(diào)試事件發(fā)生,則IACl位82可以被置為1。如果IAC2調(diào)試事件發(fā)生,則IAC2位84 可以被置為1。如果IAC3調(diào)試事件發(fā)生,則IAC3位86可以被置為1。如果IAC4調(diào)試事件 發(fā)生,則IAC4位88可以被置為1。當(dāng)DACl位66等于% 10或% 11 (指示DACl調(diào)試事件被 啟用以對(duì)裝載類型的數(shù)據(jù)存儲(chǔ)進(jìn)行存取,如圖6所示)時(shí),如果讀取類型的DACl調(diào)試事件 發(fā)生,則DAClR位90可以被置為1。當(dāng)DACl位66等于% 01或% 11 (指示DACl調(diào)試事件 被啟用以對(duì)存儲(chǔ)類型的數(shù)據(jù)存儲(chǔ)進(jìn)行存取,如圖6所示)時(shí),如果寫入類型的DACl調(diào)試事 件發(fā)生,則DAClW位92可以被置為1。當(dāng)DAC2位68等于% 10或% 11(指示DAC2調(diào)試事 件被啟用以對(duì)裝載類型的數(shù)據(jù)存儲(chǔ)進(jìn)行存取,如圖6所示)時(shí),如果讀取類型的DAC2調(diào)試 事件發(fā)生,則DAC2R位94可以被置為1。當(dāng)DAC2位68等于% 01或% 11 (指示DAC2調(diào)試 事件被啟用以對(duì)存儲(chǔ)類型的數(shù)據(jù)存儲(chǔ)進(jìn)行存取,如圖6所示)時(shí),如果寫入類型的DAC2調(diào) 試事件發(fā)生,則DAC2W位96可以被置為1。DAC_0FST位98可以被用來(lái)指示數(shù)據(jù)地址比較 的偏移。在一種實(shí)施方案中,位13 31被保留以備將來(lái)可能的使用。如果數(shù)據(jù)值比較限定器為調(diào)試控制寄存器50中的DACl或DAC2而被指示,那么數(shù)據(jù)存取地址匹配以及數(shù)據(jù)值匹配(對(duì)于與數(shù)據(jù)存取地址關(guān)聯(lián)的數(shù)據(jù)值)必須為了將要指示的DVCl DACl或DVC2 DAC2調(diào)試事件而發(fā)生。也就是,直到數(shù)據(jù)值匹配也發(fā)生時(shí)才置位 DAClR 位 90、DAC1W 位 92、DAC2R 位 94、及 DAC2W 位 96 中的每一個(gè)以指示 DVCl DACl 或 DVC2 DAC2調(diào)試事件。應(yīng)當(dāng)注意,將要匹配的值能夠被存儲(chǔ)于調(diào)試寄存器42中,例如在數(shù)據(jù)地址 比較寄存器47及數(shù)據(jù)值比較寄存器53中。例如,如果調(diào)試控制寄存器50的DVCl位70被 置位了,那么DACl調(diào)試事件由數(shù)據(jù)值比較所限定,意味著對(duì)于將要被指示的DVCl DACl調(diào) 試事件,地址必須與DACl數(shù)據(jù)地址比較寄存器匹配并且該地址的關(guān)聯(lián)數(shù)據(jù)值必須與DVCl 數(shù)據(jù)值比較寄存器匹配。但是,由于處理器12的流水線性質(zhì),數(shù)據(jù)可能直到存取地址可用 之后的多個(gè)周期后才可用于比較。而且,即使在數(shù)據(jù)一旦可用以及DBC DAC被指示時(shí),指令 流在那一刻也可以是不可中斷的(即,可以禁用調(diào)試異常),這意味著在DVCDAC被指示時(shí)可以不獲得實(shí)際數(shù)據(jù)值斷點(diǎn)。在這種情形中,IDE位76能夠被置為 1以指示不準(zhǔn)確的調(diào)試事件,在該不準(zhǔn)確的調(diào)試事件中調(diào)試異常在調(diào)試事件被指示時(shí)不能 夠被獲得。也就是,直到調(diào)試異常啟用后才能夠獲得實(shí)際數(shù)據(jù)值斷點(diǎn),這可以在隨后的指令 流中的不同的(以及不可預(yù)料的)點(diǎn)發(fā)生,如同將參考圖9-11討論的。一旦調(diào)試異常被獲 得,則中斷處理就開始并且調(diào)試事件被處理。因此,DAC_0FST位98可以被用來(lái)指示在引起DVC DAC被指示的指令與數(shù)據(jù)值斷 點(diǎn)產(chǎn)生以及調(diào)試異常被獲得的點(diǎn)之間執(zhí)行了的指令的數(shù)量。DAC_0FST位98可以被用來(lái)存 儲(chǔ)所保存的DSRRO值相對(duì)裝載或存儲(chǔ)指令的地址的“偏移-1”,其中該裝載或存儲(chǔ)指令獲 得了數(shù)據(jù)地址比較調(diào)試異常。應(yīng)當(dāng)注意,DSRRO對(duì)應(yīng)于調(diào)試存儲(chǔ)恢復(fù)寄存器0,而所保存的 DSRRO值對(duì)應(yīng)于斷點(diǎn)中斷的返回指針。因此,如果數(shù)據(jù)值斷點(diǎn)發(fā)生,則所保存的DSRRO地址 值對(duì)應(yīng)隨中斷處理之前所執(zhí)行的最后指令之后的指令的地址值。通過(guò)這種方式,能夠確定 有多少指令已經(jīng)在引起DVCl DACl的地址與指令流被中斷以獲得數(shù)據(jù)值斷點(diǎn)的點(diǎn)之間的間 隔內(nèi)執(zhí)行了。這允許用戶來(lái)確定實(shí)際上是哪條指令引起了數(shù)據(jù)值斷點(diǎn)。在一種實(shí)施方案中, DAC_0FST位98正常被置為% 00,而DVC DAC則將該字段置為% 01、%10、或%11,這表 示“偏移-1”。實(shí)例將在下文參考圖9-11來(lái)提供。但是,應(yīng)當(dāng)注意,如果同時(shí)的轉(zhuǎn)換旁視緩 沖器(translation look-asidebuffer)丟失(也稱作DTLB錯(cuò)誤)或者數(shù)據(jù)存儲(chǔ)中斷(例 如DSI)錯(cuò)誤由于存取許可錯(cuò)誤或其它存取關(guān)聯(lián)的錯(cuò)誤而發(fā)生,則DAC_0FST位98可以被置 為% 00并且IDE位76可以被置為1。在這些情形中,應(yīng)當(dāng)注意,與地址關(guān)聯(lián)的數(shù)據(jù)可以由 于這些錯(cuò)誤中的某一錯(cuò)誤的發(fā)生而始終不可用。不同的狀況及條件能夠影響在執(zhí)行數(shù)據(jù)地址比較的時(shí)間與實(shí)際獲得數(shù)據(jù)值斷點(diǎn) 的時(shí)間之間執(zhí)行的指令的數(shù)量。圖9-11示出了說(shuō)明一系列的四裝載指令(由10、11、12、 及13表示,其中10引起DVCDAC調(diào)試事件)是如何導(dǎo)致不同的DAC偏移值的時(shí)序圖。這些 能夠由DAC偏移計(jì)數(shù)器41保持追蹤的DAC偏移值代表或編碼在10與獲得在10的DVC DAC 被指示之后的數(shù)據(jù)值斷點(diǎn)的調(diào)試異常的時(shí)間點(diǎn)之間執(zhí)行的指令的數(shù)量。對(duì)于圖9-11,假定 10產(chǎn)生DVCl DACl調(diào)試事件。因此,DACl位66是% 10或% 11,使得DACl調(diào)試事件被啟用 以用于裝載類型數(shù)據(jù)存儲(chǔ)存取,并且DVCl位70被置位以指示DACl調(diào)試事件由數(shù)據(jù)值比較 所限定。10的DVCl DACl調(diào)試事件的對(duì)應(yīng)狀態(tài)位是DAClR位90,該DAClR位90直到相同 存取的每個(gè)地址值比較及數(shù)據(jù)值比較產(chǎn)生匹配后才會(huì)被置位。在該實(shí)例中,對(duì)于數(shù)據(jù)地址 比較,應(yīng)當(dāng)注意的是數(shù)據(jù)地址比較寄存器47中的DACl值可以用于與由10計(jì)算的數(shù)據(jù)地址進(jìn)行比較,以及,對(duì)于數(shù)據(jù)值比較,應(yīng)當(dāng)注意的是數(shù)據(jù)值比較寄存器53中的DVCl值可以用 于與關(guān)聯(lián)10的所引起的裝載數(shù)據(jù)進(jìn)行比較。在可替換的實(shí)施方案中,10可以與DAC2 DVC2 對(duì)應(yīng),使用DAC2位68、DVC2位72、DAC2R位90等。應(yīng)當(dāng)注意,圖9-11中的每個(gè)圖都參照6級(jí)流水線來(lái)描述,包括下列階段取出、解 碼、有效地址伍幻序0、存儲(chǔ)器10^1111)/^1、存儲(chǔ)器2(1^1112)/^2、及回寫。應(yīng)當(dāng)注意,這被提 供作為處理器12的指令管道22的一種流水線實(shí)例;但是,可替換的實(shí)施方案可以包括不同 的流水線,例如具有不同的級(jí)數(shù)。指令流水線(例如圖9-11中所參照的6級(jí)流水線)的操 作是本領(lǐng)域已知的并且因此在這里將不作詳細(xì)描述。此外,圖9-11中的每個(gè)圖都包括可以 與處理器12的處理器時(shí)鐘對(duì)應(yīng)的時(shí)鐘信號(hào)。處理器時(shí)鐘能夠是系統(tǒng)時(shí)鐘或者是僅給處理 器12的一部分提供的時(shí)鐘,并且能夠如同本領(lǐng)域已知的那樣來(lái)產(chǎn)生。參照?qǐng)D9,10在時(shí)鐘周期1內(nèi)進(jìn)入取出階段,在時(shí)鐘周期2內(nèi)進(jìn)入解碼階段,在時(shí) 鐘周期3內(nèi)進(jìn)入ΕΑ/Ε0階段,其中10的有效地址在時(shí)鐘周期3內(nèi)被計(jì)算,并且然后在時(shí)鐘 周期4內(nèi)進(jìn)入meml/El階段。因此,有效地址在時(shí)鐘周期3結(jié)束時(shí)準(zhǔn)備就緒并且被提供于 到調(diào)試控制電路44的導(dǎo)體35的地址部分上使得地址比較能夠在10的有效地址與數(shù)據(jù)地 址比較寄存器47中所存儲(chǔ)的DACl值之間執(zhí)行。(應(yīng)當(dāng)注意,在這一時(shí)間點(diǎn)地址還可以由 BIU 34布置于總線20上。)該DACl地址比較在時(shí)鐘周期4內(nèi)執(zhí)行,如DACl地址比較信號(hào) 中的正脈沖所指示的,其中該DACl地址比較信號(hào)能夠是在調(diào)試控制電路44內(nèi)確證以指示 指令10的DACl地址比較匹配正在發(fā)生的控制信號(hào)。但是,由于DACl需要DVCl限定器(因 為DVCl位70的置位),因而DAClR調(diào)試事件還沒(méi)有被指示,即使地址比較產(chǎn)生匹配。指令 處理繼續(xù)進(jìn)行,因?yàn)榕c10 (10將響應(yīng)于10裝載指令而被檢出)關(guān)聯(lián)的數(shù)據(jù)仍然不可用于數(shù) 據(jù)值比較。10然后進(jìn)行到mem2/E2階段,在該階段中數(shù)據(jù)正被從存儲(chǔ)器(例如,圖1中的存 儲(chǔ)器18)內(nèi)裝載。該裝載數(shù)據(jù)在這個(gè)階段結(jié)束時(shí)可以是可用的(并且例如由BIU 34通過(guò) 總線20來(lái)接收)以及然后被提供于到調(diào)試控制電路44的導(dǎo)體35的數(shù)據(jù)部分上,使得數(shù)據(jù) 值比較能夠在關(guān)聯(lián)10的裝載數(shù)據(jù)值與存儲(chǔ)于數(shù)據(jù)值比較寄存器53內(nèi)的DVCl值之間執(zhí)行。 因此,數(shù)據(jù)值比較在下一時(shí)鐘周期(時(shí)鐘周期6)內(nèi)執(zhí)行,如同DVCl數(shù)據(jù)比較信號(hào)中的正脈 沖所指示的,其中該DVCl數(shù)據(jù)比較信號(hào)能夠是在調(diào)試控制電路44內(nèi)確證以指示指令10的 DVCl數(shù)據(jù)比較匹配正在發(fā)生的控制信號(hào)。在與數(shù)據(jù)值比較寄存器53中所存儲(chǔ)的DVCl值匹 配時(shí),則DVCl DACl調(diào)試事件就被指示,從而硬件對(duì)DAClR位90進(jìn)行置位。應(yīng)當(dāng)注意,當(dāng)在周期6內(nèi)探測(cè)到10上的DVCl DACl時(shí),DAC偏移計(jì)數(shù)器被清零并 被啟用以開始在每個(gè)后續(xù)指令完成時(shí)計(jì)數(shù)。但是,流水線在時(shí)鐘周期6內(nèi)還不能被中斷,因 為11和12處于存儲(chǔ)器階段(meml和mem2)并且從而必須在對(duì)未決的調(diào)試異常進(jìn)行進(jìn)一步 的處理之前完成,因?yàn)榇鎯?chǔ)器存取一旦被初始化它們就不能被中斷,而是必須完成。但是后 續(xù)的存儲(chǔ)器存取沒(méi)有被初始化,因?yàn)镈VCl DACl異常當(dāng)前是未決的。11和12的每次存儲(chǔ) 器存取在進(jìn)入回寫階段后就被看作是完成的。應(yīng)當(dāng)注意,12(指令11和12的后者)在時(shí) 鐘周期8內(nèi)處于回寫階段,在時(shí)鐘周期8之后能夠獲得未決的調(diào)試異常并且能夠開始中斷 處理。也就是,DVCl DACl調(diào)試事件的中斷處理直到時(shí)鐘周期8之后(例如,在時(shí)鐘周期9 內(nèi))才開始。應(yīng)當(dāng)注意,在DVCl DACl被探測(cè)到時(shí),13只是處于流水線的ΕΑ/Ε0階段并且 因而能夠被殺死。也就是,指令流中斷于13 (即調(diào)試異常在12執(zhí)行之后,13執(zhí)行之前被獲 得)。因此,正常的執(zhí)行可以在中斷處理完成之后從13再次開始。因此,DSRRO寄存器可以存儲(chǔ)13的地址,因?yàn)樵摰刂穼?duì)應(yīng)于數(shù)據(jù)斷點(diǎn)調(diào)試中斷的返回指針。在調(diào)試中斷處理器的軟 件例程完成之后,通過(guò)執(zhí)行從中斷指令處的返回使正常的執(zhí)行重新開始,這使用作為要繼 續(xù)正常的(非中斷的)指令執(zhí)行而返回到的指令(在此情形中為13)的指針存儲(chǔ)于DSRRO 中的值。應(yīng)當(dāng)注意,在當(dāng)探測(cè)到DVCl DACl調(diào)試事件時(shí)就清除DAC偏移計(jì)數(shù)器之后,隨著每個(gè)后續(xù)指令完成時(shí),DAC偏移計(jì)數(shù)器就加1直到調(diào)試異常被獲得(中斷處理在該點(diǎn)發(fā)生)。 因此,DAC偏移計(jì)數(shù)器在時(shí)鐘周期8內(nèi)遞增至2,由于后續(xù)的指令11和12分別于時(shí)鐘周期 7和8完成,因此,調(diào)試狀態(tài)寄存器49的DAC_0FST位98被置為% 10。也就是,在引起DVCl DACl的指令(在本實(shí)例中為10)之后且在調(diào)試事件中斷處理之前執(zhí)行的指令的數(shù)量是2, 其中該數(shù)量被存儲(chǔ)為DAC_0FST。在這種情形中,用戶能夠了解,數(shù)據(jù)值斷點(diǎn)一旦發(fā)生,則該 斷點(diǎn)不是實(shí)際引起數(shù)據(jù)值斷點(diǎn)的前一條指令(在本實(shí)例中為12),而是在12之前2條多加 指令(其中該值“2”對(duì)應(yīng)于DAC_0FST)。在12之前2條多加指令的那條指令是10,其中該 指令10在當(dāng)前實(shí)例中確實(shí)引起了數(shù)據(jù)值斷點(diǎn)。如上文針對(duì)DAC_0FST位98所討論的,如果 DVC DAC發(fā)生,則這指示所保存的DSRRO值相對(duì)獲得DAC調(diào)試異常的指令(該指令是10)的 地址的“偏移-1”。所保存的DSRRO值相對(duì)10的偏移(在本實(shí)例中對(duì)應(yīng)于13的地址)是 3,并且DAC_0FST位98從而指示2,其中該值2為“3_1”。應(yīng)當(dāng)注意,在可替換的實(shí)施方案 中,能夠使用不同的邊界來(lái)計(jì)算DAC_0FST或者可以使用不同的計(jì)數(shù)方法以允許DAC_0FST 來(lái)指示該實(shí)例中的10。參照?qǐng)D10,10在時(shí)鐘周期1內(nèi)進(jìn)入取出階段,在時(shí)鐘周期2內(nèi)進(jìn)入解碼階段,在時(shí) 鐘周期3內(nèi)進(jìn)入ΕΑ/Ε0階段,其中10的有效地址在時(shí)鐘周期3內(nèi)被計(jì)算,以及在時(shí)鐘周期 4內(nèi)進(jìn)入meml/El階段。有效地址被提供于到調(diào)試控制電路44的導(dǎo)體35的地址部分上使 得地址比較能夠在10的有效地址與存儲(chǔ)于數(shù)據(jù)地址比較寄存器47中的DACl值之間執(zhí)行。 10的這種DACl地址比較在時(shí)鐘周期4內(nèi)執(zhí)行,并且地址比較匹配發(fā)生,如DACl地址比較信 號(hào)中的正脈沖所指示的。但是,由于DACl需要DVCl限定器(因?yàn)镈VCl位70的置位),因 而DAClR調(diào)試事件仍沒(méi)有被指示,即使地址比較匹配發(fā)生。指令處理繼續(xù)進(jìn)行因?yàn)榕c10 (該 指令10將響應(yīng)于10裝載指令而被檢出)關(guān)聯(lián)的數(shù)據(jù)還不可用于數(shù)據(jù)值比較。10然后進(jìn) 行到mem2/E2階段,在該mem2/E2階段內(nèi)數(shù)據(jù)正被從存儲(chǔ)器(例如,圖1中的存儲(chǔ)器18)中 裝載。但是,在時(shí)鐘周期5內(nèi),10的裝載數(shù)據(jù)由存儲(chǔ)器等待狀態(tài)所停車(stall)。(應(yīng)當(dāng)注 意,10的停車導(dǎo)致流水線停車,在該流水線停車中11-13的每個(gè)階段也都在時(shí)鐘周期5內(nèi) 停車。)因而,代替那個(gè)時(shí)鐘周期5結(jié)束時(shí)提供10的裝載數(shù)據(jù)(如圖9那樣),這里直到時(shí) 鐘周期6結(jié)束后才提供于到調(diào)試控制電路44的導(dǎo)體35的數(shù)據(jù)部分上。然后,數(shù)據(jù)值比較 在下一時(shí)鐘周期(時(shí)鐘周期7)執(zhí)行,并且數(shù)據(jù)匹配發(fā)生,如DVCl數(shù)據(jù)比較信號(hào)中的正脈沖 所指示的。在與數(shù)據(jù)值比較寄存器53中所存儲(chǔ)的DVCl值匹配時(shí),DVCl DACl調(diào)試事件被 指示,從而硬件對(duì)DAClR位90進(jìn)行置位。應(yīng)當(dāng)注意,當(dāng)在周期7內(nèi)探測(cè)到10的DVCl DACl時(shí),DAC偏移計(jì)數(shù)器被清零并且 被啟用以在每個(gè)后續(xù)指令完成時(shí)開始計(jì)數(shù)。但是,流水線在時(shí)鐘周期7內(nèi)還不能被中斷,因 為11處于存儲(chǔ)器階段(mem2)并且因而必須在對(duì)未決的調(diào)試異常進(jìn)行進(jìn)一步處理之前完 成,因?yàn)榇鎯?chǔ)器存取一旦被初始化,它們就不能夠被中斷,而是必須完成。但是后續(xù)的存儲(chǔ) 器存取沒(méi)有被初始化,因?yàn)镈VCl DACl異常當(dāng)前是未決的。但是,在圖10的實(shí)例中,指令12返回指示違反存取允許的DSI錯(cuò)誤并且存儲(chǔ)器從而將不給12返回任何裝載數(shù)據(jù)。因此,即 使12也處于存儲(chǔ)器階段(meml),它也能夠由于DSI錯(cuò)誤而被殺死(kill)。處于EA/EO階 段的13也能夠被殺死,因?yàn)樗€沒(méi)有開始存儲(chǔ)器存取,其中該存儲(chǔ)器存取正常情況下在流 水線階段meml內(nèi)發(fā)生。指令11在時(shí)鐘周期8內(nèi)處于回寫階段,在該時(shí)鐘周期8之后未決 的調(diào)試異常能夠被進(jìn)一步處理使得調(diào)試異常能夠被獲得并且中斷處理能夠開始執(zhí)行。也就 是,DVCl DACl調(diào)試事件的中斷處理直到時(shí)鐘周期8后(例如,在時(shí)鐘周期9中)才開始。 因此,指令流在12中斷(即調(diào)試異常在11執(zhí)行之后及12執(zhí)行之前被獲得)。然后,正常 的執(zhí)行可以在調(diào)試中斷的中斷處理完成之后從12再次開始。因此,DSRRO 寄存器可以存儲(chǔ) 12的地址,因?yàn)樵摰刂穼?duì)應(yīng)于數(shù)據(jù)斷點(diǎn)調(diào)試中斷的返回指針。在調(diào)試中斷處理器的軟件例 程完成之后,通過(guò)執(zhí)行從中斷指令處的返回使正常的執(zhí)行重新開始,這使用作為要繼續(xù)正 常的(非中斷的)指令執(zhí)行而返回到的指令(在此情形中為12)的指針保存于DSRRO中的 值。應(yīng)當(dāng)注意,在當(dāng)探測(cè)到DVCl DACl時(shí)就清除DAC偏移計(jì)數(shù)器之后,隨著每個(gè)后續(xù)指 令完成時(shí),DAC偏移計(jì)數(shù)器就加1直到調(diào)試異常被獲得(中斷處理在該點(diǎn)發(fā)生)。直到調(diào)試 異常被獲得(在其點(diǎn)中斷處理發(fā)生)。因此,DAC偏移計(jì)數(shù)器在當(dāng)前實(shí)例中只遞增至1,因 此,調(diào)試狀態(tài)寄存器49的DAC_0FST位98被置為% 01。也就是,在引起DVCl DACl的指令 (在本實(shí)例中為10)之后且在調(diào)試事件中斷處理之前執(zhí)行的指令的數(shù)量是1,其中該數(shù)量被 存儲(chǔ)為DAC_0FST。在這種情形中,用戶能夠了解,數(shù)據(jù)值斷點(diǎn)一旦發(fā)生,則該斷點(diǎn)不是實(shí)際 引起數(shù)據(jù)值斷點(diǎn)的前一條指令(在本實(shí)例中為U),而是在12之前1條多加指令。在11之 前1條多加指令的那條指令是10,其中該指令10在當(dāng)前實(shí)例中確實(shí)引起了數(shù)據(jù)值斷點(diǎn)。如 上文針對(duì)DAC_0FST位98所討論的,如果DVC DAC發(fā)生,則這指示所保存的DSRRO值相對(duì)獲 得DAC調(diào)試異常的指令(該指令是10)的地址的“偏移-1”。所保存的DSRRO值相對(duì)10的 偏移(在本實(shí)例中對(duì)應(yīng)于12的地址)是2,并且DAC_0FST位98從而指示2,其中該值1為 “2-1”。應(yīng)當(dāng)注意,在可替換的實(shí)施方案中,能夠使用不同的邊界來(lái)計(jì)算DAC_0FST或者可以 使用不同的計(jì)數(shù)方法以允許DAC_0FST來(lái)指示該實(shí)例中的10。參照?qǐng)D11,10在時(shí)鐘周期1內(nèi)進(jìn)入取出階段,在時(shí)鐘周期2內(nèi)進(jìn)入解碼階段,在 時(shí)鐘周期3內(nèi)進(jìn)入ΕΑ/Ε0階段,其中10的有效地址在時(shí)鐘周期3內(nèi)被計(jì)算,以及在時(shí)鐘周 期4內(nèi)進(jìn)入meml/El階段。有效地址被提供于到調(diào)試控制電路44的導(dǎo)體35的地址部分上 使得地址比較能夠在10的有效地址與存儲(chǔ)于數(shù)據(jù)地址比較寄存器47中的DACl值之間執(zhí) 行。這種DACl地址比較在時(shí)鐘周期4內(nèi)為10執(zhí)行并且地址匹配發(fā)生,如DACl地址比較信 號(hào)中的正脈沖所指示的。但是,由于DACl需要DVCl限定器(因?yàn)镈VCl位70的置位),因 而DAClR調(diào)試事件仍沒(méi)有被指示,即使地址比較匹配發(fā)生。指令處理繼續(xù)進(jìn)行因?yàn)榕c10(該 指令10將響應(yīng)于10裝載指令而被檢出)關(guān)聯(lián)的數(shù)據(jù)還不可用于數(shù)據(jù)值比較。10然后進(jìn) 行到mem2/E2階段,在該mem2/E2階段內(nèi)數(shù)據(jù)正被從存儲(chǔ)器(例如,圖1中的存儲(chǔ)器18)中 裝載。10的裝載數(shù)據(jù)在那個(gè)時(shí)鐘周期5結(jié)束時(shí)準(zhǔn)備就緒,并且被提供于到調(diào)試控制電路44 的導(dǎo)體35的數(shù)據(jù)部分上。然后,數(shù)據(jù)值比較在下一時(shí)鐘周期(時(shí)鐘周期6)執(zhí)行,并且數(shù)據(jù) 匹配發(fā)生,如DVCl數(shù)據(jù)比較信號(hào)中的正脈沖所指示的。在與數(shù)據(jù)值比較寄存器53中所存 儲(chǔ)的DVCl值匹配時(shí),DVCl DACl調(diào)試事件被指示,從而硬件對(duì)DAClR位90進(jìn)行置位。當(dāng)在周期6內(nèi)探測(cè)到10上的DVCl DACl時(shí),DAC偏移計(jì)數(shù)器被清零并被啟用以在每個(gè)后續(xù)指令完成時(shí)開始計(jì)數(shù)。在圖11的實(shí)例中,應(yīng)當(dāng)注意的是存儲(chǔ)器階段meml內(nèi)的 11由于轉(zhuǎn)換旁視緩沖器(TLB)中的地址轉(zhuǎn)換丟失引起了錯(cuò)誤,并且因而11沒(méi)有繼續(xù)執(zhí)行。 (應(yīng)當(dāng)注意,TLB沒(méi)有在附圖中示出,但是能夠與存儲(chǔ)器管理單元(MMU) —起被布置于處理 器12中,如本領(lǐng)域所已知的,其中TLB和MMU兩者都可以如本領(lǐng)域所已知的那樣操作)。因 此,在時(shí)鐘周期6中,指令11-13全部都能夠被殺死。因此,調(diào)試異常能夠在時(shí)鐘周期7內(nèi) 立即啟用,使得調(diào)試異常能夠被獲得并且中斷處理能夠開始執(zhí)行。也就是,指令10的DVCl DACl調(diào)試事件的中斷處理能夠在時(shí)鐘周期6之后(例如,在時(shí)鐘周期7中)開始。因此,指 令流在11中斷(即調(diào)試異常在10執(zhí)行之后及11執(zhí)行之前被獲得)。然后 ,正常的執(zhí)行可 以在中斷處理完成之后從11再次開始。因此,DSRRO寄存器可以存儲(chǔ)11的地址,因?yàn)樵摰?址對(duì)應(yīng)于數(shù)據(jù)斷點(diǎn)調(diào)試中斷的返回指針。在當(dāng)前的實(shí)例中,DAC偏移計(jì)數(shù)器保持為0 ;因此, 調(diào)試狀態(tài)寄存器49的DAC_OFST位98保持為% 00。也就是,引起DVCl DACl的指令(在本 實(shí)例中為10)是在被中斷的指令(11)之前的指令。然后,正常的執(zhí)行可以在調(diào)試中斷的中 斷處理完成之后從11再次開始。因此,DSRRO寄存器可以存儲(chǔ)11的地址,因?yàn)樵摰刂穼?duì)應(yīng) 于數(shù)據(jù)斷點(diǎn)調(diào)試中斷的返回指針。在調(diào)試中斷處理器的軟件例程完成之后,通過(guò)執(zhí)行從中 斷指令處的返回使正常的執(zhí)行重新開始,這使用作為要繼續(xù)正常的(非中斷處理)指令執(zhí) 行而返回到的指令(在此情形中為11)的指針保存于DSRRO中的值。因此,應(yīng)當(dāng)注意,關(guān)于DVC DAC的數(shù)據(jù)值斷點(diǎn)的時(shí)序能夠根據(jù)各種因素來(lái)改變,其 中許多因素是不可預(yù)料的以及事先不知道的。但是,通過(guò)使用DAC_0FST,調(diào)試異常一旦被實(shí) 際獲得,用戶就能夠確定是哪條指令實(shí)際上引起了數(shù)據(jù)值斷點(diǎn)(即實(shí)際上引起了要被獲得 的調(diào)試異常)。在某些情況下,例如當(dāng)用戶已經(jīng)通過(guò)用中斷屏蔽控制對(duì)調(diào)試中斷進(jìn)行明確的屏蔽 來(lái)禁用它們時(shí),IDE位76則通知用戶調(diào)試事件(例如DVC DAC調(diào)試事件)已經(jīng)發(fā)生,但它 是不準(zhǔn)確的因?yàn)檎{(diào)試異常已經(jīng)被用戶全局禁用了。也就是,即使調(diào)試事件發(fā)生了,但調(diào)試異 常當(dāng)前正由用戶屏蔽著。因此,一旦調(diào)試異常在對(duì)調(diào)試中斷解除了屏蔽之后被實(shí)際獲得,也 不能使用DSC_0FST值來(lái)準(zhǔn)確判定是哪條指令引起調(diào)試異常發(fā)生的,因?yàn)樵S多指令可以在 用戶對(duì)調(diào)試中斷再次解除屏蔽之前被執(zhí)行。I在這種情形中,DE位76可以由軟件使用以限 定DAC_0FST的有效性,因?yàn)樗环从乘鶊?zhí)行指令的實(shí)際數(shù)量。圖12-16以表格形式示出了說(shuō)明DAC和DVC DAC調(diào)試事件的發(fā)生的多種實(shí)例以及 在一種實(shí)施方案中說(shuō)明調(diào)試狀態(tài)寄存器49的結(jié)果更新,例如DAC_0FST位98。在圖12-16 的表格中,一系列的三指令,10、11及12,被使用于每個(gè)實(shí)例。第一指令,10,是裝載/存儲(chǔ) 類指令,第二指令,11,除非另有說(shuō)明否則是裝載/存儲(chǔ)類指令,以及第三指令,12,除非另 有說(shuō)明否則是裝載/存儲(chǔ)指令。應(yīng)當(dāng)注意,圖12包括行201-208,圖13包括行209-212,圖 14包括行213-215,圖15包括行216-218,以及圖16包括行219-220。參考代表一個(gè)實(shí)例的表格的行201,假定是10導(dǎo)致了 DTLB錯(cuò)誤并且沒(méi)有DAC調(diào)試 事件。在這種情形中,DTLB異常被獲得并且對(duì)調(diào)試狀態(tài)寄存器沒(méi)有更新被執(zhí)行。行202代表 一個(gè)實(shí)例,在該實(shí)例中10導(dǎo)致了數(shù)據(jù)存儲(chǔ)中斷(DSI)錯(cuò)誤并且沒(méi)有DAC調(diào)試事件。在這種 情形中,DSI異常被獲得并且對(duì)調(diào)試狀態(tài)寄存器沒(méi)有更新被執(zhí)行。行203代表一個(gè)實(shí)例,在 該實(shí)例中10導(dǎo)致了 DTLB錯(cuò)誤;但是,DAC調(diào)試事件被指示(例如DACl或DAC2調(diào)試事件)。 在這種情形中,作為DACx調(diào)試事件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、DAC2W)并且IDE位76被置位,并且DAC_OFST位98 被置為% 00。DSRRO寄存器指向10 (即存儲(chǔ)10的地址)。行204代表一個(gè)實(shí)例,在該實(shí)例 中10導(dǎo)致了 DSI錯(cuò)誤;但是,DACx調(diào)試事件被指示(例如DACl或DAC2調(diào)試事件)。在這 種情形中,作為DACx調(diào)試事件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被 置位(例如DAC1R、DAC1W、DAC2R、DAC2W)并且IDE位76被置位,并且DAC_OFST位98被置 為% 00。DSRRO寄存器指向10 (即存儲(chǔ)10的地址)。行205代表一個(gè)實(shí)例,在該實(shí)例中10 導(dǎo)致了 DACx調(diào)試事件(例如DACl或DAC2調(diào)試事件)。在這種情形中,作為DACx調(diào)試事 件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、 DAC2R、DAC2W),并且DAC_OFST位98被置為% 00。DSRRO寄存器指向11 (即存儲(chǔ)11的地 址)。應(yīng)當(dāng)注意,對(duì)于在行203和204中所指示的條件,IDE位76被置位,但是對(duì)于行205, IDE位76則沒(méi)有被置位。這被用來(lái)指出行203和204的DAC_OFST置為% 00指示著指令 10引起了中斷發(fā)生,以及DSRRO中所保存的程序計(jì)數(shù)器值當(dāng)在10上的調(diào)試中斷由于DACl 或DAC2事件而被獲得時(shí)正指向著10而不是指向正常的位置(11)。這發(fā)生了是因?yàn)樵?0 上還存在同時(shí)的DTLB或DSI異常,并且從而10應(yīng)當(dāng)在調(diào)試中斷后被重新執(zhí)行,因?yàn)樗€沒(méi) 有完成執(zhí)行。在重新執(zhí)行時(shí),DACU DAC2事件可以被用戶禁用,以及正常的DTLB或DSI異 常然后被獲得并被適當(dāng)?shù)靥幚?。但?duì)于行205,指令10已經(jīng)完成執(zhí)行,因而在DAC_OFST值 為% 00時(shí)所保存的DSRRO值指向11,并且IDE被清除,指示DSRRO中對(duì)于DAC_OFST值為% 00時(shí)的正常邊界條件。行206-220代表了多個(gè)實(shí)例,在這些實(shí)例中10引起了 DVCxDACx調(diào)試事件(例如 DVC1DAC1或DVC2DAC2調(diào)試事件)。行206代表一個(gè)實(shí)例,在該實(shí)例中11沒(méi)有引起異常并 且能夠是任何指令并且13沒(méi)有引起異常并且不是裝載/存儲(chǔ)類型的指令。在這種情形中, 作為DVCx DACx調(diào)試事件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位 (例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_0FST 位 98 被置為 % 01。DSRRO 寄存器指向 12之后的指令。通過(guò)檢查DAC_0FST位98,能夠判定10引起了 DVCx DACx事件。行207代表與圖9的實(shí)例相似的一個(gè)實(shí)例,在該實(shí)例中11沒(méi)有引起異常并且13 沒(méi)有引起異常,但13是裝載/存儲(chǔ)類指令。在這種情形中,作為DVCx DACx調(diào)試事件的結(jié) 果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、 DAC2W),并且DAC_0FST位98被置為% 10。DSRRO寄存器指向12之后的指令。在該實(shí)例中, 指令12應(yīng)當(dāng)允許完成,因?yàn)樗呀?jīng)開始了存儲(chǔ)器存取。行208代表與圖11的實(shí)例相似的 一個(gè)實(shí)例,在該實(shí)例中11弓丨起DTLB錯(cuò)誤且沒(méi)有DAC。在這種情形中,作為DVCx DACx調(diào)試 事件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、 DAC2R、DAC2W),并且DAC_0FST位98被置為% 00。DSRRO寄存器指向11,因?yàn)樗兄铝?DTLB 錯(cuò)誤,且沒(méi)有完成執(zhí)行。通過(guò)檢查DAC_0FST位98,能夠判定10引起了 DVCx DACx事件。行209代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DSI錯(cuò)誤且沒(méi)有DAC。在這種情形中,作為DVCx DACx調(diào)試事件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位 (例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_0FST 位 98 被置為 % 00。DSRRO 寄存器指向 11,因?yàn)樗兄铝?DSI異常并且沒(méi)有完成。行210代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DTLB 錯(cuò)誤及DACy (例如DACl或DAC2調(diào)試事件)。在這種情形中,作為DVCx DACx調(diào)試事件的結(jié) 果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、DAC2W),并且DAC_OFST位98被置為% 00。DSRRO寄存器指向11。在這種情形中,11的DACy 事件沒(méi)有被報(bào)告,因?yàn)樗捎?1上的DTLB錯(cuò)誤無(wú)論如何都應(yīng)當(dāng)被重新執(zhí)行。行211代表 一個(gè)實(shí)例,在該實(shí)例中11引起了 DSI錯(cuò)誤及DACy (例如DACl或DAC2調(diào)試事件)。在這種 情形中,作為DVCx DACx調(diào)試事件的結(jié)果而引起的調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字 段被置位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_OFST 位 98 被置為 % 00。DSRRO 寄 存器指向11。在這種情形中,11的DACy事件沒(méi)有被報(bào)告,因?yàn)樗捎?1上的DTLB錯(cuò)誤無(wú) 論如何都應(yīng)當(dāng)被重新執(zhí)行。應(yīng)當(dāng)注意,對(duì)于行208-211的實(shí)例,11異常被屏蔽;但是,這是 隨實(shí)現(xiàn)而定的并且在其它處理器上可以是不同的。
      行212代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DACy (例如DACl或DAC2調(diào)試事件)。 在這種情形中,調(diào)試異常被獲得,對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、 DAC2W),對(duì)應(yīng)的 DACy 位字段被置位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_0FST 位 98被置為% 01。DSRRO寄存器指向12。行213代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DVCy DACy (例如DVCl DACl或DVC2 DAC2調(diào)試事件)并且是正常的裝載/存儲(chǔ)指令而在該實(shí)例 中12不是裝載/存儲(chǔ)指令。在這種情形中,調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被 置位(例如DAC1R、DAC1W、DAC2R、DAC2W),對(duì)應(yīng)的DACy位字段被置位(例如DAC1R、DAC1W、 DAC2R、DAC2W),并且DAC_0FST位98被置為% 01。DSRRO寄存器指向12。還應(yīng)當(dāng)注意,在 這種情形中,如果χ等于y,那么調(diào)試狀態(tài)寄存器與DSRRO的結(jié)果狀態(tài)(resultant state) 可能無(wú)法區(qū)別于“無(wú)DACy”的情形(即其中12沒(méi)有引起DACy的情形)。行214代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DVCy DACy (例如DVCl DACl或DVC2 DAC2調(diào)試事件)并且是正常的裝載/存儲(chǔ)指令并且在該實(shí)例中12是沒(méi)有引起異常的裝載 /存儲(chǔ)指令。在這種情形中,在12完成之后獲得調(diào)試異常,因?yàn)樗呀?jīng)開始存儲(chǔ)器存取,并 且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、DAC2W),對(duì)應(yīng)的DACy位字段被置 位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_0FST 位 98 被置為 % 10。DSRRO 寄存器指 向12之后的指令。還應(yīng)當(dāng)注意,在這種情形中,如果χ等于y,那么調(diào)試狀態(tài)寄存器與DSRRO 的結(jié)果狀態(tài)可能無(wú)法區(qū)別于“無(wú)DACy”的情形(即其中12沒(méi)有引起DACy的情形)。行215代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DVCy DACy (例如DVCl DACl或DVC2 DAC2調(diào)試事件)并且是正常的裝載/存儲(chǔ)指令并且在該實(shí)例中12引起了 DSI錯(cuò)誤。行216 代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DVCy DACy (例如DVCl DACl或DVC2 DAC2調(diào)試事件) 并且是正常的裝載/存儲(chǔ)指令并且在該實(shí)例中12引起了 DTLB錯(cuò)誤。在這些情形的任何一 種情形中,調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、 DAC2W),對(duì)應(yīng)的 DACy 位字段被置位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_0FST 位 98被置為%01。DSRRO寄存器指向12。還應(yīng)當(dāng)注意,在這種情形中,如果χ等于y,那么調(diào) 試狀態(tài)寄存器與DSRRO的結(jié)果狀態(tài)可能無(wú)法區(qū)別于“無(wú)DACy”的情形(即其中12沒(méi)有引起 DACy的情形)。此外,應(yīng)當(dāng)注意,在這些情形中,指令12被屏蔽;但是,這種行為是隨實(shí)現(xiàn)而 定的并且在其它處理器上可以是不同的。行217代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DVCy DACy (例如DVCl DACl或DVC2 DAC2調(diào)試事件)并且是正常的裝載/存儲(chǔ)指令并且在該實(shí)例中12是正常的裝載/存儲(chǔ)指 令或者是引起DACy或DVCy DACy的多字裝載/存儲(chǔ)指令。在這種情形中,調(diào)試異常被獲 得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、DAC2W),對(duì)應(yīng)的DACy位字段被置位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_OFST 位 98 被置為 % 10。DSRRO 寄 存器指向12之后的指令。還應(yīng)當(dāng)注意,在這種情形中,如果χ等于y,那么調(diào)試狀態(tài)寄存器 與DSRRO的結(jié)果狀態(tài)可能無(wú)法區(qū)別于“無(wú)DACy”情形(即其中11或12沒(méi)有引起DACy的情 形)。行218代表一個(gè)實(shí)例,在該實(shí)例中11引起了 DVCy DACy (例如DVCl DACl或DVC2 DAC2調(diào)試事件)并且是多字裝載/存儲(chǔ)指令并且在該實(shí)例中12可以是任何指令。在這種情 形中,調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、DAC2W), 對(duì)應(yīng)的DACy位字段被置位(例如DAC1R、DAC1W、DAC2R、DAC2W),并且DAC_0FST位98被置 為%01。DSRRO寄存器指向12。在這種情形中,因?yàn)?1裝載或存儲(chǔ)多寄存器,所以有足夠 的時(shí)間來(lái)防止12存取存儲(chǔ)器,一 10的DVCxDACx條件發(fā)生,則它就可以被殺死。還應(yīng)當(dāng)注 意,在這種情形中,如果χ等于y,那么調(diào)試狀態(tài)寄存器與DSRRO的結(jié)果狀態(tài)可能無(wú)法區(qū)別于 “無(wú)DACy”情形(即其中12沒(méi)有引起DACy的情形)。行219代表一個(gè)實(shí)例,在該實(shí)例中11可以是任何指令并且沒(méi)有引起異常并且在該 實(shí)例中12是正常的裝載/存儲(chǔ)或者是引起DSI錯(cuò)誤以及可能或可能不引起DAC的多字裝載 /存儲(chǔ)指令。在這種情形中,調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、 DAC1W、DAC2R、DAC2W),對(duì)應(yīng)的 DACy 位字段被置位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并 且DAC_0FST位98被置為% 01。DSRRO寄存器指向12。還應(yīng)當(dāng)注意,在這種情形中,指令 12被屏蔽;但這種行為是隨實(shí)現(xiàn)而定的并且在其它處理器上可以是不同的。行220代表一個(gè)實(shí)例,在該實(shí)例中11可以是任何指令并且沒(méi)有引起異常并且在該 實(shí)例中12是正常的裝載/存儲(chǔ)或者是引起DACy或DVCy DACy的多字裝載/存儲(chǔ)指令。在 這種情形中,調(diào)試異常被獲得,并且對(duì)應(yīng)的DACx位字段被置位(例如DAC1R、DAC1W、DAC2R、 DAC2W),對(duì)應(yīng)的 DACy 位字段被置位(例如 DAC1R、DAC1W、DAC2R、DAC2W),并且 DAC_0FST 位 98被置為% 10。DSRRO寄存器指向12之后的指令。還應(yīng)當(dāng)注意,在這種情形中,如果χ等 于y,那么調(diào)試狀態(tài)寄存器與DSRRO的結(jié)果狀態(tài)可能無(wú)法區(qū)別于“無(wú)DACy”情形(即其中12 沒(méi)有引起DACy的情形)。圖17是根據(jù)本發(fā)明的另一種實(shí)施方案與圖1的數(shù)據(jù)處理系統(tǒng)關(guān)聯(lián)的調(diào)試狀態(tài)寄 存器49的圖表。在圖17的實(shí)例中,調(diào)試狀態(tài)寄存器49包括標(biāo)記為IDE 76、ICMP 78,BRT 80、IACl 82、IAC2 84、IAC3 86、IAC4 88、DAClR 90、DAClff 92、DAC2R 94、DAC2W96、DAC_ OFSTA 102、OCCA 104、DAC_0FSTB 106、及0CCB108的位字段。圖17的實(shí)例還可以包括保 留的位字段110,該位字段110可以被保留以備將來(lái)使用。應(yīng)當(dāng)注意,以上(例如,在對(duì)圖7 和圖8的討論中)針對(duì)調(diào)試狀態(tài)寄存器49以及位字段IDE 76、ICMP78、BRT 80、IACl 82、 IAC2 84、IAC3 86、IAC4 88、DAC1R90、DAClW 92、DAC2R 94、及 DAC2W 96 所提供的說(shuō)明同樣 應(yīng)用于圖17,并且因此將不在這里重復(fù)。但是,與圖7的實(shí)例不一樣,圖17的實(shí)例包括的是 多 DAC 偏移字段(例如 DAC_0FSTA 102 和 DAC_0FSTB 106)而不是 DAC_0FST 98。多 DAC 偏 移字段的使用使其具有保持追蹤多偏移的能力,其中每個(gè)DAC偏移字段都可以如上文參考 DAC_0FST 98所描述的那樣來(lái)操作。但是,由于多DAC偏移字段的存在,每個(gè)DAC偏移字段 (例如DAC_0FSTA 102和DAC_0FSTB 106)都具有對(duì)應(yīng)的發(fā)生字段(例如分別為OCCA 104 和 OCCB 108)。因此,DAC_0FSTA位102可以用來(lái)指示已經(jīng)在引起要被指示的第一 DVC DAC (DVC1DACl或DVC2 DAC2)的指令與數(shù)據(jù)值斷點(diǎn)發(fā)生及DVC DAC的調(diào)試異常被獲得的點(diǎn)之間執(zhí)行 的指令的數(shù)量。DAC_OFSTA位102可以用來(lái)存儲(chǔ)所保存的DSRRO值相對(duì)裝載或存儲(chǔ)指令的 地址的“偏移-1”,其中所述裝載或存儲(chǔ)指令以與DAC_OFST 98相同的方式獲得了第一數(shù)據(jù) 地址比較調(diào)試異常。如上文所討論的,DSRRO對(duì)應(yīng)于調(diào)試保存恢復(fù)寄存器0,并且所保存的 DSRRO值對(duì)應(yīng)于調(diào)試中斷的返回指針。通過(guò)這種方式,能夠確定有多少指令已經(jīng)在引起第 一 DVC DAC的地址與指令流于其上中斷以獲得數(shù)據(jù)值斷點(diǎn)(其中該數(shù)據(jù)值斷點(diǎn)可以被獲得 作為第一 DVC DAC或另一 DVC DAC的結(jié)果)的點(diǎn)之間的間隔內(nèi)執(zhí)行了,這允許用戶判定是 哪條指令引起了該第一 DVC DAC0在一種實(shí)施方案中,DAC_OFSTA位102在正常情況下置 為% 00,并且DVC DAC將把該字段置為% 00、% OU % 10、或% 11,這表示“偏移_1”。因 為DVC_OFSTA位102在默認(rèn)下正常情況置為0Z0 00,OCCA 104可以在第一 DVC DAC發(fā)生時(shí)置 位,以指出DAC_0FSTA保持著指示DVCDAC偏移的值。因此,DAC_0FSTB位106可以用來(lái)指 示已經(jīng)在引起要被指示的第二 DVC DAC的指令與數(shù)據(jù)值斷點(diǎn)發(fā)生以及DVCDAC的調(diào)試異常 被獲得的點(diǎn)之間執(zhí)行的指令的數(shù)量。DAC_0FSTB位106可以用來(lái)存儲(chǔ)所保存的DSRRO值相 對(duì)獲得第二數(shù)據(jù)地址比較調(diào)試異常的裝載或存儲(chǔ)指令的地址的“偏移-1”。通過(guò)這種方式, 還能夠確定有多少指令已經(jīng)在引起第二DVC DAC的地址與指令流于其上中斷以獲得數(shù)據(jù)值 斷點(diǎn)(這里再次,數(shù)據(jù)值斷點(diǎn)可以被獲得作為第一 DVC DAC或第二 DVC DAC的結(jié)果)的點(diǎn) 之間的間隔內(nèi)執(zhí)行了。在一種實(shí)施方案中,DAC_0FSTB位106在正常情況下置為% 00,并且 DVC DAC將把該字段置為% 00、% OU % 10、或% 11,這代表“偏移-1”。因?yàn)镈AC_0FSTB 位106在默認(rèn)下正常情況置為% 00,OCCB 108可以在第二 DVC DAC發(fā)生時(shí)置位。(此外, 如上所述,應(yīng)當(dāng)注意,如果DVC DAC的同時(shí)的DTLB錯(cuò)誤或DSI錯(cuò)誤發(fā)生,則對(duì)應(yīng)的DAC偏移 位可以被置為% 00并且IDE位76可以被置為1,如上文參考DAC_0FST位98所討論的。)
      因此,應(yīng)當(dāng)注意,指令的數(shù)量可以導(dǎo)致DVC DAC,以及在指令流被中斷以獲得數(shù)據(jù) 值斷點(diǎn)的點(diǎn)上,假定對(duì)應(yīng)的發(fā)生位被置位了,則偏移字段DAC_0FSTA 102和DAC_0FSTB 104 中的每個(gè)都能夠指示是指令流中的哪條(或哪些)指令引起了其中可能已經(jīng)引起數(shù)據(jù)值斷 點(diǎn)的DVC DAC0如果OCCA位104和OCCB位108兩者都被置位了,指示著兩個(gè)DVC DAC已發(fā) 生,用戶可以使用對(duì)應(yīng)的偏移值以指示是哪條指令實(shí)際上引起了每個(gè)DVC DAC,但是用戶可 能有必要實(shí)際確定是這兩條指令中的哪一條(即該兩個(gè)DVC DAC中的哪一個(gè))實(shí)際上導(dǎo)致 了中斷指令流的數(shù)據(jù)值斷點(diǎn)。圖18示出了說(shuō)明多偏移字段的使用的時(shí)序圖,如同參考圖17所討論的。對(duì)于圖 18的實(shí)例,假定10-14中的每條都是裝載指令,并且10產(chǎn)生第一 DAC DVC調(diào)試事件(DVCx DACx,其中χ能夠是1或2)并且12產(chǎn)生第二 DAC DVC調(diào)試事件(DVCy DACy,其中y能夠是 1或2)。圖18同樣參照6級(jí)流水線來(lái)描述;但是,可替換的實(shí)施方案可以包括不同的流水 線,例如具有不同的級(jí)數(shù)。指令流水線(例如圖18中所參照的6級(jí)流水線)的操作,是本 領(lǐng)域已知的并且因此在這里將不作詳細(xì)描述。此外,圖18包括可以與處理器12的處理器 時(shí)鐘對(duì)應(yīng)的時(shí)鐘信號(hào)。處理器時(shí)鐘能夠是系統(tǒng)時(shí)鐘或者是僅給處理器12的一部分提供的 時(shí)鐘,并且能夠如同本領(lǐng)域已知的那樣來(lái)產(chǎn)生。參照?qǐng)D18,10在時(shí)鐘周期1內(nèi)進(jìn)入取出階段,在時(shí)鐘周期2內(nèi)進(jìn)入解碼階段,在 時(shí)鐘周期3內(nèi)進(jìn)入ΕΑ/Ε0階段,其中10的有效地址在時(shí)鐘周期3內(nèi)被計(jì)算,并且然后在時(shí) 鐘周期4內(nèi)進(jìn)入meml/El階段。因此,有效地址在時(shí)鐘周期3結(jié)束時(shí)準(zhǔn)備就緒并且被提供于到調(diào)試控制電路44的導(dǎo)體35的地址部分上使得地址比較能夠在10的有效地址與存儲(chǔ) 于數(shù)據(jù)地址比較寄存器47中的DAC值(DAC1和DAC2)之間執(zhí)行。(應(yīng)當(dāng)注意,在這一時(shí)間 點(diǎn)地址還可以由BIU 34布置于總線20上。)指令10的這種DACx地址比較在時(shí)鐘周期4 內(nèi)執(zhí)行,并且匹配發(fā)生,如DAC地址比較信號(hào)中的正脈沖所指示的,其中該DAC地址比較信 號(hào)能夠是在調(diào)試控制電路44內(nèi)確證以指示DACx地址比較正在執(zhí)行并且匹配已經(jīng)發(fā)生的控 制信號(hào)。但是,由于DACx需要DVCx限定器(因?yàn)镈VCx位的置位,例如DVCl位70或DVC2 位72),所以調(diào)試事件還沒(méi)有被指示,即使DACx地址比較發(fā)生匹配。指令處理繼續(xù)進(jìn)行,因 為與10 (該指令10將響應(yīng)于10裝載指令被檢出)關(guān)聯(lián)的數(shù)據(jù)還不可用于數(shù)據(jù)值比較。10 然后進(jìn)行到mem2/E2階段,在該mem2/E2階段內(nèi)數(shù)據(jù)正被從存儲(chǔ)器(例如,圖1中的存儲(chǔ)器 18)中裝載。該裝載數(shù)據(jù)在該階段結(jié)束時(shí)可以是可用的(以及例如由BIU 34通過(guò)總線20來(lái) 接收)并且然后被提供于到調(diào)試控制電路44的導(dǎo)體35的數(shù)據(jù)部分上使得數(shù)據(jù)值比較能夠 在關(guān)聯(lián)10的裝載數(shù)據(jù)值與存儲(chǔ)于數(shù)據(jù)值比較寄存器53中的DVCx值之間執(zhí)行。因此,數(shù)據(jù) 值比較在下一時(shí)鐘周期(時(shí)鐘周期6)內(nèi)執(zhí)行,并且匹配發(fā)生,如DACx數(shù)據(jù)比較信號(hào)中的正 脈沖所指示的,其中該DACx數(shù)據(jù)比較信號(hào)能夠是在調(diào)試控制電路44內(nèi)確證以指示DAC數(shù) 據(jù)比較正在執(zhí)行的控制信號(hào)。當(dāng)與數(shù)據(jù)值比較寄存器53中所存儲(chǔ)的DVCx值匹配時(shí),DVCx DACx調(diào)試事件被指示,從而硬件對(duì)相應(yīng)的狀態(tài)位(例如DAClR位90或DAC2R位94,取決于 10是引起了 DACl DVCl還是DAC2 DVC2)進(jìn)行置位。應(yīng)當(dāng)注意,當(dāng)在周期6內(nèi)探測(cè)到10的DVCx DACx時(shí),DAC偏移A計(jì)數(shù)器被清零并 被啟用以開始在每個(gè)后續(xù)指令完成時(shí)計(jì)數(shù)。(DAC偏移A計(jì)數(shù)器可以包含于計(jì)數(shù)器41中。) 但是,流水線在時(shí)鐘周期6內(nèi)還不能被中斷,因?yàn)?1和12處于存儲(chǔ)器階段(meml和mem2) 并且從而必須在對(duì)未決的調(diào)試異常進(jìn)行進(jìn)一步的處理之前完成,因?yàn)榇鎯?chǔ)器存取一旦被初 始化,它們就不能被中斷,而是必須完成。但是后續(xù)的存儲(chǔ)器存取沒(méi)有被初始化,因?yàn)镈VCl DACl異常當(dāng)前是未決的。11和12的每次存儲(chǔ)器存取在進(jìn)入回寫階段后就被看作是完成的。 應(yīng)當(dāng)注意,12(指令11和12的后者)在時(shí)鐘周期8內(nèi)處于回寫階段,在時(shí)鐘周期8之后 能夠處理未決的調(diào)試異常使得調(diào)試異常能夠被獲得并且能夠開始中斷處理。也就是,DVCl DACl調(diào)試事件的中斷處理直到時(shí)鐘周期8之后(例如,時(shí)鐘周期9)才能開始。應(yīng)當(dāng)注意, 在DVCl DACl被探測(cè)到時(shí),13只是處于流水線的ΕΑ/Ε0階段并且因而能夠被殺死。也就是, 指令流中斷于13。因此,執(zhí)行可以在中斷處理完成之后從13再次開始。因此,DSRRO寄存 器可以存儲(chǔ)13的地址,因?yàn)樵摰刂穼?duì)應(yīng)于數(shù)據(jù)斷點(diǎn)調(diào)試中斷的返回指針。在調(diào)試中斷處理 器的軟件例程完成之后,通過(guò)執(zhí)行從中斷指令處的返回使正常的執(zhí)行重新開始,這使用作 為要繼續(xù)正常的(非中斷的)指令執(zhí)行而返回到的指令(在此情形中為13)的指針存儲(chǔ)于 DSRRO中的值。應(yīng)當(dāng)注意,在當(dāng)探測(cè)到DVCx DACx調(diào)試事件時(shí)就清除DAC偏移A計(jì)數(shù) 器之后,隨著 每個(gè)后續(xù)指令完成時(shí),DAC偏移A計(jì)數(shù)器就加1直到調(diào)試異常被獲得(中斷處理在該點(diǎn)發(fā) 生)。因此,DAC偏移A計(jì)數(shù)器在時(shí)鐘周期8內(nèi)遞增至2,因此,調(diào)試狀態(tài)寄存器49的DAC_ OFSTA位102被置為% 10并且OCCA位104也被置位。也就是,在引起DVCx DACx的指令 (在本實(shí)例中為10)之后且在調(diào)試事件中斷處理之前執(zhí)行的指令的數(shù)量是2,其中該數(shù)量被 存儲(chǔ)為DACJFSIW。應(yīng)當(dāng)注意,12在時(shí)鐘周期5內(nèi)進(jìn)入ΕΑ/Ε0階段。因此,有效地址在時(shí)鐘周期5結(jié)束時(shí)準(zhǔn)備就緒并且被提供于到調(diào)試控制電路44的導(dǎo)體35的地址部分上使得地址比較能夠在12的有效地址與數(shù)據(jù)地址比較寄存器47中所存儲(chǔ)的DAC值(DAC1和DAC2)之間執(zhí)行。 (應(yīng)當(dāng)注意,在這一時(shí)間點(diǎn)地址還可以由BIU 34布置于總線20上。)該DACy地址比較在 時(shí)鐘周期6內(nèi)執(zhí)行,并且匹配發(fā)生,如DACy地址比較信號(hào)中的正脈沖所指示的,其中該DACy 地址比較信號(hào)能夠是在調(diào)試控制電路44內(nèi)確證以指示DAC地址比較正在執(zhí)行并且匹配正 在發(fā)生的控制信號(hào)。但是,由于DACl需要DVCy限定器(因?yàn)镈VCy位的置位,例如DVCl位 70或DVC2位72),因而調(diào)試事件還沒(méi)有被指示,即使DACy地址比較發(fā)生匹配。指令處理繼 續(xù)進(jìn)行,因?yàn)榕c12 (該指令12將響應(yīng)于12裝載指令而被檢出)關(guān)聯(lián)的數(shù)據(jù)仍然不可用于 數(shù)據(jù)值比較。12然后進(jìn)行到mem2/E2階段,在該階段中數(shù)據(jù)正被從存儲(chǔ)器(例如,圖1中的 存儲(chǔ)器18)內(nèi)裝載。該裝載數(shù)據(jù)在這個(gè)階段結(jié)束時(shí)可以是可用的(以及例如由BIU34通過(guò) 總線20來(lái)接收)并且然后被提供于到調(diào)試控制電路44的導(dǎo)體35的數(shù)據(jù)部分上,使得數(shù)據(jù) 值比較能夠在關(guān)聯(lián)12的裝載數(shù)據(jù)值與存儲(chǔ)于數(shù)據(jù)值比較寄存器53內(nèi)的DVCy值之間執(zhí)行。 因此,數(shù)據(jù)值比較在下一時(shí)鐘周期(時(shí)鐘周期8)內(nèi)執(zhí)行,并且匹配發(fā)生,如DVCy數(shù)據(jù)比較 信號(hào)中的正脈沖所指示的,其中該DVCy數(shù)據(jù)比較信號(hào)能夠是在調(diào)試控制電路44內(nèi)確證以 指示DVC數(shù)據(jù)比較正在執(zhí)行以及匹配正在發(fā)生的控制信號(hào)。在與數(shù)據(jù)值比較寄存器53中 所存儲(chǔ)的DVCy值匹配時(shí),則DVCy DACy調(diào)試事件就被指示,從而硬件對(duì)相應(yīng)的狀態(tài)位(例 如DAClR位90或DAC2R位94,取決于12是引起了 DACl DVCl還是DAC2 DVC2)進(jìn)行置位。應(yīng)當(dāng)注意,當(dāng)在周期8內(nèi)探測(cè)到12的DVCy DACy時(shí),DAC偏移B計(jì)數(shù)器被清零并 被啟用以開始在每個(gè)后續(xù)指令完成時(shí)計(jì)數(shù)。(DAC偏移B計(jì)數(shù)器可以包含于計(jì)數(shù)器41中。) 流水線在時(shí)鐘周期8內(nèi)還不能被中斷,因?yàn)?1和12兩者都必須在數(shù)據(jù)值斷點(diǎn)響應(yīng)于10所 引起的DVCx DACx被獲得之前完成。因此,與12對(duì)應(yīng)的數(shù)據(jù)也被返回,使DVCy DACy能夠在 獲得調(diào)試異常之前發(fā)生。如上所述,指令流在周期8之后中斷于13,意味著在獲得調(diào)試異常 時(shí)DAC偏移B計(jì)數(shù)器沒(méi)有遞增并保持為0。因此,調(diào)試狀態(tài)寄存器49的DAC_0FSTB位106 被置為% 00并且OCCB位108也被置位(這將使用戶能夠了解到在還沒(méi)有第二 DVC DAC發(fā) 生時(shí)% 00指示實(shí)際的偏移值而不僅僅返回默認(rèn)值)。因此,在引起DVCy DACy的指令(在 本實(shí)例中為12)之后且在中斷處理之前執(zhí)行的指令的數(shù)量是0。通過(guò)這種方式,應(yīng)當(dāng)注意, DAC_0FSTB位106和OCCB位108能夠提供關(guān)于在第一調(diào)試事件(例如DVCx DACx)與該第 一調(diào)試事件的調(diào)試異常被獲得的點(diǎn)之間發(fā)生的調(diào)試事件(例如DVCy DACy)的信息。因此,應(yīng)當(dāng)注意,在圖18的實(shí)例中,兩個(gè)DVC DAC在周期8之后獲得調(diào)試異常之前 發(fā)生,其中每個(gè)DVC DAC由不同的指令引起。與對(duì)應(yīng)的OCCA位104和OCCB位108—起使 用DAC_0FSTA位102和DAC_0FSTB位104,應(yīng)當(dāng)了解的是10 (在指令12之前2條多加指令, 對(duì)應(yīng)于指令流中斷的點(diǎn))和12 (在指令12之前0條多加指令,對(duì)應(yīng)于指令流中斷的點(diǎn))每 條指令都引起了 DVC DAC。然后,用戶能夠譯解是哪條指令實(shí)際上導(dǎo)致了數(shù)據(jù)值斷點(diǎn)(該指 令在本實(shí)例中為10,它引起了第一 DVC DAC, DVCx DACx) 0還應(yīng)當(dāng)注意,χ和y可以是不同 的使得10引起DVCl DACl或DVC2 DAC2而12引起DVCl DACl及DVC2 DAC2中的另一個(gè)。 作為選擇,χ可以等于y,使得10和12兩者都引起了 DVCl DACl或DVC2DAC2。此外,應(yīng)當(dāng)注 意,在一種實(shí)施方案中,DAC A偏移計(jì)數(shù)器和DAC B偏移計(jì)數(shù)器可以位于偏移計(jì)數(shù)器41內(nèi)。因此,能夠認(rèn)識(shí)到一個(gè)或更多個(gè)偏移值可以被如何使用以幫助確定在調(diào)試事件發(fā) 生與調(diào)試異常獲得之間(即在調(diào)試事件發(fā)生與調(diào)試事件的中斷處理起始之間)執(zhí)行的指令的數(shù)量。這可以允許進(jìn)行改進(jìn)的調(diào)試,在該改進(jìn)的調(diào)試中用戶能夠使用該一個(gè)或更多個(gè)偏 移值以更好地了解是哪條指令實(shí)際上引起了將被獲得的調(diào)試異常。盡管以上說(shuō)明已經(jīng)針對(duì) 導(dǎo)致數(shù)據(jù)值斷點(diǎn)的DVC DAC調(diào)試事件進(jìn)行了提供,但是這些偏移值(例如DAC_OFST、DAC_ OFSTA、及DAC_OFSTB)也可以使用于其它類型的調(diào)試事件。也就是,偏移字段(例如DAC_ OFST, DAC_0FSTA、及DAC_0FSTB)可以用來(lái)指示在任何類型的調(diào)試事件發(fā)生與對(duì)應(yīng)的調(diào)試 異常獲得之間(即在任何類型的調(diào)試事件發(fā)生與具體調(diào)試事件的中斷處理起始之間)執(zhí)行 的指令的數(shù)量。此外,應(yīng)當(dāng)注意,了解自調(diào)試事件發(fā)生以來(lái)已經(jīng)執(zhí)行的指令的數(shù)量,而非已經(jīng)引起 該事件的指令的位置可能是有幫助的,因?yàn)槟軌蚶斫庀嗤闹噶?具有相同的位置)可以在達(dá)到流水線邊界之前多次執(zhí)行,其中指令流可以為了未決的調(diào)試事件在該流水線邊界中 斷,因而位置信息單獨(dú)可能不足以確定事件的實(shí)際次序。在一種實(shí)施方案中,一種系統(tǒng)包括用于通過(guò)順序地取出、解碼、執(zhí)行及寫入與每條 指令的執(zhí)行關(guān)聯(lián)的結(jié)果來(lái)執(zhí)行多條指令的流水線處理器,以及與流水線處理器耦連的用于 監(jiān)視指令的執(zhí)行以確定調(diào)試事件發(fā)生的時(shí)間并產(chǎn)生調(diào)試異常以中斷指令處理流的調(diào)試電 路,該調(diào)試電路還包括用于指示表示在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令執(zhí) 行中的點(diǎn)之間完成指令執(zhí)行的指令(如果有的話)的數(shù)量的值的控制電路。在另一種實(shí)施方案中,調(diào)試電路的控制電路還包括用于計(jì)數(shù)并提供計(jì)數(shù)值的計(jì)數(shù) 器,其中該計(jì)數(shù)值作為表示在引起調(diào)試事件的指令之后完成指令執(zhí)行的指令的數(shù)量的值。 在另一種實(shí)施方案中,計(jì)數(shù)值大于0,這指示出調(diào)試事件的處理是不準(zhǔn)確的。在另一種實(shí)施方案中,調(diào)試電路指示隨引起調(diào)試事件的指令之后完成指令執(zhí)行的 一條或更多條附加的指令也引起了調(diào)試事件發(fā)生。在另一種實(shí)施方案中,流水線處理器執(zhí)行其中每條都引起調(diào)試事件的至少兩條指 令以及控制電路還包括多個(gè)計(jì)數(shù)器,其中每個(gè)計(jì)數(shù)器提供由隨引起調(diào)試事件的該至少兩條 指令的各自一條之后完成指令執(zhí)行的附加的指令的數(shù)量所確定的各自的計(jì)數(shù)值。在另一種實(shí)施方案中,調(diào)試電路還包括調(diào)試狀態(tài)寄存器,其中該調(diào)試狀態(tài)寄存器 具有用于保持表示隨引起調(diào)試事件的指令之后直到獲得調(diào)試異常時(shí)的在指令執(zhí)行中的預(yù) 定點(diǎn)之前完成指令執(zhí)行的附加的指令(如果有的話)的數(shù)量的值的字段。在另一種實(shí)施方案中,調(diào)試電路響應(yīng)于對(duì)多條指令中的一條進(jìn)行的解碼來(lái)確定調(diào) 試事件已經(jīng)發(fā)生,將由流水線處理器所形成的地址與一個(gè)或更多個(gè)預(yù)定的調(diào)試地址進(jìn)行比 較以確定數(shù)據(jù)地址匹配是否已經(jīng)發(fā)生,以及將由流水線處理器所存取的數(shù)據(jù)值與一個(gè)或更 多個(gè)預(yù)定的數(shù)據(jù)值進(jìn)行比較以確定數(shù)據(jù)值匹配是否已經(jīng)發(fā)生,其中該調(diào)試事件需要兩種比 較操作中的一種匹配來(lái)發(fā)生。在再一種實(shí)施方案中,一種系統(tǒng)包括用于通過(guò)順序地取出、解碼、執(zhí)行及寫入與每 條指令的執(zhí)行關(guān)聯(lián)的結(jié)果來(lái)執(zhí)行多條指令的流水線處理電路,以及與流水線處理電路耦連 的用于通過(guò)選擇性地將一個(gè)或更多個(gè)調(diào)試地址與由指令執(zhí)行所形成的地址進(jìn)行比較以及 選擇性地將至少一個(gè)調(diào)試數(shù)據(jù)值與由指令執(zhí)行所形成的數(shù)據(jù)進(jìn)行比較來(lái)監(jiān)視指令的執(zhí)行 的調(diào)試電路,其中該調(diào)試電路確定兩種比較發(fā)生匹配的時(shí)間以及,作為響應(yīng),指示調(diào)試事 件,該調(diào)試電路指示在引起調(diào)試事件的指令之后直到獲得數(shù)據(jù)值斷點(diǎn)時(shí)的在指令執(zhí)行中的 預(yù)定點(diǎn)之前所執(zhí)行的指令的數(shù)量。
      在該再一種實(shí)施方案的另一種實(shí)施方案中,數(shù)據(jù)值斷點(diǎn)是不準(zhǔn)確的以及測(cè)試電路 還包括具有指示不準(zhǔn)確的數(shù)據(jù)值斷點(diǎn)是否已經(jīng)發(fā)生的位字段的寄存器。在該再一種實(shí)施方案的另一種實(shí)施方案中,測(cè)試電路還包括用于指示關(guān)于在調(diào)試 事件發(fā)生的時(shí)間與獲得數(shù)據(jù)值斷點(diǎn)的時(shí)間之間發(fā)生的事件的狀態(tài)信息的狀態(tài)寄存器。在另 一種實(shí)施方案中,在調(diào)試事件發(fā)生的時(shí)間與獲得數(shù)據(jù)值斷點(diǎn)的時(shí)間之間發(fā)生的事件之一還 包括第二調(diào)試事件。在該再一種實(shí)施方案的另一種實(shí)施方案中,調(diào)試電路還包括用于計(jì)數(shù)并提供隨引 起調(diào)試事件的指令之后完成指令執(zhí)行的指令的數(shù)量的計(jì)數(shù)值的計(jì)數(shù)器。在該再一種實(shí)施方案的另一種實(shí)施方案中,調(diào)試電路還包括狀態(tài)調(diào)試寄存器,具 有用于保持指示隨引起調(diào)試事件的指令之后直到獲得數(shù)據(jù)值斷點(diǎn)時(shí)的在指令執(zhí)行中的預(yù) 定點(diǎn)之前完成指令執(zhí)行的附加的指令(如果有的話)的數(shù)量的數(shù)值的字段。在又一種實(shí)施方案中,一種方法包括通過(guò)順序地取出、解碼、執(zhí)行及寫入與每條指 令的執(zhí)行關(guān)聯(lián)的結(jié)果來(lái)執(zhí)行多條指令,監(jiān)視指令的執(zhí)行以確定調(diào)試事件發(fā)生的時(shí)間,產(chǎn)生 調(diào)試異常以中斷指令處理流,以及指示在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令 執(zhí)行中的點(diǎn)之間完成指令執(zhí)行的指令(如果有的話)的數(shù)量。在該又一種實(shí)施方案的另一種實(shí)施方案中,方法還包括計(jì)數(shù)以及提供隨引起調(diào)試 事件的指令之后完成指令執(zhí)行的指令的數(shù)量的計(jì)數(shù)值。在另一種實(shí)施方案中,方法還包括 形成大于0的計(jì)數(shù)值,這指示出調(diào)試事件的處理是不準(zhǔn)確的。在該又一種實(shí)施方案的另一種實(shí)施方案中,方法還包括確定隨引起調(diào)試事件的指 令之后完成指令執(zhí)行的一條或更多條附加的指令也引起了調(diào)試事件發(fā)生。在該又一種實(shí)施方案的另一種實(shí)施方案中,方法還包括確定其中每條都引起調(diào)試 事件的至少兩條指令,以及在不同的計(jì)數(shù)器中存儲(chǔ)隨該至少兩條指令的每一條之后完成指 令執(zhí)行的附加的指令的數(shù)量的各自的計(jì)數(shù)值。在該又一種實(shí)施方案的另一實(shí)施方案中,方法還包括在調(diào)試電路中提供調(diào)試狀態(tài) 寄存器,其中該調(diào)試狀態(tài)寄存器具有用于保持指示隨引起調(diào)試事件的指令之后直到獲得調(diào) 試異常時(shí)的在指令執(zhí)行中的預(yù)定點(diǎn)之前完成指令執(zhí)行的附加的指令(如果有的話)的數(shù)量 的值的字段。在該又一種實(shí)施方案的另一種實(shí)施方案中,方法還包括響應(yīng)于對(duì)多條指令中的一 條進(jìn)行的解碼來(lái)確定調(diào)試事件已經(jīng)發(fā)生,將由流水線處理器所形成的地址與一個(gè)或更多個(gè) 預(yù)定的調(diào)試地址進(jìn)行比較以確定數(shù)據(jù)地址匹配是否已經(jīng)發(fā)生,以及將由流水線處理器所形 成的數(shù)據(jù)值與一個(gè)或更多個(gè)預(yù)定的數(shù)據(jù)值進(jìn)行比較以確定數(shù)據(jù)值匹配是否已經(jīng)發(fā)生,其中 該調(diào)試事件需要兩種比較操作中的一種匹配來(lái)發(fā)生。因?yàn)閷?shí)現(xiàn)本發(fā)明的裝置大部分包括本領(lǐng)域技術(shù)人員所已知的電子組件及電路,為 了本發(fā)明的基本概念的了解及理解以及為了不使本發(fā)明的內(nèi)容模糊或分散,除了上文所說(shuō) 明的認(rèn)為必要的電路細(xì)節(jié)以外將不對(duì)其它更多的電路細(xì)節(jié)進(jìn)行說(shuō)明。在此所使用的術(shù)語(yǔ)“程序”被定義為用于在計(jì)算機(jī)系統(tǒng)上執(zhí)行而設(shè)計(jì)的的指令序 列。程序或計(jì)算機(jī)程序可以包括子程序、函數(shù)、過(guò)程、對(duì)象方法、對(duì)象實(shí)現(xiàn)、可執(zhí)行的應(yīng)用程 序、小程序(applet)、服務(wù)小程序(servlet)、源代碼、目標(biāo)代碼,共享庫(kù)/動(dòng)態(tài)裝載庫(kù)和/ 或用于在計(jì)算機(jī)系統(tǒng)上執(zhí)行而設(shè)計(jì)的其它指令序列。
      以上實(shí)施方案中的一些(若適用)可以使用多種不同的信息處理系統(tǒng)來(lái)實(shí)行。例 如,盡管圖1及其討論描述了示例性的信息處理體系結(jié)構(gòu),但是該示例性的體系結(jié)構(gòu)只是 為了在本發(fā)明的各個(gè)方面的討論中提供有用的參考而示出。當(dāng)然,為了討論的目的已經(jīng)簡(jiǎn) 化了對(duì)體系結(jié)構(gòu)的描述,并且它只是可以根據(jù)本發(fā)明來(lái)使用的許多不同類型的適合的體系 結(jié)構(gòu)中的一種。本領(lǐng)域技術(shù)人員將認(rèn)識(shí)到在邏輯塊之間的邊界僅僅是說(shuō)明性的并且可替換 的實(shí)施方案可以合并邏輯塊或電路元件或者對(duì)各種邏輯塊或電路元件實(shí)行可替換的功能 分解。從而,應(yīng)當(dāng)了解在此所描述的體系結(jié)構(gòu)只是示例性的,并且實(shí)際上能夠?qū)崿F(xiàn)獲得 相同功能的許多其它體系結(jié)構(gòu)。在抽象的而仍然明確的意義上,要實(shí)現(xiàn)相同功能的組件的 任何布局是有效“關(guān)聯(lián)的”使得所希望的功能得以實(shí)現(xiàn)。因此,在不考慮體系結(jié)構(gòu)或中間的 組件的情況下,在此結(jié)合以實(shí)現(xiàn)特別功能的任何兩個(gè)組件都能夠被看作是彼此“關(guān)聯(lián)的”使 得所希望的功能得以實(shí)現(xiàn)。類似地,這樣關(guān)聯(lián)的任何兩個(gè)組件還能夠被看作是彼此“可操控 地連接的”或者“可操控地耦連的”以實(shí)現(xiàn)所希望的功能。還例如,在一種實(shí)施方案中,所說(shuō)明的系統(tǒng)10的元件是位于單個(gè)集成電路上或者 位于相同的器件之內(nèi)的電路。作為選擇,系統(tǒng)10可以包括彼此互連的任何數(shù)量的分離的集 成電路或分離的器件。還例如,系統(tǒng)10或其部分可以是物理電路的或可轉(zhuǎn)換成物理電路的 邏輯表示的軟表示或代碼表示。這樣,系統(tǒng)10可以用任何適合類型的硬件描述語(yǔ)言來(lái)實(shí) 現(xiàn)。而且,本領(lǐng)域技術(shù)人員會(huì)認(rèn)識(shí)到在上述操作的功能之間的邊界只是說(shuō)明性的。多 個(gè)操作的功能可以結(jié)合到單個(gè)操作中,和/或單個(gè)操作的功能可以分布于附加的操作中。 而且,可替換的實(shí)施方案可以包括具體操作的多種實(shí)例,并且在不同的其它實(shí)施方案中可 以改變操作的順序。在此所描述的所有或某些軟件可以是數(shù)據(jù)處理系統(tǒng)10從例如計(jì)算機(jī)可讀媒體 (例如存儲(chǔ)器18或其它計(jì)算機(jī)系統(tǒng)上的其它媒體)所接收的元素。該計(jì)算機(jī)可讀媒體可以 是與信息處理系統(tǒng)(例如數(shù)據(jù)處理系統(tǒng)10)固定地、可移動(dòng)地或遠(yuǎn)程地耦連的。計(jì)算機(jī)可讀 媒體可以包括,例如而不限于,任何數(shù)量的下列媒體磁存儲(chǔ)媒體,包括磁盤和磁帶存儲(chǔ)媒 體;光存儲(chǔ)媒體,例如壓縮磁盤媒體(如⑶-ROM、⑶-R等)和數(shù)字視頻磁盤存儲(chǔ)媒體;非易 失性存儲(chǔ)器存儲(chǔ)媒體,包括基于半導(dǎo)體的存儲(chǔ)器單元,例如FLASH存儲(chǔ)器、EEPROM、EPR0M、 ROM ;鐵磁數(shù)字存儲(chǔ)器;MRAM ;易失性存儲(chǔ)媒體,包括寄存器、緩沖器或高速緩存器、主存儲(chǔ) 器、RAM等;以及數(shù)據(jù)傳輸媒體,包括計(jì)算機(jī)網(wǎng)絡(luò)、點(diǎn)對(duì)點(diǎn)遠(yuǎn)程通信設(shè)備、及載波傳輸媒體, 僅列舉幾個(gè)。盡管本發(fā)明在此參考具體的實(shí)施方案來(lái)描述,但是在沒(méi)有脫離權(quán)利要求書所闡明 的本發(fā)明的范圍的情況下能夠進(jìn)行各種修改和改變。因此,說(shuō)明書和附圖應(yīng)當(dāng)被看作是說(shuō) 明性的而非限制性的,并且所有這樣的修改都意欲要包括于本發(fā)明的范圍之內(nèi)。在此針對(duì) 具體的實(shí)施方案所描述的任何利益、優(yōu)點(diǎn)、或問(wèn)題的解決方案并不是要理解為任何或所有 的權(quán)利要求的關(guān)鍵的、必需的、或本質(zhì)的特征或元素。在此所使用的術(shù)語(yǔ)“耦連的”并不是要限定于直接的耦連或機(jī)械上的耦連。而且,在此所使用的詞語(yǔ)“a”或“an”被定義為一個(gè)或多于一個(gè)。此外,引入性短 語(yǔ)(例如“至少一個(gè)”和“一個(gè)或更多個(gè)”)在權(quán)利要求中的使用不應(yīng)當(dāng)被解釋為暗示著由不定冠詞“a”或“an”引入另一權(quán)利要求元素將包含該引入的權(quán)利要求元素的任何特別的 權(quán)利要求限定于只包含一個(gè)該元素的發(fā)明,即使在相同的權(quán)利要求包括引入性短語(yǔ)“一個(gè) 或更多個(gè)”或“至少一個(gè)”及不定冠詞(例如“a”或“an”)的時(shí)候。這對(duì)定冠詞的使用也有效。 除非另有說(shuō)明,否則詞語(yǔ)例如“第一”和“第二”被用來(lái)任意地區(qū)分這樣的詞語(yǔ)所 描述的元素。因而,這些詞語(yǔ)并非必須要指示這樣的元素的時(shí)間先后或其它優(yōu)先序。
      權(quán)利要求
      一種系統(tǒng),包括流水線處理器,用于通過(guò)順序地取出、解碼、執(zhí)行及寫入與每條指令的執(zhí)行關(guān)聯(lián)的結(jié)果來(lái)執(zhí)行多條指令;以及與所述流水線處理器耦連的調(diào)試電路,用于監(jiān)視指令的執(zhí)行以確定調(diào)試事件何時(shí)發(fā)生并產(chǎn)生調(diào)試異常以中斷指令處理流,所述調(diào)試電路還包括控制電路,用于指示表示在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令執(zhí)行中的點(diǎn)之間完成指令執(zhí)行的指令的數(shù)量的值,如果在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令執(zhí)行中的點(diǎn)之間完成指令執(zhí)行的指令存在的話。
      2.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述調(diào)試電路的控制電路還包括用于計(jì)數(shù)并提供計(jì)數(shù)值的計(jì)數(shù)器,其中該計(jì)數(shù)值作為表示在引起調(diào)試事件的指令之后 完成指令執(zhí)行的指令的數(shù)量的值。
      3.根據(jù)權(quán)利要求2所述的系統(tǒng),其中所述計(jì)數(shù)值大于0,這指示調(diào)試事件的處理是不 準(zhǔn)確的。
      4.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述調(diào)試電路指示引起調(diào)試事件的指令之后完 成指令執(zhí)行的一條或更多條附加的指令也引起了調(diào)試事件發(fā)生。
      5.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述流水線處理器執(zhí)行其中每條都引起調(diào)試事件 的至少兩條指令,并且所述控制電路還包括多個(gè)計(jì)數(shù)器,每個(gè)計(jì)數(shù)器提供由引起調(diào)試事件 的所述至少兩條指令的相應(yīng)一條之后完成指令執(zhí)行的附加的指令的數(shù)量所確定的相應(yīng)的 計(jì)數(shù)值。
      6.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述調(diào)試電路還包括調(diào)試狀態(tài)寄存器,具有用于保持表示引起調(diào)試事件的指令之后直到獲得調(diào)試異常時(shí)的 在指令執(zhí)行中的預(yù)定點(diǎn)為止完成指令執(zhí)行的附加的指令的數(shù)量的值的字段,如果引起調(diào)試 事件的指令之后直到獲得調(diào)試異常時(shí)的在指令執(zhí)行中的預(yù)定點(diǎn)為止完成指令執(zhí)行的附加 的指令存在的話。
      7.根據(jù)權(quán)利要求1所述的系統(tǒng),其中所述調(diào)試電路響應(yīng)于對(duì)所述多條指令中的一條進(jìn) 行解碼來(lái)確定調(diào)試事件已經(jīng)發(fā)生,將由所述流水線處理器所形成的地址與一個(gè)或更多個(gè)預(yù) 定的調(diào)試地址進(jìn)行比較以確定數(shù)據(jù)地址匹配是否已經(jīng)發(fā)生,以及將由所述流水線處理器所 存取的數(shù)據(jù)值與一個(gè)或更多個(gè)預(yù)定的數(shù)據(jù)值進(jìn)行比較以確定數(shù)據(jù)值匹配是否已經(jīng)發(fā)生,所 述調(diào)試事件需要兩種比較操作的匹配來(lái)發(fā)生。
      8.一種系統(tǒng),包括流水線處理電路,用于通過(guò)順序地取出、解碼、執(zhí)行及寫入與每條指令的執(zhí)行關(guān)聯(lián)的結(jié) 果來(lái)執(zhí)行多條指令;以及與流水線處理電路耦連的調(diào)試電路,用于通過(guò)選擇性地將一個(gè)或更多個(gè)調(diào)試地址與由 指令執(zhí)行所形成的地址進(jìn)行比較并且選擇性地將至少一個(gè)調(diào)試數(shù)據(jù)值與由指令執(zhí)行所形 成的數(shù)據(jù)進(jìn)行比較來(lái)監(jiān)視指令的執(zhí)行,所述調(diào)試電路確定何時(shí)兩種比較都導(dǎo)致匹配的,以 及,作為響應(yīng),指示調(diào)試事件,所述調(diào)試電路指示在引起調(diào)試事件的指令之后直到獲得數(shù)據(jù) 值斷點(diǎn)時(shí)的在指令執(zhí)行中的預(yù)定點(diǎn)為止所執(zhí)行的指令的數(shù)量。
      9.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述數(shù)據(jù)值斷點(diǎn)是不準(zhǔn)確的,并且所述測(cè)試電路 還包括具有指示不準(zhǔn)確的數(shù)據(jù)值斷點(diǎn)是否已經(jīng)發(fā)生的位字段的寄存器。
      10.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述測(cè)試電路還包括用于指示關(guān)于在調(diào)試事件 發(fā)生的時(shí)間與獲得數(shù)據(jù)值斷點(diǎn)的時(shí)間之間發(fā)生的事件的狀態(tài)信息的狀態(tài)寄存器。
      11.根據(jù)權(quán)利要求10所述的系統(tǒng),其中在調(diào)試事件發(fā)生的時(shí)間與獲得數(shù)據(jù)值斷點(diǎn)的時(shí) 間之間發(fā)生的事件之一還包括第二調(diào)試事件。
      12.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述調(diào)試電路還包括計(jì)數(shù)器,用于對(duì)引起調(diào)試事件的指令之后完成指令執(zhí)行的指令的數(shù)量的計(jì)數(shù)值進(jìn)行計(jì) 數(shù)并提供該計(jì)數(shù)值。
      13.根據(jù)權(quán)利要求8所述的系統(tǒng),其中所述調(diào)試電路還包括狀態(tài)調(diào)試寄存器,具有用于保持指示引起調(diào)試事件的指令之后直到獲得數(shù)據(jù)值斷點(diǎn)時(shí) 在指令執(zhí)行中的預(yù)定點(diǎn)為止完成指令執(zhí)行的附加的指令的數(shù)量的數(shù)值的字段,如果引起調(diào) 試事件的指令之后直到獲得數(shù)據(jù)值斷點(diǎn)時(shí)在指令執(zhí)行中的預(yù)定點(diǎn)為止完成指令執(zhí)行的附 加的指令存在的話。
      14.一種方法,其特征在于包括通過(guò)順序地取出、解碼、執(zhí)行及寫入與每條指令的執(zhí)行關(guān)聯(lián)的結(jié)果來(lái)執(zhí)行多條指令;監(jiān)視指令的執(zhí)行以確定何時(shí)調(diào)試事件發(fā)生;產(chǎn)生調(diào)試異常以中斷指令處理流;以及指示在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令執(zhí)行中的點(diǎn)之間完成指令執(zhí) 行的指令的數(shù)量,如果在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令執(zhí)行中的點(diǎn)之間 完成指令執(zhí)行的指令存在的話。
      15.根據(jù)權(quán)利要求14所述的方法,還包括對(duì)引起調(diào)試事件的指令之后完成指令執(zhí)行的指令的數(shù)量的計(jì)數(shù)值進(jìn)行計(jì)數(shù)并提供該 計(jì)數(shù)值。
      16.根據(jù)權(quán)利要求15所述的方法,還包括形成大于0的計(jì)數(shù)值,這指示調(diào)試事件的處理是不準(zhǔn)確的。
      17.根據(jù)權(quán)利要求14所述的方法,還包括確定引起調(diào)試事件的指令之后完成指令執(zhí)行的一條或更多條附加的指令也引起調(diào)試 事件發(fā)生。
      18.根據(jù)權(quán)利要求14所述的方法,還包括確定其中每條都引起調(diào)試事件的至少兩條指令;以及在不同的計(jì)數(shù)器中存儲(chǔ)所述至少兩條指令的每一條之后完成指令執(zhí)行的附加的指令 的數(shù)量的相應(yīng)的計(jì)數(shù)值。
      19.根據(jù)權(quán)利要求14所述的方法,還包括在調(diào)試電路中提供調(diào)試狀態(tài)寄存器,其中所述調(diào)試狀態(tài)寄存器具有字段,所述字段用 于保持指示引起調(diào)試事件的指令之后直到獲得調(diào)試異常時(shí)的在指令執(zhí)行中的預(yù)定點(diǎn)為止 完成指令執(zhí)行的附加的指令的數(shù)量的值,如果引起調(diào)試事件的指令之后直到獲得調(diào)試異常 時(shí)的在指令執(zhí)行中的預(yù)定點(diǎn)為止完成指令執(zhí)行的附加的指令存在的話。
      20.根據(jù)權(quán)利要求14所述的方法,還包括響應(yīng)于對(duì)多條指令中的一條進(jìn)行的解碼來(lái)確定調(diào)試事件已經(jīng)發(fā)生;將由流水線處理器所形成的地址與一個(gè)或更多個(gè)預(yù)定的調(diào)試地址進(jìn)行比較以確定數(shù)據(jù)地址匹配是否已經(jīng)發(fā)生;以及將由流水線處理器所形成的數(shù)據(jù)值與一個(gè)或更多個(gè)預(yù)定的數(shù)據(jù)值進(jìn)行比較以確定數(shù)據(jù)值匹配是否已經(jīng)發(fā)生,所述調(diào)試事件需要兩種比較操作的匹配來(lái)發(fā)生。
      全文摘要
      一種系統(tǒng)具有用于通過(guò)順序地取出、解碼、執(zhí)行及寫入與每條指令的執(zhí)行關(guān)聯(lián)的結(jié)果來(lái)執(zhí)行多條指令的流水線處理器(12)。調(diào)試電路(40)與流水線處理器耦連以用于監(jiān)視指令的執(zhí)行來(lái)確定調(diào)試事件發(fā)生的時(shí)間。該調(diào)試電路產(chǎn)生調(diào)試異常以中斷指令處理流。該調(diào)試電路具有用于指示表示在引起調(diào)試事件的指令與獲得調(diào)試異常時(shí)的在指令執(zhí)行中的點(diǎn)之間完成指令執(zhí)行的指令(如果有的話)的數(shù)量的值的控制電路(44)。
      文檔編號(hào)G06F11/28GK101809542SQ200880108954
      公開日2010年8月18日 申請(qǐng)日期2008年8月4日 優(yōu)先權(quán)日2007年9月28日
      發(fā)明者W·C·莫耶 申請(qǐng)人:飛思卡爾半導(dǎo)體公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1