專利名稱:微處理器的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種微處理器和調(diào)試系統(tǒng)。該調(diào)試系統(tǒng)用于跟蹤程序計(jì)數(shù)器的功能和通知用戶當(dāng)前的地址或數(shù)據(jù)已被存取。
背景技術(shù):
圖1是根據(jù)現(xiàn)有技術(shù)實(shí)現(xiàn)的調(diào)試系統(tǒng),稱為內(nèi)部電路仿真器。
該系統(tǒng)包括用戶目標(biāo)系統(tǒng)500和用于調(diào)試目標(biāo)系統(tǒng)500的調(diào)試器505,目標(biāo)系統(tǒng)500含有微處理器501,存貯器503以及輸入輸出部件502,調(diào)試器含有調(diào)試微處理器506與監(jiān)控程序存貯器507。
為調(diào)試目標(biāo)系統(tǒng)500,要移去或禁止微處理器501工作,而調(diào)試器505的插針連到微處理器501,使得微處理器506能代替微處理器501的操作。使微處理器506執(zhí)行貯存在存貯器507的監(jiān)控程序,以實(shí)現(xiàn)對保存在存貯器503中的用戶程序的控制。
微處理器506執(zhí)行用戶程序,并存取存貯器503的數(shù)據(jù)與輸入輸出部件502。調(diào)試器505含有跟蹤存貯器508,使得微處理器506能夠提供關(guān)于內(nèi)部狀態(tài)的跟蹤信息。例如,可以提供通常微處理器501經(jīng)處理器總線504不能提供的程序計(jì)數(shù)器的數(shù)值。
然而,圖1的現(xiàn)有技術(shù)必須把目標(biāo)系統(tǒng)500中的微處理器501的所有引線連到調(diào)試器505。例如,微處理器501有70條引線,用于30條地址信號線、4條字節(jié)允許信號線。1條讀信號線,1條寫信號線、1條讀確認(rèn)信號線。1條寫確認(rèn)信號線和32條數(shù)據(jù)信號線。調(diào)試器505具有用于這些引線的插針,成本昂貴,且工作不穩(wěn)定。為了能存取目標(biāo)系統(tǒng)500的存貯器503和調(diào)試器505的存貯器507,微處理器506必須從一組總線轉(zhuǎn)換到另一組總線,因而,不能應(yīng)用于高速微處理器。
如果目標(biāo)微處理器具有外圍元件,并且可能有不同的引線排列,這樣,調(diào)試器必須具有同樣引線排列的探針。當(dāng)調(diào)試器505的探針連到目標(biāo)系統(tǒng)500時(shí)可能影響和使得目標(biāo)系統(tǒng)500信號不穩(wěn)定。
圖2是根據(jù)另一種現(xiàn)有技術(shù)實(shí)現(xiàn)的調(diào)試系統(tǒng),稱為只讀存貯器監(jiān)控程序。
用戶目標(biāo)系統(tǒng)510具有一個(gè)連到宿主機(jī)517的串行接口,存貯器513貯存監(jiān)控程序514,微處理器511執(zhí)行監(jiān)控程序,訪問存貯器514、輸入輸出部件515和寄存器516,使用軟件斷點(diǎn)指令執(zhí)行和控制用戶程序。
這種現(xiàn)有技術(shù),借用用戶存貯器513貯存監(jiān)控程序514。如果目標(biāo)系統(tǒng)510的存貯系統(tǒng)不完善,則監(jiān)控程序514本身也將不穩(wěn)定。如果存貯器513的容量較小,則將沒有存放監(jiān)控程序514的空間。由于監(jiān)控模式是由用戶中斷啟動,則某些程序?qū)⒉荒鼙徽{(diào)試。雖然安裝在目標(biāo)系統(tǒng)510上的串行接口512對于調(diào)試是必不可少的,但調(diào)試之后,則不再使用。這種現(xiàn)有技術(shù)的調(diào)試性能不好,因?yàn)樗鼪]有硬件斷點(diǎn)也不能跟蹤程序計(jì)數(shù)器。
圖3仍然是根據(jù)另一種現(xiàn)有技術(shù)的調(diào)試系統(tǒng)。
用戶目標(biāo)系統(tǒng)520具有微處理器521,該微處理器含有串行接口526和定序器525。串行接口526與調(diào)試工具529通信。調(diào)試工具529向接口526發(fā)送信號,而定序器525對信號進(jìn)行解釋,為了影響信號,定序器525暫停用戶程序的執(zhí)行,存取寄存器528使用總線控制器527存取輸入輸出部件523和存貯器524,并控制用戶程序。串行接口526通常不能與宿主機(jī)530直接通信。因此,調(diào)試工具529要把來自宿主機(jī)530的命令轉(zhuǎn)換成微處理器521能理解的信號,而把來自微處理器521的信號轉(zhuǎn)換成宿主機(jī)530能理解的數(shù)據(jù)格式。
微處理器521含有必須訪問微處理器521和調(diào)試工具529的定序器525。這樣,這種現(xiàn)有技術(shù)由于采用復(fù)雜的連接邏輯,而使芯片面積增加。如果目標(biāo)系統(tǒng)520要提供復(fù)加的寄存器,由于復(fù)雜的工作,必須相應(yīng)地修改定序器525。這種現(xiàn)有技術(shù)不能跟蹤程序計(jì)數(shù)器。
如上所述,這些現(xiàn)有技術(shù)不能跟蹤程序計(jì)數(shù)器,即使他們能夠跟蹤,他們必須通過處理器總線,在調(diào)試處理器與目標(biāo)系統(tǒng)之間連接許多信號。根據(jù)圖1的現(xiàn)有技術(shù),調(diào)試程序505的微處理器506必須訪問存貯器503和目標(biāo)系統(tǒng)500中的輸入輸出部件502,其困難在于控制這些存取操作的時(shí)序。
圖2的現(xiàn)有技術(shù)是在用戶存貯器513中存放監(jiān)控程序,它減少用戶存貯的空間。用這種現(xiàn)有技術(shù)進(jìn)行調(diào)試是不可靠的和不充分的。
圖3的現(xiàn)有技術(shù)是在目標(biāo)系統(tǒng)520中的微處理器521中包含定序器525,對來自調(diào)試工具529發(fā)送的信號進(jìn)行解釋并執(zhí)行。換句話說,這種現(xiàn)有技術(shù)涉及目標(biāo)系統(tǒng)與調(diào)試工具之間的復(fù)雜的連接。如果要修改處理器521,則要做復(fù)雜的工作,對定序器525進(jìn)行修改。
圖2和圖3的現(xiàn)有技術(shù)均沒有觸發(fā)功能。雖然圖1的現(xiàn)有技術(shù)在調(diào)試微處理器506可能有觸發(fā)功能,但也要有用于提供觸發(fā)信息的附加信號。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一個(gè)配置在用戶目標(biāo)系統(tǒng)中的微處理器,用于以目標(biāo)系統(tǒng)與調(diào)試器之間的少量信號實(shí)現(xiàn)調(diào)試功能。
本發(fā)明的另外目的在于提供一個(gè)配置在用戶目標(biāo)系統(tǒng)中的微處理器,借助在目標(biāo)系統(tǒng)上微處理器的操作,方便地存取目標(biāo)系統(tǒng)的存貯器和輸入輸出部件。實(shí)現(xiàn)調(diào)試功能。
本發(fā)明的其它目的在于提供一個(gè)配置在用戶目標(biāo)系統(tǒng)中的微處理器,以少量的信號實(shí)現(xiàn)跟蹤程序計(jì)數(shù)器的調(diào)試功能。
本發(fā)明的其它目的還在于提供一個(gè)配置在用戶目標(biāo)系統(tǒng)中的微處理器,以最少的硬設(shè)備通過共享地址、通過帶有硬件斷點(diǎn)功能和觸發(fā)功能的數(shù)據(jù)比較器、以及共享具有程序計(jì)數(shù)器信息和觸發(fā)器信息的輸出信號,實(shí)現(xiàn)調(diào)試功能。
為了達(dá)到這些目的,本發(fā)明的第一個(gè)方面是一種微處理器,它具有處理機(jī)內(nèi)核(代碼塊)和調(diào)試模塊。處理機(jī)內(nèi)核執(zhí)行用戶程序和監(jiān)控程序,以便調(diào)試用戶目標(biāo)系統(tǒng)。調(diào)試模塊通過內(nèi)部調(diào)試接口和處理器總線連到處理機(jī)內(nèi)核。調(diào)試模塊具有一個(gè)接口,通過它處理機(jī)內(nèi)核執(zhí)行保存在一個(gè)在調(diào)試工具內(nèi)的監(jiān)控程序,調(diào)試模塊還有一個(gè)用于向處理器內(nèi)核發(fā)出中斷和異常請求的運(yùn)行控制器,用它把處理器內(nèi)核從用戶程序切換到監(jiān)控程序。
本發(fā)明的第二方面是一個(gè)調(diào)試系統(tǒng),在此系統(tǒng)中,調(diào)試器存儲一個(gè)監(jiān)控程序,用于調(diào)試用戶目標(biāo)系統(tǒng)。目標(biāo)系統(tǒng)包括微處理器、存貯器和輸入/輸出單元。微處理器具有處理機(jī)內(nèi)核和調(diào)試模塊。處理機(jī)內(nèi)核執(zhí)行用戶程序或監(jiān)控程序。調(diào)試模塊通過內(nèi)部調(diào)試接口和處理器總線連接到處理機(jī)內(nèi)核,通過外部調(diào)試接口連接到調(diào)試器。調(diào)試模塊的接口能使得處理機(jī)內(nèi)核執(zhí)行監(jiān)控程序。調(diào)試模塊還有運(yùn)行控制器,用于向處理機(jī)內(nèi)核發(fā)出中斷和異常請求,把處理機(jī)內(nèi)核從用戶程序切換到監(jiān)控程序。存貯器通過處理器總線與微處理器相連,并存貯對于微處理器執(zhí)行用戶程序所必要的信息。輸入/輸出單元通過處理器總線連接到微處理器。
根據(jù)本發(fā)明的第一方面和第二方面,目標(biāo)系統(tǒng)的微處理器具有調(diào)試功能,以減少目標(biāo)系統(tǒng)與調(diào)試器之間的信號數(shù)量。根據(jù)本發(fā)明的第一方面和第二方面,在調(diào)試期間,微處理器操作,方便地訪問目標(biāo)系統(tǒng)的存儲器和輸入/輸出單元。
本發(fā)明的第三方面是提供一種微處理器,它具有一個(gè)能執(zhí)行程序的處理機(jī)內(nèi)核和能跟蹤程序計(jì)數(shù)器的跟蹤器。跟蹤器通過內(nèi)部調(diào)試接口連接到處理機(jī)內(nèi)核,提供程序計(jì)數(shù)器信號,表示處理機(jī)內(nèi)核將要執(zhí)行的指令地址,傳送輸出信號的信號線的數(shù)量要少于指令地址的位數(shù)。
根據(jù)本發(fā)明的第三部分,目標(biāo)系統(tǒng)的微處理器具有調(diào)試功能,以減少用于跟蹤程序計(jì)數(shù)器的接口信號的數(shù)目。
本發(fā)明的第四方面是提供一種微處理器,它具有執(zhí)行程序的處理機(jī)內(nèi)核、斷點(diǎn)電路和程序計(jì)數(shù)器跟蹤器。當(dāng)存貯的地址與設(shè)置的地址相符合、或當(dāng)被存取的地址和數(shù)據(jù)與設(shè)置的地址和數(shù)據(jù)相符合,則斷點(diǎn)電路向處理機(jī)內(nèi)核提供斷點(diǎn)請求和觸發(fā)請求。跟蹤器提供一個(gè)觸發(fā)請求已是可用的外部狀態(tài)信號信息。
根據(jù)本發(fā)明的第四方面,目標(biāo)系統(tǒng)的微處理器具有調(diào)試功能,地址比較器共享硬件的斷點(diǎn)功能和觸發(fā)功能,跟蹤器的輸出用于提供觸發(fā)信號,以使硬件減至最低限度。
根據(jù)本發(fā)明,這里提供一種微處理器,其特征在于,包括一個(gè)處理器內(nèi)核,用以執(zhí)行程序;一個(gè)中斷電路,用以在一個(gè)存取地址與一個(gè)設(shè)定的地址相符合時(shí)或在一個(gè)存取地址和數(shù)據(jù)與一個(gè)設(shè)定地址和數(shù)據(jù)相符合時(shí),產(chǎn)生一個(gè)中斷請求或設(shè)置一個(gè)觸發(fā)請求信號送到所述的處理器內(nèi)核;和一個(gè)程序計(jì)數(shù)器跟蹤器,用以提供一個(gè)外部狀態(tài)信號,用以指示在中斷電路設(shè)置同樣信號之后觸發(fā)請求信號已經(jīng)發(fā)出。
本發(fā)明的這些目的和其它的目的、特征和優(yōu)點(diǎn)從下文描述的優(yōu)選實(shí)施例并參照附圖將會更加明了。
圖1示出根據(jù)一個(gè)現(xiàn)有技術(shù)的、用于調(diào)試用戶目標(biāo)系統(tǒng)的調(diào)試系統(tǒng)。
圖2示出根據(jù)另一現(xiàn)有技術(shù)的、用于調(diào)試用戶目標(biāo)系統(tǒng)的調(diào)試系統(tǒng)。
圖3示出根據(jù)又一個(gè)現(xiàn)有技術(shù)的、用于調(diào)試用戶目標(biāo)系統(tǒng)的調(diào)試系統(tǒng)。
圖4示出根據(jù)本發(fā)明的一個(gè)實(shí)施例的調(diào)試系統(tǒng)和微處理器。
圖5示出根據(jù)所述實(shí)施例的調(diào)試模塊。
圖6示出根據(jù)圖4所示的實(shí)施例的寄存器電路。
圖7示出根據(jù)圖6所示的寄存器電路的調(diào)試控制寄存器(DCR)。
圖8示出根據(jù)圖6所示的寄存器電路的指令斷點(diǎn)地址0寄存器(IBA0)。
圖9示出根據(jù)圖6所示的寄存器電路的指令斷點(diǎn)控制0寄存器(IBC0)。
圖10示出根據(jù)圖6所示的寄存器電路的指令斷點(diǎn)狀態(tài)寄存器(IBS)。
圖11示出根據(jù)圖6所示的寄存器電路的數(shù)據(jù)斷點(diǎn)地址0寄存器(DBA0)。
圖12示出根據(jù)圖6所示的寄存器電路的數(shù)據(jù)斷點(diǎn)控制0寄存器(DBC0)。
圖13示出根據(jù)圖6所示的寄存器電路的數(shù)據(jù)斷點(diǎn)狀態(tài)寄存器(DBS)。
圖14示出根據(jù)圖6所示的寄存器電路的處理器總線斷點(diǎn)地址0寄存器(PBA0)。
圖15示出根據(jù)圖6所示的寄存器電路的處理器總線斷點(diǎn)數(shù)據(jù)0寄存器(PBD0)。
圖16是圖6所示的寄存器電路的處理器總線屏蔽0寄存器(PBM0)。
圖17是圖6所示的寄存器電路的處理器總線控制0寄存器(PBC0)。
圖18是圖6所示的寄存器電路的處理器總線斷點(diǎn)狀態(tài)寄存器(PBS)。
圖19是圖5所示的調(diào)試模塊的指令/數(shù)據(jù)地址斷點(diǎn)電路。
圖20是圖5所示的調(diào)試模塊的處理器總線斷點(diǎn)電路。
圖21是圖5所示的調(diào)試模塊的串行監(jiān)控總線電路。
圖22是串行監(jiān)控總線電路讀操作的定時(shí)圖。
圖23是串行監(jiān)控總線電路寫操作的定時(shí)圖。
圖24是根據(jù)指令CFC0的串行監(jiān)控總線電路讀操作的定時(shí)圖。
圖25是根據(jù)指令CTC0的串行監(jiān)控總線電路寫操作的定時(shí)圖。
圖26是圖21示出的串行監(jiān)控總線電路的操作流程圖。
圖27是串行監(jiān)控總線電路的讀操作流程圖。
圖28是串行監(jiān)控總線電路的寫操作流程圖。
圖29是圖5示出的調(diào)試模塊的程序計(jì)數(shù)器跟蹤器。
圖30是根據(jù)轉(zhuǎn)移指令程序計(jì)數(shù)器輸出的定時(shí)圖。
圖31是根據(jù)間接跳轉(zhuǎn)指令程序計(jì)數(shù)器輸出的定時(shí)圖。
圖32是根據(jù)異常和間接跳轉(zhuǎn)指令的程序計(jì)數(shù)器輸出的定時(shí)圖。
圖33示出指令/數(shù)據(jù)地址跟蹤觸發(fā)器的時(shí)間圖。
圖34示出響應(yīng)異常產(chǎn)生指令而產(chǎn)生的指令/數(shù)據(jù)地址跟蹤觸發(fā)器的定時(shí)圖。
圖35示出響應(yīng)間接指令而產(chǎn)生的指令/數(shù)據(jù)跟蹤觸發(fā)器的定時(shí)圖。
圖36示出當(dāng)調(diào)試異常發(fā)生時(shí)的輸出信號PCST[2:0]的定時(shí)圖。
圖37示出當(dāng)調(diào)試異常發(fā)生的同時(shí)還提供目標(biāo)程序計(jì)數(shù)器的輸出時(shí)的信號PCST[2:0]的定時(shí)圖。
圖38示出調(diào)試方式之后在正常方式被恢復(fù)時(shí)的信號PCST[2:0]的定時(shí)圖。
圖39示出目標(biāo)程序計(jì)數(shù)器的輸出的定時(shí)圖。
圖40示出下一個(gè)間接轉(zhuǎn)換發(fā)生而且目標(biāo)程序計(jì)數(shù)器提供輸出時(shí)的定時(shí)圖。
圖41示出異常發(fā)生的同時(shí)目標(biāo)程序計(jì)數(shù)器提供輸出的定時(shí)圖。
圖42示出圖5所示的調(diào)試模塊的外部接口電路。
圖43示出擴(kuò)展的IBS寄存器。
圖44示出根據(jù)本發(fā)明的另一個(gè)實(shí)施例的調(diào)試系統(tǒng)。
具體實(shí)施例方式調(diào)試系統(tǒng)具有用戶目標(biāo)系統(tǒng)70和調(diào)試器60。
目標(biāo)系統(tǒng)70具有微處理器10、存貯器40和輸入輸出部件50。微處理器10具有調(diào)試功能。
微處理器10具有處理機(jī)內(nèi)核20和調(diào)試模塊30。處理機(jī)內(nèi)核20通過處理機(jī)總線80訪問存貯器40和輸入/輸出部件50并執(zhí)行程序。處理機(jī)內(nèi)核20通過內(nèi)部調(diào)試接口和處理機(jī)總線80連接到調(diào)試模塊。調(diào)試模塊30通過外部調(diào)試接口連接到調(diào)試器60。
調(diào)試系統(tǒng)采用調(diào)試方式執(zhí)行監(jiān)控程序;還采用正常方式執(zhí)行用戶程序。
〔調(diào)試方式〕處理機(jī)內(nèi)核20產(chǎn)生調(diào)試異常,或者產(chǎn)生調(diào)試復(fù)位以啟動調(diào)試方式。處理機(jī)內(nèi)核20跳轉(zhuǎn)到調(diào)試異常向量地址FF20-0200或者跳轉(zhuǎn)到調(diào)試復(fù)位向量地址FF20-0000并設(shè)置(assert)調(diào)試方式信號DM。通過這些向量地址在調(diào)試器60中訪問存貯器。處理機(jī)內(nèi)核20通過調(diào)試模塊30去執(zhí)行存放在調(diào)試程序60中的監(jiān)控程序。監(jiān)控程序通過指定用戶程序首地址和末地址以及對存貯器和寄存器讀、寫執(zhí)行和控制用戶程序。處理機(jī)內(nèi)核20可以通過執(zhí)行返回指令返回到正常方式并執(zhí)行用戶程序。這樣,處理機(jī)內(nèi)核20跳轉(zhuǎn)到由返回指令所指定的地址,并對調(diào)試方式信號DM取反。
〔正常方式〕在正常方式下,調(diào)試系統(tǒng)執(zhí)行用戶程序,同時(shí),跟蹤程序計(jì)數(shù)器。通過產(chǎn)生一個(gè)調(diào)試異常,或者通過硬件斷點(diǎn)、軟件斷點(diǎn)或調(diào)試中斷產(chǎn)生的用于處理機(jī)內(nèi)核20的調(diào)試復(fù)位信號可以使調(diào)試系統(tǒng)從正常方式轉(zhuǎn)換到調(diào)試方式。
在正常方式下,能夠?qū)Τ绦蛴?jì)數(shù)器跟蹤功能、硬件斷點(diǎn)功能、軟件斷點(diǎn)功能、調(diào)試中斷功能、調(diào)試復(fù)位功能和跟蹤觸發(fā)的功能進(jìn)行解釋。
當(dāng)處理機(jī)內(nèi)核20執(zhí)行存放在存貯器40的用戶程序的同時(shí),程序計(jì)數(shù)器跟蹤功能對程序計(jì)數(shù)器中的值進(jìn)行跟蹤。在處理機(jī)內(nèi)核20執(zhí)行用戶程序時(shí),程序計(jì)數(shù)器信息被發(fā)送到內(nèi)部調(diào)試接口,調(diào)試模塊30處理該信息并通過外調(diào)試接口將已處理的信息送到調(diào)試器60。
當(dāng)有預(yù)設(shè)定地址的指令在執(zhí)行、或當(dāng)預(yù)設(shè)定地址的數(shù)據(jù)被存取時(shí),硬件斷點(diǎn)功能產(chǎn)生一個(gè)調(diào)試異常,使得處理機(jī)內(nèi)核20執(zhí)行監(jiān)控程序。更確切地說,就是調(diào)試模塊30對處理機(jī)內(nèi)核20執(zhí)行的指令的地址與存放在調(diào)試模塊30的地址進(jìn)行比較、或者把處理機(jī)內(nèi)核20存取數(shù)據(jù)的地址與存放在調(diào)試模塊30的數(shù)據(jù)地址進(jìn)行比較,或是把處理機(jī)內(nèi)核20提供的數(shù)據(jù)與存貯在調(diào)試模塊30的數(shù)據(jù)進(jìn)行比較,如果他們之間彼此符合,調(diào)試模塊向處理機(jī)內(nèi)核20發(fā)出調(diào)試異常請求或調(diào)試中斷請求。
軟件斷點(diǎn)功能產(chǎn)生一條導(dǎo)致調(diào)試異常的軟件斷點(diǎn)指令,使得處理機(jī)內(nèi)核20執(zhí)行監(jiān)控程序。
調(diào)試中斷功能設(shè)置一個(gè)產(chǎn)生調(diào)試異常的調(diào)試中斷信號,使得處理機(jī)內(nèi)核20執(zhí)行監(jiān)控程序。
調(diào)試復(fù)位功能設(shè)置一個(gè)使調(diào)試復(fù)位的調(diào)試復(fù)位信號,對處理機(jī)內(nèi)核20和調(diào)試模塊30的內(nèi)部狀態(tài)初始化。然后,處理機(jī)內(nèi)核20進(jìn)行調(diào)試方式,并從調(diào)試復(fù)位向量地址FF20-0000,啟動調(diào)試程序。
跟蹤觸發(fā)功能使得微處理器10發(fā)出一個(gè)表明有預(yù)設(shè)定地址的指令執(zhí)行或預(yù)設(shè)定地址的數(shù)據(jù)被存取的外部信號。為了響應(yīng)該信號,調(diào)試器60接通/關(guān)斷程序計(jì)數(shù)器跟蹤功能。在調(diào)試模塊30把被處理器內(nèi)核20執(zhí)行的指令地址與存貯在調(diào)試模塊30的指令地址進(jìn)行比較,或把被處理器內(nèi)核20存取的數(shù)據(jù)的地址與存貯在調(diào)試模塊30的數(shù)據(jù)地址進(jìn)行比較,或是把從處理器內(nèi)核20發(fā)送到內(nèi)部調(diào)試接口和處理機(jī)總線80的數(shù)據(jù)與存貯在調(diào)試模塊30的數(shù)據(jù)進(jìn)行比較之后,如果它們之間彼此相符合,向調(diào)試器60提供觸發(fā)器信息,實(shí)現(xiàn)跟蹤觸發(fā)功能。
調(diào)試模塊30的詳細(xì)說明。
圖5是調(diào)試模塊30的內(nèi)部框圖。
調(diào)試模塊30含存指令/數(shù)據(jù)地址斷點(diǎn)電路31、程序計(jì)數(shù)器跟蹤器32、處理機(jī)總線斷點(diǎn)電路33、串行監(jiān)控總線電路34、寄存器電路35、外部接口電路36和時(shí)鐘發(fā)生器37。
指令/數(shù)據(jù)地址斷點(diǎn)電路31通過內(nèi)部調(diào)試接口連到處理機(jī)內(nèi)核20。電路31把處理機(jī)20提供的指令地址與設(shè)置在寄存器電路35的指令地址比較,如果他們相符合,向處理器內(nèi)核20提供指令地址斷點(diǎn)異常請求。電路31還把處理器內(nèi)核20提供的數(shù)據(jù)地址與設(shè)置在寄存器電路35的數(shù)據(jù)地址相比較,如果他們彼此相符合,向處理機(jī)內(nèi)核20提供一個(gè)數(shù)據(jù)地址斷點(diǎn)異常請求。
程序計(jì)數(shù)器跟蹤32通過內(nèi)部調(diào)試接口連接到處理機(jī)內(nèi)核20,以便處理由處理機(jī)內(nèi)核20提供的程序計(jì)數(shù)器跟蹤信息,并將已處理的信息提供給外部接口電路36。
處理機(jī)總線斷點(diǎn)電路33通過處理器總線80連到處理機(jī)內(nèi)核20。電路33監(jiān)控在處理機(jī)總線80的總線周期,當(dāng)用于設(shè)置在寄存器電路35中的地址和數(shù)據(jù)的總線周期進(jìn)行時(shí),向處理機(jī)內(nèi)核20發(fā)出異常請求。
串行監(jiān)控總線電路34通過處理器總線80連到處理機(jī)內(nèi)核20,并且當(dāng)處理機(jī)內(nèi)核20執(zhí)行調(diào)試器60的監(jiān)控程序時(shí),起接口作用。
寄存器電路35包括控制寄存器,用于控制調(diào)試模塊30各種功能。寄存器35通過處理器總線80和內(nèi)部調(diào)試接口連接到處理機(jī)內(nèi)核20,使得處理機(jī)內(nèi)核20能夠讀、寫控制寄存器的內(nèi)容。控制寄存器的內(nèi)容被送到調(diào)試模塊30的各個(gè)單元和處理機(jī)內(nèi)核20,以控制調(diào)試功能。
外部接口電路36使調(diào)試模塊30的程序計(jì)數(shù)器跟蹤32和串行監(jiān)控總線電路34以及處理機(jī)內(nèi)核20與調(diào)試器60相接口。
時(shí)鐘發(fā)生器37將時(shí)鐘信號CLK分頻,并向串行監(jiān)控總線電路34提供時(shí)鐘信號CLK2。
〔外部信號〕調(diào)試模塊30采用下面8種專用的接口信號與外部調(diào)試器60通信1.SDAD/TPC(輸出)2.SDI/DINT*(輸入)3.DCLK(輸出)4.DRESET*(輸入)5至7、PCST〔2:0〕(輸出)8.DBGE*(輸入)(1)、調(diào)式時(shí)鐘信號DCLK(輸出)這個(gè)信號是送到調(diào)試器60的時(shí)鐘輸出信號,用來控制串行監(jiān)控總線和程序計(jì)數(shù)器跟蹤接口的定時(shí)。用于串行監(jiān)控總線的操作,這個(gè)信號是由處理機(jī)內(nèi)核20的操作時(shí)鐘信號的頻率二分頻形成的。
(2)、調(diào)試復(fù)位信號DRESET*(輸入到上拉(pull-up)端鈕)。
這個(gè)信號是低有效的信號(low-active),它的設(shè)置使調(diào)試模塊30初始化,而無須考慮輸入信號DBGE*。當(dāng)不使用調(diào)試器60時(shí),該信號端鈕斷開。
(3)、程序計(jì)數(shù)器跟蹤狀態(tài)信號PCST〔2:0〕(輸出)這個(gè)信號表示下列程序計(jì)數(shù)器跟蹤狀態(tài)和串行監(jiān)控總線方式111流水線失速狀態(tài)(STL)110已獲取(Taken)轉(zhuǎn)移/跳轉(zhuǎn)狀態(tài)(JMP)(具有程序計(jì)數(shù)器輸出)101已獲取轉(zhuǎn)移/跳轉(zhuǎn)狀態(tài)(BRT)(沒有程序計(jì)數(shù)器輸出)100異常狀態(tài)(EXP)(具有異常向量碼輸出)011順序異常狀態(tài)(SEQ)(指令運(yùn)行)010在流水線失速情況下,跟蹤觸發(fā)器輸出狀態(tài)(TST)001運(yùn)行時(shí),跟蹤觸發(fā)器輸出狀態(tài)(TSQ)000調(diào)試方式(DBM)(0低電平,1高電平)(4)、調(diào)試器允許信號DBGE*(輸入到上拉端鈕)這個(gè)信號指示是否調(diào)試器被連接。如果調(diào)試器60斷開,信號是高;如果調(diào)試器被連接,則信號是低。
如果信號DBGE*是高,表示調(diào)試器斷開,處理器內(nèi)核20的信號DEV是低,并且調(diào)試異常向量地址是FF200200。用戶復(fù)位信號RESET*使調(diào)試模塊30的功能初始化,并且禁止調(diào)試器60的功能。這時(shí),輸出信號SDA0/TPC、DCLK和PCST〔2:0〕變成高。
如果信號DBGE*是低,則表示調(diào)試器60接通,信號DEV是高,調(diào)試異常向量地址是FF20-0200(在監(jiān)控區(qū)域)。用戶復(fù)信號不對調(diào)試模塊30初始化。
(5)、串行數(shù)據(jù)和地址輸出/目標(biāo)程序計(jì)數(shù)器信號SDA0/TPC(輸出)當(dāng)信號PCST〔2:0〕表示調(diào)試方式(DBM)時(shí),這個(gè)信號做為串行數(shù)據(jù)和地址輸出信號SDA0,當(dāng)信號PCST〔2:0〕不表示調(diào)試方式時(shí),則這個(gè)信號做為目標(biāo)程序計(jì)器信號TPC。
當(dāng)信號PCST〔2:0〕表示調(diào)試方式時(shí),則信號SDA0以串行方式,一位一位地提供數(shù)據(jù)、地址、讀/寫和字節(jié)允許信號。在一個(gè)總線周期開始之前,為時(shí)鐘周期提供一個(gè)低電平起始位信號。
在讀操作時(shí),按低電平起始位,地址位A〔2〕到A〔19〕,讀/寫位R/W*和字節(jié)允許位BE〔0〕*到BE〔3〕*的順序提供信號。在寫操作時(shí),按低電平起始位,A〔2〕到A〔9〕,R/W*,BE〔0〕*到BE〔3〕*和數(shù)據(jù)位D〔0〕到D〔31〕。
當(dāng)信號PCST〔2:0〕表示正常方式時(shí),則信號TPC提供轉(zhuǎn)移/跳轉(zhuǎn)指令的目標(biāo)地址以及異常/中斷的向量數(shù)。目標(biāo)地址從位A〔2〕到位A〔31〕順序提供。
(6)、串行數(shù)據(jù)輸入/調(diào)試中斷信號SDI/DINT*(輸入到上拉端鈕)當(dāng)信號PCST〔2:0〕表示調(diào)試方式時(shí),則這個(gè)信號做為串行監(jiān)控總線接口信號SDI;當(dāng)信號PCST〔2:0〕表示正常方式時(shí),則這個(gè)信號做為程序計(jì)數(shù)器跟蹤接口信號DINT*。
信號SDI是數(shù)據(jù)輸入信號,在讀操作中,當(dāng)接收一個(gè)在時(shí)鐘周期內(nèi)為低的外部起始位時(shí),數(shù)據(jù)輸入操作從下一個(gè)時(shí)鐘開始。當(dāng)在寫操作中有低電平輸入時(shí),則總線周期結(jié)束。
在讀操作中,數(shù)據(jù)各位按低電平起始位,數(shù)據(jù)位D〔0〕到D〔31〕的順序提供。在寫操作中,僅接收低電平結(jié)束位。
信號DINT*是來自調(diào)試器60的調(diào)試中斷輸入信號。當(dāng)不使用調(diào)試器60時(shí),則端鈕是斷開的。
圖6是寄存器電路35的詳圖。
寄存器電路35由地址譯碼器351和寄存器部位352組成。
地址譯碼器351接收經(jīng)由處理器總線80從處理器內(nèi)核20送來的地址輸入信號A〔31:0〕、讀信號RD*、寫信號WR*、調(diào)試方式信號DM和內(nèi)核時(shí)鐘信號CLK。當(dāng)讀寄存器部位352的一個(gè)寄存器時(shí),地址譯碼器351接收指定寄存器的設(shè)備地址碼,斷言一個(gè)對應(yīng)于該寄存器的寄存器讀信號,并斷言一個(gè)送到處理器內(nèi)核20的讀確認(rèn)信號RDACK*。
當(dāng)向寄存器部件352寄存器按給定地址寫入數(shù)據(jù)時(shí),地址譯碼器351對應(yīng)于該寄存器的寄存器寫信號、讀確認(rèn)信號RDACK*和寫確認(rèn)信號WRACK*。
在正常方式下,寄存器部件352是不可存取的。這樣,在讀總線周期地址譯碼器351只設(shè)置送到處理器內(nèi)核20的讀確認(rèn)信號RDACK*,而在寫總線周期,僅設(shè)置送到處理器內(nèi)核20的寫確認(rèn)信號WARCK*,因此,讀出的值是不確定的,而寫入數(shù)據(jù)也是無效的。
如果寄存器DCR的存貯保護(hù)位MP被調(diào)置,即使在調(diào)試方式下,寄存器部件352的寄存器,除了寄存器DCR外都是不可存取的。這樣,在讀總線周期,地址譯碼器351只設(shè)置讀確認(rèn)信號RDACK*;在寫總線周期僅設(shè)置寫確認(rèn)信號WRACK*,因此,讀出來的值是不確定的,寫入的數(shù)據(jù)也無效。
表1 是地址譯碼的操作
寄存器部件352包括調(diào)試控制寄存器(DCR)指令。斷點(diǎn)狀態(tài)(IBS)寄存器、數(shù)據(jù)、斷點(diǎn)狀態(tài)(DBS)寄存器、處理器總線斷總狀態(tài)(PBS)寄存器、指令斷點(diǎn)地址0(IBA0)寄存器、指令、斷點(diǎn)控制0(IBC0)寄存器,數(shù)據(jù)斷點(diǎn)地址0(DBA0)寄存器、數(shù)據(jù)、斷點(diǎn)控制0(DBC0)寄存器、處理器總線斷點(diǎn)地址0(PBA0)寄存器、處理器總線斷點(diǎn)數(shù)據(jù)0(PBD0)寄存器、處理器總線斷點(diǎn)數(shù)據(jù)屏蔽0(PBM0)寄存器和處理器總線斷點(diǎn)控制0(PBC0)寄存器。
當(dāng)調(diào)試復(fù)位信號DRESET*被設(shè)置,或是當(dāng)為高電平,而表示調(diào)試器60斷開的信號DEGE*用戶復(fù)位信號RESET*激活時(shí),則所有寄存復(fù)位。
解釋寄存器功能圖7是調(diào)試控制寄存器(DCR)跟蹤方式位TM(復(fù)位到0)這一位規(guī)定程序計(jì)數(shù)器跟蹤操作0實(shí)時(shí)提供程序計(jì)數(shù)器跟蹤信息1提供完整的程序計(jì)數(shù)器跟蹤信息(不保證實(shí)時(shí)操作)。
位TM被送到程序計(jì)數(shù)器跟蹤器32。
屏蔽用戶復(fù)位MRST(復(fù)位到0)這一位規(guī)定用戶復(fù)位屏蔽0調(diào)試異常時(shí),屏蔽用戶復(fù)位1調(diào)試異常時(shí),允許用戶復(fù)位位MRST被送到外部接口電路36。
存貯保護(hù)位MP(復(fù)位到1)
0在調(diào)試方式下,允許對監(jiān)控區(qū)進(jìn)行寫操作。
1在調(diào)試方式下,除了寄存器DCR阻止寫操作之處,保護(hù)監(jiān)控區(qū)域(FF20-0000到FF3F-FFFF)位MP被送到地址譯碼器351和串行監(jiān)控總線電路34。
屏蔽非屏蔽中斷位MNmI(復(fù)位到1)0屏蔽處理器內(nèi)核20的NmI。
1允許NmI。
位MVmI被送到處理器內(nèi)核20。
屏蔽中斷位MInt(復(fù)位到1)0屏蔽處理器內(nèi)核20的外中斷(Int〔5:0〕*)1允許外中斷(Int〔5:0〕*)位MInt被送到外部接口電路36。
Endian存貯器位ENM。
當(dāng)用戶進(jìn)行復(fù)位操作時(shí),這一位表示Endian信號的值,這一位是只讀位,對該位的寫操作是無效的。
0小的endian。
1大的endian。
當(dāng)用戶復(fù)位信號RESET*為低,在內(nèi)核時(shí)鐘信號上升沿,通過鎖存endian信號形成位ENM。
暫停狀態(tài)位HIS當(dāng)信號DINT*有效,這一位表示暫停信號的值。位HIS是只讀位,對這一位的寫操作是無效的。
0非暫停狀態(tài)1暫停狀態(tài)通過在調(diào)試中斷信號DINT的上升沿鎖住暫停信號形成HIS位。
打盹(doze)狀態(tài)位DZS。
當(dāng)信號DINT*有效這一位表示打盹信號的值。該位是只讀位,對這一位的寫操作是無效的。
0非打盹狀態(tài)1打盹狀態(tài)在調(diào)試中斷信號DINT*的下降邊鎖存打盹信號形成位DZS。
圖8是指令斷點(diǎn)地址0寄存器IBA0。
指令斷點(diǎn)地址字段IBA。
寄存器IBA0的字段存貯指令斷點(diǎn)地址,它是虛擬地址。字段IBA送到指令/數(shù)據(jù)地址斷點(diǎn)電路31。
圖9是指令斷點(diǎn)控制0寄存器IBC0。
斷點(diǎn)允許位BE(復(fù)位到0)這一位規(guī)定指令地址斷點(diǎn)功能的有效性。
0禁止指令地址斷點(diǎn)功能。
1允許指令地址斷點(diǎn)功能。
如果將被運(yùn)行的指令的虛擬地址與設(shè)置在寄存器IBA的地址相符合,且當(dāng)位BE為1,則向處理器內(nèi)核20發(fā)出指令斷點(diǎn)請求,使寄存器IBS的位、BS0置位。(處理器內(nèi)核20產(chǎn)生指令地址斷點(diǎn)異常,剛好在運(yùn)行的指令地址符合之前)位BE送往到斷點(diǎn)電路31。
跟蹤觸發(fā)允許位TE(復(fù)位置0)。
這一位表示指令地址跟蹤觸發(fā)功能的有效性。
0禁止指令地址跟蹤觸發(fā)功能
1允許指令地址跟蹤解發(fā)功能。
如果被運(yùn)行的指令的虛擬地址與寄存器IBA0地址設(shè)置相符合,并且表明允許指令地址跟蹤觸發(fā)功能的位TE為1,則信號PCST〔2:0〕代表跟蹤觸發(fā)的輸出狀態(tài)TST(0/0)或TSQ(001),使得寄存器IBS的位BS0置位。位TE送往斷點(diǎn)電路31。
圖10是指令中斷狀態(tài)寄存器IBS中斷通道號字段BCN該字段表示一個(gè)指令斷點(diǎn)的通道號。它是只讀字段,對該字段的寫操作將是無效的。
0000空(保留)00011個(gè)通道111115個(gè)通道(保留)斷點(diǎn)狀態(tài)0位BS0這是一個(gè)表明產(chǎn)生指令地址、斷點(diǎn)或指令地址跟蹤觸發(fā)的狀態(tài)位。
0無指令地址斷點(diǎn),也沒有通道0的指令地址跟蹤觸發(fā)。
1指令地址斷點(diǎn)異常的發(fā)生或指令地址跟蹤觸發(fā)并且寄存器IBC0中位BE為1或TE為1則表明指令的虛地址與設(shè)置地址相符合。
通過向BS0寫0將BS0清除。當(dāng)一個(gè)從斷點(diǎn)電路31發(fā)出的BS0置位信號被調(diào)置則BS0被置位。
圖11是數(shù)據(jù)斷點(diǎn)地址0寄存器DBA0數(shù)據(jù)斷點(diǎn)地址字段DBA。
該字段存放一個(gè)數(shù)據(jù)斷點(diǎn)地址,這個(gè)地址是虛地址。這個(gè)字段送往斷點(diǎn)電路31。
圖12是數(shù)據(jù)斷點(diǎn)控制0寄存器PBC0。
斷點(diǎn)允許位BE(復(fù)位置0)這個(gè)位規(guī)定數(shù)據(jù)地址斷點(diǎn)功能的有效性。
0禁止數(shù)據(jù)地址斷點(diǎn)功能。
1允許數(shù)據(jù)地址斷點(diǎn)功能若被存取的數(shù)據(jù)的虛地址與在寄存器DBA0中設(shè)置的地址相符合且寄存器DBA0的位BE為1,將產(chǎn)生一個(gè)數(shù)據(jù)斷點(diǎn)請求送往處理器內(nèi)核20,并置位寄存器DBS的位BS0。位BE被送往斷點(diǎn)電路31。
跟蹤觸發(fā)允許位TE(復(fù)位置0)這個(gè)位規(guī)定數(shù)據(jù)地址跟蹤觸發(fā)功能的有效性。
0禁止數(shù)據(jù)地址跟蹤觸發(fā)功能1允許數(shù)據(jù)地址跟蹤觸發(fā)功能若被存取的數(shù)據(jù)的虛地址與寄存器DBA0中設(shè)置的地址相符合,并且位TE為1,則表明允許數(shù)據(jù)地址跟蹤觸發(fā)功能。信號PCST〔2:0〕表示跟蹤觸發(fā)輸出狀態(tài)TST(0/0)或TSQ(001),并且寄存器DBS的位BS0被置位。位TE被送往斷點(diǎn)電路31。
圖13是數(shù)據(jù)斷點(diǎn)狀態(tài)寄存器DBS。
斷點(diǎn)通道號字段BCN該字段表明數(shù)據(jù)斷點(diǎn)的通道號。它是只讀的,對該字段的寫操作是無效的。
0000空(保留)。
00011個(gè)通道。
111115個(gè)通道(保留)斷點(diǎn)狀態(tài)0位BS0。
這是一個(gè)表明一個(gè)數(shù)據(jù)地址斷點(diǎn)或數(shù)據(jù)地址跟蹤觸發(fā)已經(jīng)發(fā)生的狀態(tài)位。
0沒有數(shù)據(jù)地址斷點(diǎn)或通道0的數(shù)據(jù)地址跟蹤觸發(fā)。
1在數(shù)據(jù)的虛地址與設(shè)置地址相符合,并且位BE為1或寄存器DBC0中的TE為1時(shí)發(fā)生了數(shù)據(jù)地址斷點(diǎn)異?;驍?shù)據(jù)地址跟蹤觸發(fā)。
通過向BS0寫0將BS0清除。當(dāng)從斷點(diǎn)電路31發(fā)出的BS0置位信號被設(shè)置后,BS0被置位。
圖14是處理器總線斷點(diǎn)地址寄存器PBA0。
處理器總線斷點(diǎn)地址字段PBA。
該字段存儲處理器總線斷點(diǎn)跟蹤觸發(fā)功能的斷點(diǎn)地址。這個(gè)地址是物理地址。該字段PBA被送往處理器總線斷點(diǎn)電路33。
圖15是處理器總線斷點(diǎn)數(shù)據(jù)0寄存器PBD0。
處理器總線斷點(diǎn)數(shù)據(jù)字段PBD。
該字段存放處理器總線斷點(diǎn)/跟蹤觸發(fā)功能的斷點(diǎn)數(shù)據(jù)。字段PBD被送往處理器總線斷點(diǎn)電路33。
圖16是處理器總線屏蔽0寄存器PBM0。
處理器總線斷點(diǎn)數(shù)據(jù)屏蔽字段PBM。
該字段表示禁止(屏蔽)某些存儲在寄存器PBD0中的數(shù)據(jù)比較的位。這些位是根據(jù)處理機(jī)總線斷點(diǎn)/跟蹤觸發(fā)功能而設(shè)置的位。
0允許寄存器PBD0中的相應(yīng)位進(jìn)行比較。
1禁止寄存器PBD0中的相應(yīng)位進(jìn)行比較。
字段PBM被送往處理器總線斷點(diǎn)電路33。
圖17是處理器總線控制0寄存器PBC0。
斷點(diǎn)允許位BE(復(fù)位置0)這一位規(guī)定處理器總線斷點(diǎn)的有效性。
0禁止處理器總線斷點(diǎn)。
1允許處理器總線斷點(diǎn)。
若一個(gè)地址和數(shù)據(jù)與設(shè)置的值相符合,則一個(gè)調(diào)試中斷請求被發(fā)送給處理器內(nèi)核20,位BE被送往處理器總線斷點(diǎn)電路33。
跟蹤觸發(fā)器允許位TE(復(fù)位置0)。
該位規(guī)定一個(gè)處理器總線跟蹤觸發(fā)的有效性。
0禁止處理器總線跟蹤觸發(fā)。
1允許處理器總線跟蹤觸發(fā)。
若一個(gè)地址和數(shù)據(jù)與設(shè)置的值相符合,那么信號PCST〔2:0〕代表跟蹤觸發(fā)輸出狀態(tài)TST(0/0)或TSQ(001)。位TE被送往處理器總線斷點(diǎn)電路33。
從非高速緩存區(qū)取指令位IFUC。
該位規(guī)定一個(gè)地址和數(shù)據(jù)是否和設(shè)定值比較,用于從非高速緩存區(qū)取指令。
0禁止比較。
1允許比較位IFUC被送往處理器總線斷點(diǎn)電路33。
從非高速緩存區(qū)數(shù)據(jù)加載位DLUC。
該位規(guī)定高速緩存區(qū)加載的數(shù)據(jù)是否進(jìn)行地址和數(shù)據(jù)的比較。
0禁止比較。
1允許比較。
位DLUC被送往處理器總線中斷電路33。
存儲數(shù)據(jù)到非高速緩存區(qū)位DSUC。
該位表示當(dāng)數(shù)據(jù)被存儲到非高速緩存區(qū)時(shí),是否進(jìn)行地址和數(shù)據(jù)的比較。
0禁止比較。
1允許比較。
位DSUC是被送往處理器總線斷點(diǎn)電路33。
存儲數(shù)據(jù)到高速緩存區(qū)位DSCA。
該位規(guī)定當(dāng)數(shù)據(jù)被存儲到高速緩存區(qū)時(shí),是否進(jìn)行地址和數(shù)據(jù)的比較。
0禁止比較。
1允許比較。
位DSCA被送往處理器斷點(diǎn)電路33。
圖18是處理器總線斷點(diǎn)狀態(tài)寄存器PBS。
斷點(diǎn)通道號字段BCN。
該字段規(guī)定處理器總線斷點(diǎn)的通道號。
00000通道(保留)。
00011通道…111115通道(保留)斷點(diǎn)狀態(tài)0位BS0(復(fù)位置0)這是一個(gè)表示是否發(fā)生了處理器總線斷點(diǎn)或一個(gè)處理器總線跟蹤觸發(fā)的狀態(tài)位。
0沒有通道0的處理器總線斷點(diǎn)或處理器總線跟蹤觸發(fā)。
1通道0的處理器總線斷點(diǎn)或處理器總線跟蹤觸發(fā),且BE是1或在寄存器PBE0中位TE被置1。
通過向BS0寫0將它清除。若位BE為1,到處理器內(nèi)核20的斷點(diǎn)調(diào)試請求也被清除。當(dāng)一個(gè)從處理器總線斷點(diǎn)電路33發(fā)出的BS0置位信號被設(shè)置,位BS0被置位。
圖19是指令/數(shù)據(jù)地址斷點(diǎn)電路31,該電路具有一個(gè)指令地址比較器311、一個(gè)數(shù)據(jù)地址比較器312和“與”電路313、314、315和316。
若斷點(diǎn)允許位BE或寄存器IBC0中的觸發(fā)允許位TE被置位,并且一個(gè)從處理器內(nèi)核20發(fā)出的指令地址允許信號被設(shè)置,那么,比較器311將從處理器內(nèi)核20來的輸入指令地址和存儲在寄存器IBA0中的地址進(jìn)行比較。若它們符合,則比較器311給寄存器IBS中的位BS0提供一個(gè)信號使它置位,若寄存器IBC0中的BE位在這時(shí)置位,“與”電路313的輸出被設(shè)置,則提供給處理器內(nèi)核20一個(gè)指令地址斷點(diǎn)請求。若寄存器IBC0的TE位被置位,“與”電路314的輸出被設(shè)置,則提供給程序計(jì)數(shù)器跟蹤器32一個(gè)指令地址跟蹤觸發(fā)請求。
若寄存器DBC0的位BE或TE被置位,并且若一個(gè)從處理器內(nèi)核20發(fā)出的數(shù)據(jù)地址允許信號被設(shè)置,那么,比較器312對從處理器內(nèi)核20發(fā)出的輸入數(shù)據(jù)地址與存儲在寄存器DBA0中的地址進(jìn)行比較。若它們相符合,比較器312提供一個(gè)信號來置位寄存器DBA0中的位BS0。若寄存器DBC0中的位BE在這時(shí)置位,“與”電路315的輸出被設(shè)置,則提供一個(gè)數(shù)據(jù)地址中斷請求給處理器內(nèi)核20。若寄存器DBC0的位TE被置位,“與”電路316的輸出被設(shè)置,則提供一個(gè)數(shù)據(jù)地址跟蹤觸發(fā)請求給程序計(jì)數(shù)器跟蹤器。
圖20是處理器總線斷點(diǎn)電路33的詳圖。
電路33監(jiān)控處理器總線的總線操作,并且若在寄存器中發(fā)生了用于地址和數(shù)據(jù)設(shè)置的總線操作,電路33則提供一個(gè)調(diào)試中斷請求給處理器內(nèi)核20。
電路33具有一個(gè)處理器總線地址比較器331,一個(gè)帶有屏蔽的數(shù)據(jù)比較器332和“與”電路333,334和335。
當(dāng)寄存器PBC0的斷點(diǎn)允許位BE或觸發(fā)允許位TE被置位,比較器331將處理總線中的地址和在設(shè)置在寄存器PBA0中的地址進(jìn)行比較。寄存器PBC0的位DSCA,DSUC,DLUC和IFUC規(guī)定關(guān)于非高速緩存區(qū)/高速緩存區(qū)、存儲數(shù)據(jù)/加載數(shù)據(jù)和指令獲取的比較的有效性。表2是比較器331的操作。它們是根據(jù)信號ID(指示是否為指定獲取或數(shù)據(jù)存取),讀信號RD*,寫信號WR*,和信號CACHE*而進(jìn)行的。
表2
在讀信號RD*為低的讀總線周期中,數(shù)據(jù)比較器332將從處理器總線80輸入的數(shù)據(jù)DIN〔31:0〕和在寄存器PBD0中存儲的數(shù)據(jù)進(jìn)行比較,它只比較那些在寄存器PBM0中相應(yīng)位為0的位。在寫信號WR*為低的寫總線周期中,比較器332將處理器總線80的輸出數(shù)據(jù)DOUT〔31:0〕和在寄存器PBD0中存儲的數(shù)據(jù)進(jìn)行比較。它只比較在寄存器PBM0中相應(yīng)位為0的那些位。
若比較器331和332的每個(gè)輸出均為高,亦既,如果地址和數(shù)據(jù)與設(shè)置的地址和數(shù)據(jù)相符合。“與”電路333的輸出被設(shè)置,則請求寄存器電路35設(shè)置寄存器PBS的位BS0。若這時(shí)寄存器PBC0的位BE被置位,“與”電路334的輸出被設(shè)置,則提供給處理器內(nèi)核20一個(gè)調(diào)試中斷請求。若寄存器PBC0的TE位被置位,則“與”電路335的輸出被設(shè)置,發(fā)出處理器總線跟蹤觸發(fā)請求給程序計(jì)數(shù)器跟蹤器32。
圖21是串行監(jiān)控總線電路34的詳圖。電路34具有一個(gè)串行監(jiān)控總線控制器341,一個(gè)串行輸出電路342和一個(gè)串行輸入電路343。
串行監(jiān)控總線控制器341以處理器總線80接收數(shù)據(jù)輸出信號DOUT〔31:0〕、地址信號A〔31:20〕、讀信號RD、寫信號WR*、協(xié)處理器讀信號CPRD*、協(xié)處理器寫信號CPWR*和調(diào)試方式信號DM、控制器341也接收來自時(shí)鐘發(fā)生器37產(chǎn)生的時(shí)鐘信號CLK2、寄存器電路35的寄存器DCR的MP位以及外部接口電路產(chǎn)生的信號SDI。
控制器341向處理器總線80提供一個(gè)讀確認(rèn)信號RDACK*。寫確認(rèn)信號WRACK*。協(xié)處理器讀確認(rèn)信號CPRDACK*、和協(xié)處理器寫確定信號CPWRACK*、控制器341向串行輸出電路342提供一個(gè)串行監(jiān)控總線讀/寫信號,串行監(jiān)控總線字節(jié)允許信號、串行監(jiān)控總線數(shù)據(jù)信號、和用于電路342的輸出移位寄存器的數(shù)據(jù)加載信號和輸出移位信號,控制器341向串行輸入電路343提供用于輸入移位寄存器345的輸入移位信號和用于輸出緩沖區(qū)346的輸出允許信號。串行監(jiān)控總線讀/寫信號在讀總線操作期間為高,在寫總線操作期間為低。
當(dāng)一個(gè)從控制器341到輸出移位寄存器344的數(shù)據(jù)加載信號被設(shè)置,一個(gè)起始位(固定值為低)、地址位A〔1〕到A〔19〕,串行監(jiān)控總線讀/寫信號,串行監(jiān)控總線字節(jié)允許信號,串行監(jiān)控總線數(shù)據(jù)信號被從LSB加載到輸出移位寄存器344。當(dāng)?shù)郊拇嫫?44的輸出移位信號被設(shè)置,寄存器344中的值以MSB向LSB移動一位。MSB被置為高。輸出移位寄存器344的LSB的值由輸出信號SDA0來進(jìn)位。
當(dāng)從控制器341到輸入移位寄存器345的輸入信號被設(shè)置,寄存器345的值從LSB向MSB移動一位,輸入信號SDI的值被置于LSB中。
圖21中的串行監(jiān)控總線電路34的操作將被解釋如下當(dāng)處理器內(nèi)核20在調(diào)試方式下存取從0XFF200000到0XFF2F-FFFF這個(gè)區(qū)域;或當(dāng)協(xié)處理器在調(diào)試方式下執(zhí)行讀/寫操作(CTC0,CFC0),通過串行監(jiān)控總線電路34存取調(diào)試器60中的存儲器。使用串行監(jiān)控總線的寫操作期間。電路34以串行方式一位一位地提供一個(gè)地址信號,一個(gè)總線控制信號和一個(gè)數(shù)據(jù)信號做為輸出信號SDA0在讀操作期間,電路34以串行方式一位一位地提供一個(gè)地址信號,一個(gè)總線控制信號做為輸出信號SDA0。并接收通過輸入信號SDI進(jìn)位的數(shù)據(jù)。
串行監(jiān)控總線電路34的操作按照時(shí)鐘信號CLD2進(jìn)行。CLK2是通過將處理器內(nèi)核20的操作時(shí)鐘信號CLK進(jìn)行一次分頻得到的。
a)通過讀/寫總線操作存取在讀總線操作期間,處理器內(nèi)核20提供地址A〔31:0〕來存取和設(shè)置信號RD*、當(dāng)讀確認(rèn)信號RDACK*被設(shè)置時(shí),數(shù)據(jù)DIN〔31:0〕被讀出并且總線操作結(jié)束。
在寫總線操作期間,處理器內(nèi)核20發(fā)送一個(gè)存取地址A〔31:0〕和一個(gè)要寫入的數(shù)據(jù)〔31:0〕并設(shè)置信號WR*。當(dāng)寫確認(rèn)信號WRACK*被設(shè)置時(shí),總線操作結(jié)束。
若在調(diào)試方式下,處理器內(nèi)核20對下面提到的監(jiān)控區(qū)域執(zhí)行總線操作,那么調(diào)試器60通過串行監(jiān)控總線電路34被訪問。
監(jiān)控區(qū)域在0XFF20-0000與0XFF2F-FFFF之間擴(kuò)展了1兆。
(A〔31:20〕)=1111-1111-0010(0低,1高)例如,寫總線操作用存儲指令(SW)操作將數(shù)據(jù)寫入存儲器。下面是一個(gè)存儲指令的例子SWr80X0004(r9)在這個(gè)例子中,一個(gè)存儲器地址是通過向通用寄存器r9加一個(gè)16位偏移量0X0004來獲得。要訪問監(jiān)控區(qū)域,通用寄存器的值必須提前設(shè)置到0XFF20-0000到0XFF2F-0000之間。
串行監(jiān)控總線電路34,從低位中提供地址信號A〔19:2〕,在讀操作期間提供高電平信號或在寫操作期間提供低電平信號作為輸出信號SDA0。此后,字節(jié)允許信號BE〔3:0〕*從低位開始提供。在讀操作期間,32位數(shù)據(jù)做為輸入信號SDI被接收,并以數(shù)據(jù)DIN〔31:0〕提供給處理器總線80。在寫操作期間,從處理器總線80來的數(shù)據(jù)DOUT〔31:0〕由輸出信號SDA0來進(jìn)位。
從處理器內(nèi)核20來的18位地址信號A〔19:2〕、用來存取1兆的內(nèi)存空間。
處理器內(nèi)核20的字節(jié)允許信號BE〔3:0〕送到串行監(jiān)控總線,用以存取一個(gè)字節(jié)、半個(gè)字或三個(gè)字節(jié),即使是進(jìn)行字節(jié)、半字或三字節(jié)訪問時(shí),串行總線仍然傳送32位的數(shù)據(jù)D〔31:0〕。當(dāng)寫字節(jié)、半字或三字節(jié)數(shù)據(jù)時(shí),信號BE〔3:0〕中與數(shù)據(jù)D〔31:0〕中有用字節(jié)對應(yīng)的位將被設(shè)置。在進(jìn)行讀操作時(shí),與信號BE〔3:0〕中非有效位對應(yīng)的字節(jié)將被微處理器內(nèi)核20忽略。
如果DCR寄存器的MP位為1,監(jiān)控區(qū)處于調(diào)試方式的保護(hù)之下,則對從FF20-0000到FF2F-FFFF區(qū)域內(nèi)的寫操作將被忽略。在這種情況下,串行監(jiān)控總線電路34只向微處理器內(nèi)核20返回WRACK*信號,用以終止總線操作。
在調(diào)試方式下,當(dāng)讀取FF20-0000至FF2F-FFFF區(qū)的數(shù)據(jù)時(shí),將從串行監(jiān)控總線得到正確的數(shù)值,而不必考慮MP位的值。
在正常方式下,對FF20-0000至FF2F-FFFF監(jiān)控區(qū)的寫操作將被忽略,而且讀操作的結(jié)果是不確定的。此時(shí)串行監(jiān)控總線電路34返回WRACK*或RDACK*信號到處理器內(nèi)核20并結(jié)束總線操作。
b)協(xié)處理器總線操作的存取(CTC0/CFC0)當(dāng)執(zhí)行CFC0指令時(shí),處理器內(nèi)核20執(zhí)行協(xié)處理器的讀總線操作,而執(zhí)行CTC0指令時(shí),是協(xié)處理器的寫總線操作。在協(xié)處理器總線操作時(shí),CFC0和CTC0指令被提供給處理器總線的地址A〔31:0〕,如下所示A〔31:0〕COP0 CT rt rd 0A〔31:0〕COP0 CF rt rd 0CFC0(0低電平,1高電平)rt通用寄存器rd協(xié)處理器的控制寄存器(對于串行監(jiān)控?zé)o意)在協(xié)處理器讀操作時(shí),處理器內(nèi)核20設(shè)置CPRD*信號,而當(dāng)協(xié)處理器讀確認(rèn)信號CPRDACK*被設(shè)置時(shí),讀取數(shù)據(jù)DIN〔31:0〕并結(jié)束總線操作。
在協(xié)處理器寫操作時(shí),處理器內(nèi)核20設(shè)置CPWR*信號,并提供一個(gè)處理器內(nèi)核20中的通用寄存器的值,做為數(shù)據(jù)總線信號DOUT〔31:0〕。當(dāng)協(xié)處理器寫確認(rèn)信號CPWRACK*設(shè)置時(shí),處理器內(nèi)核20結(jié)束總線操作。
處理器內(nèi)核20用指令CTC0和CFC0執(zhí)行協(xié)處理器總線操作,通過串行監(jiān)控總線存取調(diào)試器60。
串行監(jiān)控總線電路34提供每個(gè)周期傳送一位的總線周期信號,做為輸出信號SDA0。處理器內(nèi)核20的地址信號A〔19:2〕從低位提供。此后,在協(xié)處理器讀操作時(shí),是一個(gè)高電平信號,而協(xié)處理器的寫操作時(shí)是低電平信號。串行監(jiān)控總線的字節(jié)允許信號是四個(gè)時(shí)鐘周期的低電平信號,與處理器總線的BE〔3:0〕信號無關(guān)。
對CFC0指令的響應(yīng)是接收32位的輸入信號SDI并作為數(shù)據(jù)信號DIN〔31:0〕提供給處理器總線。而對GTC0指令的響應(yīng)是把處理器總線的輸出信號DOUT〔31:0〕作為輸出信號SDA0。
在調(diào)試方式下,串行監(jiān)控總線的寫操作按照GTC0指令執(zhí)行,不考慮監(jiān)控區(qū)的保護(hù),即不考慮DCR寄存器MP位的值。同樣地,串行監(jiān)控總線的讀操作按照指令CFC0執(zhí)行。
在正常方式下,根據(jù)GTC0指令,寫操作將被忽略,根據(jù)CFC0指令讀操作的結(jié)果則是不確定的,調(diào)試模塊只返回CPRDACK*和CDWRACK*信號到處理器內(nèi)核20并結(jié)束總線操作。
串行監(jiān)控總線操作的時(shí)序圖解釋如下a)串行監(jiān)控總線的讀操作。
圖22是串行監(jiān)控總線讀操作的時(shí)序圖。
(1)在周期1中,處理器內(nèi)核20啟動0XFF2F-FFFF到0XFF2F-FFFF(A〔31:20〕=1111-1111-0010)的讀操作,處理器內(nèi)核20提供地址A〔31:0〕進(jìn)行存取并設(shè)置信號RD*,同時(shí)設(shè)置用于指明所讀字節(jié)位置的字節(jié)允許信號BE〔3:0〕。
(2)在周期2中,串行監(jiān)控總線電路34確認(rèn)啟動讀操作,并提供由時(shí)鐘信號CLK2形成的一個(gè)時(shí)鐘周期的低電平信號作為輸出信號SDA0,CLK2是通過內(nèi)核時(shí)鐘信號GLK=分頻得到的。
(3)在周期3到25中,電路34提供地址位A〔2〕到A〔19〕,一個(gè)高電平位(指明讀操作),和處理器內(nèi)核20的字節(jié)允許位BE〔0〕*到BE〔3〕*作為輸出信號SDA0,每個(gè)CLK2的周期傳一位。
(4)在周期n中,調(diào)試器60在輸出數(shù)據(jù)前提供一個(gè)時(shí)鐘周期的低電平,作為信號SDI。在接收到低電平信號后,電路34在周期n+1到n+32中,以每個(gè)時(shí)鐘周期一位和速度接收數(shù)據(jù)D〔0〕到D〔3〕。
(5)在周期n+33中,電路34向處理器內(nèi)核20設(shè)置確認(rèn)信號RDACK*并提供所讀的32位數(shù)據(jù)D〔31:0〕,作為數(shù)據(jù)信號DIN〔31:0〕。
(6)在周期n+33中,處理器內(nèi)核20讀取數(shù)據(jù)信號DIN〔31:0〕,讀操作結(jié)束。
b)串行監(jiān)控總線的寫操作。
圖23是串行監(jiān)控總線寫操作的時(shí)序圖。
(1)在周期1中,處理器內(nèi)核20啟動0XFF20-0000至0XFF2F-FFFF(A〔31:20〕=1111-1111-0010)的寫操作。處理器內(nèi)核20提供一個(gè)存取地址A〔31:0〕并設(shè)置信號WR*,同時(shí)設(shè)置字節(jié)允許信號BE〔3:0〕指明所寫數(shù)據(jù)的字節(jié)位置。
(2)在周期2中,串行監(jiān)控總線電路34確認(rèn)寫操作的開始并提供時(shí)鐘信號CLK2的一個(gè)時(shí)鐘周期的低電平,作為輸出信號SDA0。
(3)在周期3到57,電路34提供地址位A〔2〕到A〔19〕、一個(gè)低電平(指明寫操作)、字節(jié)允許位BE〔0〕*到BE〔3〕*作為輸出信號SDA0,并寫入由處理器內(nèi)核20提供的數(shù)據(jù)DOUT〔0〕到DOUT〔31〕。
(4)在周期n,調(diào)試器60結(jié)束寫數(shù)據(jù)并提供一個(gè)時(shí)鐘周期的低電平,作為輸入信號SDI。
(5)在周期n+1,電路34檢測低電平信號并設(shè)置寫確認(rèn)信號WRACK*到處理器內(nèi)核20。
(6)在周期n+1,處理器內(nèi)核20結(jié)束寫操作。
c)按指令CFC0進(jìn)行讀總線操作。
圖24是根據(jù)指令CFC0的讀總線操作的時(shí)序圖。
(1)在周期1,處理器內(nèi)核20根據(jù)指令CFC0啟動協(xié)處理器讀總線操作,向處理器總線提供地址A〔31:21〕=0100 0000010并設(shè)置信號CPRD*。
(2)在周期2,串行監(jiān)控總線電路34確認(rèn)讀操作的開始并提供由CLK2信號確定的一個(gè)時(shí)鐘周期的低電平信號作為輸出信號SDA0。
(3)在周期3到20,電路34提供地址A〔31:21〕的地址位A〔2〕~A〔19〕作為輸出信號SDA0。在周期21,輸出一個(gè)時(shí)鐘周期的高電平信號指明是讀操作。在周期22至25,輸出四個(gè)時(shí)鐘周期的低電平信號而不考慮處理器總線的字節(jié)允許信號。
(4)在周期n,調(diào)試器60在提供數(shù)據(jù)之前輸出一個(gè)時(shí)鐘周期的低電平信號作為輸入信號SDI,電路34接收到低電平信號后,在n+1到n+32周期讀數(shù)據(jù)D〔0〕到D〔31〕。
(5)在周期n+33,電路34設(shè)置協(xié)處理器讀確認(rèn)信號CPRDACK*到處理器內(nèi)核20,并提供數(shù)據(jù)總線信號DIN〔31:0〕和要讀取的32位數(shù)據(jù)D〔31:0〕。
(6)在周期n+33,處理器內(nèi)核20讀信號DIN〔31:0〕并結(jié)束協(xié)處理器讀總線操作。
d)根據(jù)指令CTC0的寫總線操作。
圖25是根據(jù)CTC0指令進(jìn)行寫總線操作的時(shí)序圖。
(1)在周期1,處理的內(nèi)核20根據(jù)指令CTC0啟動協(xié)處理器寫總線操作,提供一個(gè)處理器總線地址A〔31:21〕=0100-0000-110,并設(shè)置信號CPWR*。
(2)在周期2,串行監(jiān)控總線電路34確認(rèn)寫操作的開始并提供一個(gè)由信號CLK2確定的一個(gè)時(shí)鐘的低電平,作為輸出信號SDA0。
(3)在周期3到20,電路34提供地址A〔31:21〕的地址位A〔2〕至A〔19〕作為輸出信號SDA0。在周期21,輸出一個(gè)時(shí)鐘周期的低電平信號指明為寫操作。在周期22至25,輸出信號SDA0變?yōu)樗膫€(gè)時(shí)鐘周期的低電平信號而不考慮處理器總線的字節(jié)允許信號。在周期26至57,輸出信號SOAD提供數(shù)據(jù)總線的輸出位DOUT〔0〕至DOUT〔31〕。
(4)在周期n中,調(diào)試器60完成寫數(shù)據(jù)并提供一個(gè)時(shí)鐘的低電平作為輸入信號SDI。
(5)在周期n+1,電路34檢測該低電平信號,并設(shè)置協(xié)處理器寫確認(rèn)信號CPWRCK*到處理(6)在周期n+1,處理器內(nèi)核20結(jié)束協(xié)處理器寫總線操作。
圖26是串行監(jiān)控總線控制器341的操作的流程圖。
控制器341監(jiān)控處理器總線80的操作。
(1)在步驟S120,S124和S125,串行監(jiān)控總線讀操作啟動,因?yàn)?,有一個(gè)地址A〔31:20〕=0XFF2,讀電平RD*(低)被設(shè)置,信號DM是高電平指明為調(diào)試方式。
(2)在步驟S120,S124,S132和S133,設(shè)置處理器內(nèi)核20的RDACK信號以結(jié)束總線操作,盡管A〔31:20〕=0XFF2并設(shè)置了RD*信號(低電平),但因?yàn)镈M信號為低電平,則表示正常方式。
(3)在步驟S120、S121,S126和S127,串行監(jiān)控總線的寫操作啟動,因?yàn)锳〔31:20〕=0XFF2,寫信號WR*(低)被設(shè)置,信號DM為高指明是調(diào)試方式,而且寄存器DCR的MP位為0,指明為寫允許狀態(tài)。
(4)在步驟S120、S121,S126,S134和S135,設(shè)置微處理器內(nèi)核20的WRACK*信號結(jié)束總線操作。盡管A〔31:20〕=0XFF2并且設(shè)置了寫信號WR*(低),但因?yàn)樾盘朌M為低指明為正常方式,或寄存器DCR的MP位為1指明為寫禁止?fàn)顟B(tài)。
(5)在步驟S120、S122,S128和S129,串行監(jiān)控總線的協(xié)處理器讀操作開始,因?yàn)锳〔31:21〕=0100-0000-010,用于指令CFC0的協(xié)處理器讀總線信號CPRD*被設(shè)置,而且信號DM為高指明為調(diào)試方式。
(6)在步驟S120,S121,S128,S136和S137,處理器內(nèi)核20的CPRDACK*信號被設(shè)置,則結(jié)束總線操作。雖然A〔31:21〕=0100-0000-010且用于指令CFC0的CPRD信號(低)被設(shè)置,但是,因?yàn)樾盘朌M為低,指明是正常方式。
(7)在步驟S120,S121,S122,S123,S130和S131,串行監(jiān)控總線的協(xié)處理器讀操作啟動,因?yàn)锳〔31:21〕=0100-0000-110,指令CTC0的協(xié)處理器寫總線操作信號CPWR(低)被設(shè)置,且信號DM為高指明為調(diào)試方式。
(8)在步驟S120,S121,S122,S123,S138和S139,設(shè)置處理器內(nèi)核20的CPWRACK*信號以結(jié)束總線操作。盡管A〔31:21〕=0100-0000-110且設(shè)置了指令CTC0的信號CPWR*(低),但因?yàn)樾盘朌M為低說明是正常方式。
圖27是串行監(jiān)控總線電路34進(jìn)行讀操作的流程圖。
在讀操作中,串行監(jiān)控總線控制器341在周期1中,向輸出移位寄存器344提供高電平的串行監(jiān)控總線讀/寫信號,串行監(jiān)控總線字節(jié)允許信號BE〔3:0〕和高電平的串行監(jiān)控總線數(shù)據(jù)信號,并設(shè)置一個(gè)數(shù)據(jù)裝入信號。
根據(jù)指令CFC0,在協(xié)處理器讀總線操作中,串行監(jiān)控總線控制器341向輸出移位寄存器344提供高電平的串行監(jiān)控總線讀/寫信號,低電平的字節(jié)允許信號,高電平的串行監(jiān)控總線數(shù)據(jù)信號,并設(shè)置數(shù)據(jù)裝入信號。移位寄存器334鎖存這些值和位于LSB的低電平信號。
輸出信號SBA0置為低,控制器341在周期2中,設(shè)置輸出移位信號。
從周期3至周期25,控制器341設(shè)置輸出移位信號。寄存器344在周期1鎖存的位,以每個(gè)時(shí)鐘周期一位的速度送出,作為輸出信號SDA0。
從周期26至周期n,控制器341等待被設(shè)置的輸入信號SDI變?yōu)榈碗娖健?br>
從周期n+1至周期n+32,控制器341設(shè)置輸入移位信號到串行輸入電路343,而輸入信號SDI送輸入數(shù)據(jù)D〔0〕至D〔31〕再到輸入移位寄存器345。
在周期n+33,控制器341在讀操作中,設(shè)置處理器總線的讀確認(rèn)信號RDACK*。在協(xié)處理器讀總線操作中,控制器341設(shè)置協(xié)處理器讀確認(rèn)信號CPRDACK*。輸出允許信號到串行輸入電路343被設(shè)置,輸入寄存器345中的數(shù)據(jù)D〔31:0〕由數(shù)據(jù)總線輸入信號DIN〔31:0〕傳送。
圖28是串行監(jiān)控總線電路34寫操作的流程圖。
在寫操作中,串行控制總線控制器341在周期1中,向輸出移位寄存器344提供低電平的串行監(jiān)控總線讀/寫信號,串行監(jiān)控總線字節(jié)允許信號BE〔3:0〕和串行監(jiān)控總線的數(shù)據(jù)信號DOUT〔31:0〕,并設(shè)置數(shù)據(jù)裝入信號。
根據(jù)指令GTC0在協(xié)處理器的寫總線操作中,控制器341向寄存器提供低電平的串行監(jiān)控總線讀/寫信號,4位低電平的串行監(jiān)控總線字節(jié)允許信號和串行監(jiān)控總線數(shù)據(jù)信號DOUT〔31:0〕,并設(shè)置數(shù)據(jù)裝入信號。寄存器344在周期1鎖存這些數(shù)值和位于LSB的低電平信號。
在周期2,輸出信號SDA0置為低,控制器341設(shè)置輸出移位信號。
從周期3至57,控制器341設(shè)置輸出移位信號。寄存器344在周期1鎖存的數(shù)據(jù)由輸出信號SDA0以每個(gè)時(shí)鐘周期一位的速度傳送。
從周期58至n,控制器341等待被設(shè)置的輸入信號SDI變?yōu)榈汀?br>
在周期n+1,控制器341在寫操作中,向處理器總線設(shè)置寫確認(rèn)信號WRACK*,若為協(xié)處理器總線操作,控制器341設(shè)置協(xié)處理器寫確認(rèn)信號CPWRACK*。
下面介紹程序計(jì)數(shù)器跟蹤器32。
間接跳轉(zhuǎn),直接跳轉(zhuǎn)和轉(zhuǎn)移定義如下間接跳轉(zhuǎn)跳轉(zhuǎn)的目標(biāo)地址是存貯于寄存器或內(nèi)存中的值,也就是,跳轉(zhuǎn)指令本身不指明跳轉(zhuǎn)的目標(biāo)地址。
直接跳轉(zhuǎn)跳轉(zhuǎn)指令的目標(biāo)地址由程序計(jì)數(shù)器和指令中的編碼確定。
轉(zhuǎn)移(或條件轉(zhuǎn)移)這一類跳轉(zhuǎn)指令的目標(biāo)是由程序計(jì)數(shù)器與指令中幾部分代碼和共同確定。轉(zhuǎn)移是否實(shí)際執(zhí)行取決于條件,若轉(zhuǎn)移被實(shí)際執(zhí)行則稱之為“進(jìn)入轉(zhuǎn)移”,否則稱為“末進(jìn)入轉(zhuǎn)移”。
圖29是程序計(jì)數(shù)器跟蹤器32的詳圖。
跟蹤器32接收來自處理器內(nèi)核20下列信號調(diào)試方式信號DM該信號說明當(dāng)前方式是調(diào)試方式還是正常方式。
流水線執(zhí)行信號該信號指示指令的執(zhí)行。
30位的目標(biāo)程序計(jì)數(shù)器〔31:2〕信號這些信號指明轉(zhuǎn)移或跳轉(zhuǎn)指令的目標(biāo)地址或是異常處理的向量地址。當(dāng)設(shè)置間接跳轉(zhuǎn)、直接跳轉(zhuǎn)、轉(zhuǎn)移進(jìn)入和異常發(fā)生信號時(shí),則該信號有效。
間接跳轉(zhuǎn)信號該信號表示執(zhí)行了一個(gè)間接跳轉(zhuǎn)。
直接跳轉(zhuǎn)信號該信號表示執(zhí)行了一個(gè)直接跳轉(zhuǎn)。
轉(zhuǎn)移進(jìn)入信號該信號表示執(zhí)行了一條轉(zhuǎn)移指令并進(jìn)入轉(zhuǎn)移。
異常發(fā)生信號該信號表示異常已經(jīng)發(fā)生。
跟蹤器32向處理器內(nèi)核20提供如下信號以全面跟蹤程序計(jì)數(shù)器。
流水線失速請求信號該信號阻塞了處理器內(nèi)核20的流水線處理,從而完全地讓目標(biāo)程序計(jì)數(shù)器產(chǎn)生輸出。當(dāng)跟蹤器32正在接收目標(biāo)程序計(jì)數(shù)器的間接跳轉(zhuǎn)信號時(shí)發(fā)生了下一個(gè)間接跳轉(zhuǎn),則跟蹤器32設(shè)置流水線失速請求信號,停止處理器內(nèi)核20的流水線處理。一旦目標(biāo)程序計(jì)數(shù)器的信號完成,流水線失速請求信號被取消,灰復(fù)流水線處理。
跟蹤器32接收來自指令/數(shù)據(jù)地址斷點(diǎn)電路31或處理器總線斷點(diǎn)電路33的觸發(fā)請求。跟蹤器32接收DCR寄存器的TM位和調(diào)試允許信號DBGE*。若DBGE*信號被設(shè)置為低電位,它表示調(diào)試器60有效。
跟蹤器32在正常方式下,把處理器內(nèi)核20提供的程序計(jì)數(shù)器跟蹤信息轉(zhuǎn)換成一位的程序計(jì)數(shù)輸出TPC和一個(gè)三位狀態(tài)信號PCST〔2:0〕,供調(diào)試器60使用。
下面說明信號PCST〔2:0〕和TPCa)PCST〔2:0〕指令的執(zhí)行狀態(tài)由信號PCST〔2:0〕以每個(gè)時(shí)鐘一位的速度傳送(0低,1高)。
111流水線失速狀態(tài)(STL)
該狀態(tài)說明當(dāng)沒有跟蹤觸發(fā)請求時(shí),則指令的執(zhí)行尚未完成。
110轉(zhuǎn)移/跳轉(zhuǎn)進(jìn)入狀態(tài)(JMP)(用程序計(jì)數(shù)器輸出)該狀態(tài)表示執(zhí)行了進(jìn)入轉(zhuǎn)移或跳轉(zhuǎn)指令,且目標(biāo)地址將由信號TPC傳送。
101轉(zhuǎn)移/跳轉(zhuǎn)進(jìn)入狀態(tài)(BRT)(沒有程序計(jì)數(shù)器輸出)該狀態(tài)表明執(zhí)行了進(jìn)入轉(zhuǎn)移或直接跳轉(zhuǎn)指令,但信號TPC不傳送目標(biāo)地址。
100異常狀態(tài)(EXP)(異常向量碼輸出)該狀態(tài)表示出現(xiàn)了一個(gè)異常,異常處理的向量碼將由信號TPC傳送。
011順序執(zhí)行狀態(tài)(SEQ)(指令執(zhí)行)該狀態(tài)表示在JMP,BRT或TSQ狀態(tài)下執(zhí)行指令。當(dāng)轉(zhuǎn)移指令沒有進(jìn)入時(shí)也建立這一狀態(tài)。
010流水線失速中的跟蹤觸發(fā)器輸出狀態(tài)(TST)該狀態(tài)表明地址跟蹤觸發(fā)器或處理器總線跟蹤觸發(fā)器在指令仍在執(zhí)行中的一個(gè)時(shí)鐘周期發(fā)生了請求。
000調(diào)試方式(DBM)在正常方式下不能達(dá)到該狀態(tài)。
信號TPC用來提供轉(zhuǎn)移或跳轉(zhuǎn)指令的目標(biāo)地址。在信號PCST〔2:0〕指明狀態(tài)″110″(JMP)的時(shí)鐘周期里,目標(biāo)地址從低位A〔2〕開始以每個(gè)時(shí)鐘周期一位的速度傳送。在信號PCST〔2:0〕指明狀態(tài)″100″(EXP)的時(shí)鐘周期時(shí),一個(gè)三位的異常向量從低位開始按代碼(0),代碼(1),代碼(2)的順序以每個(gè)時(shí)鐘一位的速度傳送。異常向量地址和三位代碼如下所示
向量地址代碼(2:0)ReSet,Nmi BFC0-0000 4(100)UTLB(BEV=0)8000-0000 0(000)UTLB(BEV=1)BFC0-0100 6(110)其它(BEV=0)8000-0080 1(001)其它(BEV=1)BFC0-0180 7(111)由于目標(biāo)地址由信號TPC一位一位地按順序發(fā)送,在當(dāng)前轉(zhuǎn)移/跳轉(zhuǎn)指令正由TPC信號傳送時(shí),可能發(fā)生下一條轉(zhuǎn)移指令,跳轉(zhuǎn)指令或異常,TPC信號傳送的目標(biāo)地址的優(yōu)先權(quán)如下a)當(dāng)傳送目標(biāo)程序計(jì)數(shù)器信號時(shí),產(chǎn)生了一個(gè)新的間接跳轉(zhuǎn)指令,則停止當(dāng)前的目標(biāo)程序計(jì)數(shù)器信號,開始新的間接跳轉(zhuǎn)指令的目標(biāo)程序計(jì)數(shù)器信號。
b)當(dāng)傳送目標(biāo)程序計(jì)數(shù)器信號時(shí)發(fā)生了異常,則掛起目標(biāo)程序計(jì)數(shù)器信號,傳送三位的異常向量碼,然后灰復(fù)被掛起的信號。
c)當(dāng)傳送目標(biāo)程序計(jì)數(shù)器信號時(shí)發(fā)生了新的直接跳轉(zhuǎn)或轉(zhuǎn)移指令,不傳送直接跳轉(zhuǎn)或轉(zhuǎn)移指令的目標(biāo)地址。只有當(dāng)不傳送目標(biāo)程序計(jì)數(shù)器信號時(shí),才能傳送直接跳轉(zhuǎn)或轉(zhuǎn)移指令的目標(biāo)程序計(jì)數(shù)器信號。
下面結(jié)合圖示介紹程序計(jì)數(shù)器跟蹤輸出的示例。
(例1)轉(zhuǎn)移指令的程序計(jì)數(shù)器跟蹤。
圖30是用于轉(zhuǎn)移指令程序計(jì)數(shù)器跟蹤信號的示例。
當(dāng)?shù)谝粋€(gè)進(jìn)入的轉(zhuǎn)移指令″beq″執(zhí)行時(shí),輸出信號TPC沒有傳送目標(biāo)程序計(jì)數(shù)器信號,信號PCST〔2:0〕指明狀態(tài)TMP,信號TPC開始為指令″beq″傳送目標(biāo)程序計(jì)數(shù)器信號,作為對非進(jìn)入轉(zhuǎn)移指令″bne″的響應(yīng),信號PCST〔2:0〕指明狀態(tài)碼SEQ,作為對再次進(jìn)入轉(zhuǎn)移指令″bne″的響應(yīng)信號TPC并不傳送目標(biāo)程序計(jì)數(shù)器信號,因?yàn)樾臫PC正為第一條轉(zhuǎn)移指令″beq″傳送目標(biāo)程序計(jì)數(shù)器信號。這時(shí),信號PCST〔2:0〕指明狀態(tài)為BRT。
(例2)間接跳轉(zhuǎn)指令的程序計(jì)數(shù)器跟蹤。
圖31是用于間接跳轉(zhuǎn)指令的程序計(jì)數(shù)器跟蹤信號示例。
作為對第一條間接跳轉(zhuǎn)指令″jr1″的響應(yīng),信號PCST〔2:0〕指明狀態(tài)為JMP,信號TPC開始傳送目標(biāo)程序計(jì)數(shù)器信號。作為對非進(jìn)入轉(zhuǎn)移指令″bne″的響應(yīng),信號PCST〔2:0〕指明狀態(tài)為SEQ,作為對第二條間接轉(zhuǎn)移指令″jr2″的響應(yīng),信號TPC停止傳送第一條間接跳轉(zhuǎn)指令″jr1″的目標(biāo)程序計(jì)數(shù)器信號,開始為第二條指令″jr2″傳送目標(biāo)程序計(jì)器信號。這時(shí),信號PCST〔2:0〕指明狀態(tài)為JMP。
(例3)異常和間接跳轉(zhuǎn)指令的程序計(jì)數(shù)器跟蹤。
圖32是異常和間接跳轉(zhuǎn)指令的程序計(jì)數(shù)器跟蹤示例。
作為對軟件斷點(diǎn)指令″break″的響應(yīng),產(chǎn)生一個(gè)異常,信號PCST〔2:0〕指明狀態(tài)為EXP,這時(shí),信號TPC開始傳送異常向量代碼,在非進(jìn)入轉(zhuǎn)移指令″bne″,信號PCST〔2:0〕指明狀態(tài)SEQ,在間接跳轉(zhuǎn)指令″jr2″,信號TPC傳送用于″jr2″指令的目標(biāo)程序計(jì)數(shù)器信號,該信號PCST〔2:0〕指明狀態(tài)JMP。
下面介紹信號PCST〔2:0〕的跟蹤觸發(fā)狀態(tài)TSQ或TST。
當(dāng)?shù)刂泛蛿?shù)據(jù)在同一總線周期出現(xiàn)時(shí),發(fā)生一個(gè)指令/數(shù)據(jù)地址斷點(diǎn)或處理器總線斷點(diǎn),產(chǎn)生一個(gè)表示狀態(tài)TSQ或TST的信號PCST〔2:0〕。
當(dāng)指令地址跟蹤觸發(fā)請求、數(shù)據(jù)地址跟蹤觸發(fā)請求或處理器總線跟蹤觸發(fā)請求產(chǎn)生時(shí),信號PCST〔2:0〕指明狀態(tài)為TSQ或TST。若信號PCST〔2:0〕可能在將要表明狀態(tài)SEQ或STL的時(shí)鐘周期里指明狀態(tài)TSQ或TST。
a)指令/數(shù)據(jù)地址跟蹤觸發(fā)發(fā)生時(shí),信號PCST〔2:0〕指明狀態(tài)為TSQ。若跟蹤觸發(fā)由進(jìn)入轉(zhuǎn)移指令、跳轉(zhuǎn)指令或不使信號PCST〔2:0〕指明狀態(tài)SEQ的指令產(chǎn)生時(shí),跟蹤觸發(fā)的輸出將被推遲。若沒有跟蹤觸發(fā)請求,信號PCST〔2:0〕在即將表示狀態(tài)SEQ或STL的時(shí)鐘周期里,表示狀態(tài)TSQ或TST。
(例1)指令/數(shù)據(jù)地址跟蹤觸發(fā)示例。
圖33是指令/數(shù)據(jù)地址跟蹤觸發(fā)的示例。
作為對產(chǎn)生指令跟蹤觸發(fā)或數(shù)據(jù)地址跟蹤觸發(fā)或數(shù)據(jù)地址跟蹤觸發(fā)的指令″add″的響應(yīng),信號PCST〔2:0〕指明狀態(tài)TSQ。
(例2)由異常引起的指令/數(shù)據(jù)地址觸發(fā)的示例。
圖34是由異常引起的指令/數(shù)據(jù)地址觸發(fā)的示例。
如果軟件斷點(diǎn)″break″產(chǎn)生時(shí)了指令地址跟蹤觸發(fā)或數(shù)據(jù)地址跟蹤觸發(fā),信號PCST〔2:0〕指明狀態(tài)EXP,在下一個(gè)時(shí)鐘周期,指明用于流水線失速的跟蹤觸發(fā)狀態(tài)TST。
(例3)由間接跳轉(zhuǎn)指令引起的指令/數(shù)據(jù)地址跟蹤觸發(fā)的示例。
當(dāng)間接跳轉(zhuǎn)指令″jr2″引起指令地址跟蹤觸發(fā)或數(shù)據(jù)地址跟蹤觸發(fā)時(shí),信號PCST〔2:0〕指明狀態(tài)為JMP。在下一個(gè)時(shí)鐘周期里,指明用于指令執(zhí)行條件的跟蹤觸發(fā)狀態(tài)TSQ。
b)處理器總線跟蹤觸發(fā)當(dāng)發(fā)生一個(gè)處理器總線跟蹤觸發(fā)請求時(shí),信號PCST〔2:0〕指明狀態(tài)TSQ或TST。若信號PCST〔2:0〕正指明狀態(tài)JMP、BRT或EXP時(shí),跟蹤觸發(fā)狀態(tài)TSQ或TST將被推遲,若沒有跟蹤觸發(fā)請求時(shí),信號PCST〔2:0〕將在本應(yīng)指明狀態(tài)SEQ或STL的下一個(gè)時(shí)鐘周期里指明狀態(tài)為TSQ或TST。
下面介紹調(diào)試方式狀態(tài)DBM的產(chǎn)生若處理器內(nèi)核20引起一個(gè)調(diào)試異?;蛘{(diào)試復(fù)位,則設(shè)置高電平的調(diào)試方式信號DM進(jìn)入調(diào)試方式。然后,跟蹤器32提供信號PCST〔2:0〕表明調(diào)試方式狀態(tài)DBM。
圖36是當(dāng)調(diào)試異常出現(xiàn)時(shí),信號PCST〔2:0〕的輸出時(shí)間圖。
當(dāng)沒有提供目標(biāo)程序計(jì)數(shù)器信號時(shí),在引起調(diào)試異常的指令結(jié)束后,立即啟動調(diào)試方式,提供出調(diào)試異常發(fā)生前的程序計(jì)數(shù)器跟蹤信息。
圖37是當(dāng)調(diào)試異常發(fā)生時(shí),傳送目標(biāo)程序計(jì)數(shù)器信號的PCST〔2:0〕的時(shí)序。
在這種情況下,在目標(biāo)程序計(jì)數(shù)器信號結(jié)束后,啟動調(diào)試方式,提供出直到調(diào)試異常即將發(fā)生前的指令的程序計(jì)數(shù)器跟蹤信息。當(dāng)目標(biāo)程序計(jì)數(shù)器信號傳送的同時(shí),信號PCST〔2:0〕指明狀態(tài)為STL。
圖38是從調(diào)試方式返回時(shí)信號PCST〔2:0〕的時(shí)序。
調(diào)試方式一直持續(xù)到由調(diào)試異?;蛘{(diào)試方式發(fā)送的返回指令DERET的轉(zhuǎn)移延遲間隙指令出現(xiàn)為止。正常方式從DERET指令的一條目標(biāo)指令開始,啟動程序計(jì)數(shù)器跟蹤。
回到圖29,解釋跟蹤器32。
跟蹤器32有一個(gè)程序計(jì)數(shù)器跟蹤控制器321,一個(gè)目標(biāo)程序計(jì)數(shù)移位寄存器322,一個(gè)異常向量編碼器323,一個(gè)異常編碼移位寄存器324和一個(gè)選擇器325。
控制器321還有一個(gè)異常編碼輸出狀態(tài)位326和一個(gè)目標(biāo)程序計(jì)數(shù)器輸出計(jì)數(shù)器329。
下面說明跟蹤器321的操作。
表3是當(dāng)寄存器DCR的TM位為0時(shí),信號PCST〔2:0〕的輸出。在表3中,″1″表示有效狀態(tài),″X″表示″無關(guān)″狀態(tài)。
表3
在該表中,觸發(fā)請求信號是指令地址跟蹤觸發(fā)請求信號,數(shù)據(jù)地址跟蹤觸發(fā)請求信號和處理器總線跟蹤觸發(fā)請求信號的″或″。
當(dāng)五位的計(jì)數(shù)器327非0時(shí),它表示正在傳送信號TPC。當(dāng)異常代碼輸出狀態(tài)位326為1時(shí),傳送異常量時(shí)代碼。在表3中,當(dāng)計(jì)數(shù)器327非0或異常代碼輸出狀態(tài)位326為1時(shí),則內(nèi)部狀態(tài)″輸出TPC或異常代碼″為1。計(jì)數(shù)器327以如下方式更新
(1)當(dāng)信號TPC不傳送目標(biāo)程序計(jì)數(shù)器信號,或者新的程序計(jì)數(shù)器信號將被傳送時(shí),計(jì)數(shù)器327被請零。
(2)當(dāng)信號TPC正傳送異常向量,內(nèi)部狀態(tài)指明正在傳送程序計(jì)器信號時(shí),計(jì)數(shù)器327保持不變。
(3)當(dāng)計(jì)數(shù)器327達(dá)到30時(shí)將被清零。表明目標(biāo)程序計(jì)數(shù)器輸出完成。
(4)除(1)、(2)、(3)的其它情況下,計(jì)數(shù)器327自增加1。此時(shí),信號TPC正在傳送目標(biāo)程序計(jì)數(shù)器信號。
當(dāng)異常發(fā)生時(shí),在三個(gè)時(shí)鐘周期內(nèi),異常代碼輸出狀態(tài)位326設(shè)置一個(gè)表示正在傳送異常代碼的內(nèi)部狀態(tài)。設(shè)置狀態(tài)位326后,異常代碼移位信號和異常代碼輸出開關(guān)信號也被設(shè)置。當(dāng)信號PCST〔2:0〕指明狀態(tài)EXP時(shí),異常代碼裝入信號被設(shè)置。此時(shí),異常向量編碼器323的輸出裝入到異常代碼移位寄存器324中,設(shè)置目標(biāo)程序計(jì)數(shù)器裝入信號,信號PCST〔2:0〕指明狀態(tài)JMP。然后,目標(biāo)程序計(jì)數(shù)器的值裝入到目標(biāo)程序計(jì)數(shù)器移位寄存器322中。當(dāng)計(jì)數(shù)器327非0,且狀態(tài)位326未設(shè)置時(shí),則目標(biāo)程序計(jì)數(shù)器移位信號被設(shè)置。
當(dāng)DCR寄存器的TM位為1時(shí),程序計(jì)數(shù)器跟蹤徹底結(jié)束。若信號DBGE*置,則TM位置位,而且在傳送用于間接跳轉(zhuǎn)指令的目標(biāo)程序計(jì)數(shù)器信號時(shí),發(fā)生了下一條間接跳轉(zhuǎn)指令,則控制器321設(shè)置流水線失速請求信號,以停止處理器內(nèi)核20的流水線處理。當(dāng)前的目標(biāo)程序計(jì)數(shù)器傳送結(jié)束后,流水線失速信號取消并灰復(fù)流水線操作。
表4是TM位為1時(shí),信號PCST〔2:0〕的輸出。在表4中,″1″表示有效狀態(tài),″X″表示″無關(guān)″狀態(tài)。
表4
在傳送目標(biāo)程序計(jì)數(shù)器信號時(shí),或異常代碼過程中,由于執(zhí)行間接跳轉(zhuǎn)指令而使間接跳轉(zhuǎn)信號有效時(shí),對處理器內(nèi)核20的流水線失效請求被激活。指明目標(biāo)程序計(jì)數(shù)器信號或異常代碼正在傳送的內(nèi)部狀態(tài),在目標(biāo)程序計(jì)數(shù)器信號開始后的30個(gè)時(shí)鐘周期里為激活態(tài)。
當(dāng)控制器321的目標(biāo)程序計(jì)數(shù)器裝入信號被設(shè)置時(shí),目標(biāo)程序計(jì)數(shù)器移位寄存器322裝入目標(biāo)程序計(jì)數(shù)器的輸出值。當(dāng)控制器321的目標(biāo)程序計(jì)數(shù)器移位信號被設(shè)置時(shí),寄存器322把它的值每次一位地從MSB移向LSB。
異常向量編碼器323,根據(jù)向量地址的位A〔29〕,A〔8〕和A〔7〕編碼出的異常向量地址。如下所示
編碼器323把目標(biāo)程序計(jì)數(shù)器輸出的地址位A〔29〕,A〔8〕和A〔7〕傳送到異常代碼移位寄存器324中。
當(dāng)控制器321的異常代碼裝入信號設(shè)置時(shí),寄存器從編碼器323中裝入異常向量代碼,當(dāng)控制器321的異常代碼移位信號設(shè)置時(shí),異常代碼移位寄存器324中的值一位一位地從MSB移向LSB。
當(dāng)控制器321異常代碼輸出開關(guān)信號置位時(shí),選擇器325向信號TPC提供寄存器324的LSB。當(dāng)異常代碼輸出開關(guān)信號取消時(shí),選擇器325向信號TPC提供寄存器322的LSB。
將用參考時(shí)間圖解釋跟蹤器32的操作。
圖39是當(dāng)提供了一個(gè)目標(biāo)程序計(jì)數(shù)器信號時(shí),跟蹤器32的操作。
當(dāng)計(jì)數(shù)器327保持″0″并且一個(gè)間接跳轉(zhuǎn)信號,或直接跳轉(zhuǎn)信號,或進(jìn)入轉(zhuǎn)移信號被設(shè)置時(shí),則控制器321設(shè)置目標(biāo)程序計(jì)數(shù)器裝入信號。
在下一個(gè)時(shí)鐘,LSB,即被裝入到寄存器322的目標(biāo)地址A〔2〕被送給信號TPC。同時(shí),信號PCST〔2:0〕指示狀態(tài)JMP,控制器321設(shè)置目標(biāo)程序計(jì)數(shù)器移位信號,結(jié)果,寄存器322由MSB向LSB移一位且在下一時(shí)鐘A〔3〕位提供給信號TPC。目標(biāo)程序計(jì)數(shù)器移位信號不斷地設(shè)置,把程序計(jì)數(shù)器的輸出提供給信號TPC,直到計(jì)數(shù)器327計(jì)數(shù)到30為止。當(dāng)計(jì)數(shù)器327計(jì)滿30時(shí),被清0,并且目標(biāo)程序計(jì)數(shù)器移位信號被取消,結(jié)束目標(biāo)程序計(jì)數(shù)器對信號TPC的輸出。
圖40是當(dāng)下一個(gè)間接跳轉(zhuǎn)出現(xiàn),同時(shí)目標(biāo)程序計(jì)數(shù)器信號被提供時(shí),跟蹤器322的操作。
當(dāng)?shù)诙€(gè)間接跳轉(zhuǎn)出現(xiàn)時(shí),計(jì)數(shù)器327被清0,目標(biāo)程序計(jì)數(shù)器裝入信號被設(shè)置。在下一個(gè)時(shí)種,則LSB,即被裝入到寄存器322的目標(biāo)地址A〔2〕位被送往信號TPC。同時(shí),信號PCST〔2:0〕指示狀態(tài)JMP,且控制器321設(shè)置目標(biāo)程序計(jì)數(shù)器移位信號。從下一個(gè)時(shí)鐘起,每個(gè)周期目標(biāo)地址都傳送給信號TPC。
圖41是在提供了目標(biāo)程序計(jì)數(shù)器信號,出現(xiàn)異常時(shí)的操作時(shí)間圖。
當(dāng)一個(gè)目標(biāo)程序計(jì)數(shù)器信號正在傳送時(shí),異常出現(xiàn)信號被設(shè)置,則異常代碼裝入信號也被設(shè)置,把異常代碼裝入到異常代碼移位寄存器324中,從下一個(gè)時(shí)鐘起,異常代碼輸出狀態(tài)位326、異常代碼移位信號和異常代碼輸出開關(guān)信號被設(shè)置,用三個(gè)時(shí)鐘周期傳送異常代碼。在此期間,目標(biāo)程序計(jì)數(shù)器移位信號無效。當(dāng)狀態(tài)位326和異常代碼開關(guān)信號取消時(shí),信號TPC重新傳送目標(biāo)程序計(jì)數(shù)器信號。
圖42是外部接口電路36的詳圖。
外部接口電路36有一個(gè)DBM代碼測試器361,選擇器362和363,屏蔽電路364,365和366,輸出緩沖器367A367B和367C,上拉電阻輸入緩沖器368A、368B和368C以及輸入緩沖器369A和369B。
當(dāng)信號PCST〔2:0〕指明調(diào)試方式狀態(tài)DBM(000),則DBM代碼測試器361設(shè)置一個(gè)輸出信號。
當(dāng)DBM代碼測試器361的輸出被設(shè)置,即它是調(diào)試方式時(shí),則選擇器362提供分頻時(shí)鐘信號CLK2。當(dāng)DBM代碼測試器361輸出無效時(shí),即它是正常方式時(shí),則選擇器362提供內(nèi)核時(shí)鐘CLK。
當(dāng)DBM代碼測試器361的輸出被設(shè)置,即它是調(diào)試方式,則選擇器363提供串行監(jiān)控總線34的輸出SDAD;當(dāng)DBM代碼測試器361輸出無效時(shí),即它是正常方式,則選擇器363提供跟蹤器32的信號TPC。
在調(diào)試方式下,屏蔽電路364屏蔽外部輸入信號DINT*/SDI,使得輸入到處理機(jī)內(nèi)核20的信號KINT*總是無效。
當(dāng)寄存器DCR的MINT位為0時(shí),屏蔽電路365對處理機(jī)內(nèi)核20置位信號Int〔5:0〕,得以屏蔽中斷。
當(dāng)寄存器DCR的MRST位是0時(shí),在調(diào)試異常處理器執(zhí)行期間(信號DM為高),則屏蔽電路366屏蔽用戶復(fù)位信號RESET*。
輸出緩沖器367A向外提供選擇器362的輸出作為信號DCLK;輸出緩沖器367B向外提供選擇器363的輸出作為信號TPC/SDAD;輸出緩沖器367C向外提供跟蹤器32的信號PCST〔2:0〕作為外部信號PCST〔2:0〕。
上拉電阻輸入緩沖器368A接收外部信號DINT*/SDI,由于該緩沖器有上拉電阻,所以,當(dāng)外部信號DINT*/SDI斷開時(shí),則輸出總是高電平。上拉電阻輸入緩沖器368B接收外部信號DBGE*,由于該緩沖器有上拉電阻,所以,若外部信號DBGE*斷開時(shí),同輸出總是高電平。上拉電阻輸入緩沖器368C接收外部信號DRESET*,由于該緩沖器有上拉電阻,所以,當(dāng)外部信號DRESET*斷開時(shí),則輸出總是高電平。
當(dāng)調(diào)試器60斷開時(shí),則外部信號DINT*/SDI,DBGE*和DRESET*也斷開,然后,這些信號成為高電平內(nèi)部信號,因而,調(diào)試方式的功能被禁止。
輸入緩沖器369A接收外部中斷信號INT〔5:0〕*,輸入緩沖器369B接收外部用戶復(fù)位信號RESET*。
圖44示出根據(jù)本發(fā)明的另一實(shí)施例的微處理器和調(diào)試系統(tǒng)。
這個(gè)實(shí)施例的特征在于微處理器10與存貯器90和外圍電路100結(jié)合在一起,這個(gè)實(shí)施例的其它安排則與第一實(shí)施例相同。
處理機(jī)內(nèi)核20通過內(nèi)部處理器總線80讀存貯器90的程序,執(zhí)行讀程序,從存貯器90讀數(shù)據(jù)或把數(shù)據(jù)寫入存儲器,并訪問外圍電路100。在調(diào)試方式時(shí),處理機(jī)內(nèi)核20通過調(diào)試模塊30執(zhí)行調(diào)試器60的監(jiān)控程序。
如果調(diào)試模塊30和調(diào)試器60的功能和接口信號的定時(shí)彼此相同,則第一實(shí)施例的調(diào)試器60將被用于第二實(shí)施例,而不必考慮聯(lián)合存貯器90和外圍電路100的差異。
如果第二實(shí)施例的微處理機(jī)內(nèi)核20的功能與第一實(shí)施例的相同,則與第一實(shí)施例相同的監(jiān)控程序?qū)⒂糜诘诙?shí)施例。
上述兩個(gè)實(shí)施例使用各自的指令/數(shù)據(jù)地址斷點(diǎn)通道和處理器總線斷點(diǎn)通道。本發(fā)明則不受這種安排的限制,可以使用兩個(gè)或多個(gè)通道。圖43示出涉及15個(gè)指令地址斷點(diǎn)通道的寄存器IBS。
上述兩個(gè)實(shí)施例使用各自的具有位寬一位的串行監(jiān)控總線。本發(fā)明不受這種安排的限制。如果許多微處理器外部信號都用于串行監(jiān)控總線,則位寬可以是兩倍或更多位。
上述兩個(gè)實(shí)施例使用各自的外部信號,用于傳送目標(biāo)程序計(jì)數(shù)器的輸出。本發(fā)明不受這種安排的限制。目標(biāo)程序計(jì)數(shù)器的輸出可由多個(gè)外部信號傳送(如果多個(gè)外部信號可以得到的話)。
根據(jù)上述的兩個(gè)實(shí)施例,時(shí)鐘發(fā)生器37對用于處理機(jī)內(nèi)核的時(shí)鐘信號CLK二分頻。本發(fā)明則不受這個(gè)限制。串行監(jiān)控總線電路的時(shí)鐘信號的頻率可以和時(shí)鐘信號的相同,或整數(shù)倍或倍數(shù)2的乘方。
如上所述,本發(fā)明能使調(diào)試器的硬件與許多功能共享,并減少了連接到調(diào)試器的信號的數(shù)量。而現(xiàn)有技術(shù)必須采用例如30個(gè)地址信號、4個(gè)字節(jié)允許信號、1個(gè)讀信號、1個(gè)寫信號、1個(gè)讀確認(rèn)信號、1個(gè)寫確認(rèn)信號、32個(gè)數(shù)據(jù)信號,總共70個(gè)信號將用戶目標(biāo)系統(tǒng)連接到調(diào)試器。換言之,本發(fā)明只用8個(gè)信號將用戶目標(biāo)程序系統(tǒng)連到調(diào)試器,從而使插針數(shù)量降到最低限度并降低成本。
根據(jù)本發(fā)明,一個(gè)用戶目標(biāo)系統(tǒng)的微處理器訪問存貯器和I/O單元,為了為調(diào)試器定時(shí)提供方便的條件,與調(diào)試器無關(guān)的信號不受調(diào)試的影響。如果微處理器的運(yùn)行速度太高,本發(fā)明能夠降低調(diào)試工具與微處理器之間的通信速度。
與圖2的現(xiàn)有技術(shù)相比,本發(fā)明把監(jiān)控程序存放在調(diào)試器的存貯器中,而沒有使用用戶存貯器。為了啟動監(jiān)控一個(gè)目標(biāo)系統(tǒng),本發(fā)明使用專用的調(diào)試異常和調(diào)試復(fù)位,而不限制用戶中斷。用戶目標(biāo)系統(tǒng)無需具有用于調(diào)試的串行接口,本發(fā)明能使用硬件斷點(diǎn)。
與圖3的現(xiàn)有技術(shù)相比,本發(fā)明無需在微處理器上安裝定序器來簡化用于調(diào)試的邏輯電路。由于本發(fā)明使用監(jiān)控程來訪問寄存器,所以只要修改監(jiān)控程序便可訪問附加的寄存器。
總之,本發(fā)明提供了一個(gè)帶有調(diào)試功能的用戶目標(biāo)系統(tǒng)的微處理器,從而減少了用于連接目標(biāo)系統(tǒng)與調(diào)試器的信號。在調(diào)試過程中,本發(fā)明運(yùn)行目標(biāo)系統(tǒng)的微處理器,使得便于訪問目標(biāo)系統(tǒng)的存貯器和輸入/輸出部件。
根據(jù)本發(fā)明,在正常方式下,當(dāng)用戶程序運(yùn)行時(shí),調(diào)試工具和調(diào)試模塊中的寄存器是不可訪問的,使得調(diào)試工具的存貯器和寄存器決不會被用戶程序破壞,從而提高了系統(tǒng)的可靠性。
即使在調(diào)試方式啟動之后,本發(fā)明也禁止訪問調(diào)試工具和調(diào)試模塊的控制寄存器。當(dāng)一個(gè)啟動調(diào)試方式的調(diào)試異常出現(xiàn)時(shí),如果用戶程序?qū)φ{(diào)試工具或調(diào)試模塊的控制寄存器的寫操作不完全,通過置位寄存器DCR的MP位來禁止寫操作,這就避免了用戶程序?qū)φ{(diào)試工具的存貯器和寄存器的破壞,從而提高了調(diào)試系統(tǒng)的可靠性。
根據(jù)本發(fā)明在調(diào)試方式下,根據(jù)指令CTCO對調(diào)試工具的寫。
權(quán)利要求
1.一種微處理器,其特征在于,包括一個(gè)處理器內(nèi)核,用以執(zhí)行程序;一個(gè)中斷電路,用以在一個(gè)存取地址與一個(gè)設(shè)定的地址相符合時(shí)或在一個(gè)存取地址和數(shù)據(jù)與一個(gè)設(shè)定地址和數(shù)據(jù)相符合時(shí),產(chǎn)生一個(gè)中斷請求或設(shè)置一個(gè)觸發(fā)請求信號送到所述的處理器內(nèi)核;和一個(gè)程序計(jì)數(shù)器跟蹤器,用以提供一個(gè)外部狀態(tài)信號,用以指示在中斷電路設(shè)置同樣信號之后觸發(fā)請求信號已經(jīng)發(fā)出。
2.根據(jù)權(quán)利要求1的微處理器,其特征在于,所述的程序計(jì)數(shù)器跟蹤器對所述的處理器內(nèi)核的內(nèi)部狀態(tài)編碼,提供一個(gè)外部狀態(tài)信號,用以指示編碼的內(nèi)部狀態(tài);當(dāng)所述的處理器內(nèi)核處于第一內(nèi)部狀態(tài)并且觸發(fā)請求信號已設(shè)置時(shí),所述的程序計(jì)數(shù)器跟蹤器提供一個(gè)外部狀態(tài)信號,用以指示沒有觸發(fā)請求的內(nèi)部狀態(tài),此時(shí)不考慮已設(shè)置的觸發(fā)請求信號;和當(dāng)所述的處理器內(nèi)核處于第二內(nèi)部狀態(tài)并且觸發(fā)請求信號已設(shè)置時(shí),所述的程序計(jì)數(shù)器跟蹤器提供一個(gè)外部狀態(tài)信號,用以指示有觸發(fā)請求。
3.根據(jù)權(quán)利要求1的微處理器,其特征在于,所述的第一內(nèi)部狀態(tài)對應(yīng)于正在執(zhí)行一條跳轉(zhuǎn)指令或產(chǎn)生了一個(gè)異常,所述的第二內(nèi)部狀態(tài)對應(yīng)于正在順序地執(zhí)行指令或引起了流水線失速。
全文摘要
本發(fā)明涉及一種微處理器,其特征在于,包括一個(gè)處理器內(nèi)核,用以執(zhí)行程序;一個(gè)中斷電路,用以在一個(gè)存取地址與一個(gè)設(shè)定的地址相符合時(shí)或在一個(gè)存取地址和數(shù)據(jù)與一個(gè)設(shè)定地址和數(shù)據(jù)相符合時(shí),產(chǎn)生一個(gè)中斷請求或設(shè)置一個(gè)觸發(fā)請求信號送到所述的處理器內(nèi)核;和一個(gè)程序計(jì)數(shù)器跟蹤器,用以提供一個(gè)外部狀態(tài)信號,用以指示在中斷電路設(shè)置同樣信號之后觸發(fā)請求信號已經(jīng)發(fā)出。
文檔編號G06F11/36GK1540518SQ20041003867
公開日2004年10月27日 申請日期1995年12月28日 優(yōu)先權(quán)日1994年12月28日
發(fā)明者宮森高, 矢野達(dá)男, 男 申請人:株式會社東芝, 安捷倫技術(shù)有限公司