專利名稱:用于嵌入式系統的實時調試器接口的制作方法
技術領域:
本發明涉及用于實時調試軟件的系統和方法。更具體來說,本發明涉及用于嵌入式系統-例如在單一芯片上有一個或多個處理器的ASIC芯片-中的固件的實時調試的系統和方法。
軟件調試可以用許多方法完成,有些方法不是實時進行的。一種傳統的調試技術是單步調試器指令,其速度大大慢于程序的設計的實時運行速度。通過一步一步地單步調試器指令,當出現錯誤時可以觀察到錯誤的發生,可以對錯誤發生前所執行的程序代碼行進行分析,以尋找出錯的原因。然而,如果程序執行中出錯的原因是時序錯誤,或者是僅在程序以實時速度運行時才會發生的其它類型的錯誤,則這種技術就沒有用。這里所用的術語“實時”的意思是,為處理可能相當高的輸入數據速度,程序的執行所必須具有的速度。
一種廣泛使用的用于調試實時運行的程序的技術稱為“跟蹤”(tracing)。跟蹤要記錄計算機在執行程序代碼時所執行的事務。計算機在故障期間所進行活動的跟蹤記錄(trace),能為隔離可能的故障原因提供有用的指導。
另一種有用的調試工具是在程序中選定的位置設置斷點。斷點在軟件的流程中設陷阱,能深入探究是否、何時以及如何進入和退出軟件的某些部分。對軟件流程的分析能為查出故障提供有用的信息。
許多現有技術水平的跟蹤和設陷阱方法,都是通過一個與系統總線(即連接CPU與存儲器的總線)相連的調試支持電路而完成的。例如參看Somasundaram等人的名稱為“Debug Support in a ProcessorChip”(處理器芯片中的調試支持)(美國專利號5,491,793)的專利。將調試電路與系統總線連接是方便的,因為能通過系統總線訪問地址、指令和數據。然而,將調試支持電路與系統總線連接,增加了總線上的電氣負荷,并且干擾總線的操作。此外,系統總線的操作也會干擾調試支持電路的操作。再者,如果要調試在使用內部高速緩沖存儲器的CPU上運行的程序,系統總線也不能提供所需的全部信息。如果這些CPU能在高速緩沖存儲器中得到需要的信息,它們就不會利用系統總線。如果CPU在使用內部高速緩沖存儲器期間發生錯誤,調試支持電路將得不到它需要的信息。
在Whistel等人的名稱為“On-Chip In-Circuit-EmulatorMemory Mapping and Breakpoint Regi ster Modules”(芯片上電路內仿真器存儲變換和斷點寄存器模塊)(美國專利號5,883,310)的專利中,披露了另一種跟蹤和設陷阱方法。按照該方法,將一個內部總線控制器連接到存儲器地址總線和一個比較寄存器(matchregister)。當一個被寫到該地址總線的存儲器地址與該比較寄存器中的地址相匹配時,一個存儲變換模塊將一個存儲周期變換到一個外部調試存儲器。用戶能通過對一組斷點寄存器進行寫操作而為哪個存儲器被變換設置特定的總線事件條件。該方法的一個缺點是,它要求芯片有額外一組I/O引腳,能將外部調試存儲器與該芯片連接。這會要求又相當多的引腳,因為要被變換的地址可能有32或64位寬。
在授予Satagopan等人的名稱為“Error Condition Detectorfor Handling Interrupt in Integrated Circuits Having MultipleProcessors”(用于處理有多個處理器的集成電路中的中斷的出錯狀態檢測器)(美國專利號5,513,346)的專利中,披露了另一種跟蹤和設陷阱方法。按照該方法,一個中斷處理器控制器截獲所有中斷并將它們傳送到在一個多處理器芯片中的合適的處理器。該中斷處理器控制器包含確定某中斷何時將因為上次激起的中斷尚未被清除而導致一個錯誤的邏輯。當檢測到這樣一個錯誤時,就將出錯檢測寄存器中對應一個處理器間中斷通道的一位進行置位。該寄存器中的各位進行邏輯“或”運算,產生的一位輸出,指示發生一個錯誤。然后對該寄存器進行檢查,確定該中斷錯誤在執行程序碼中的位置。該方法不干擾系統總線,也不要求在芯片上有很多額外的引腳。不過該方法提供的調試信息卻有限。
摩托羅拉MPC-860 PowerQuiccTM包含一個程序開發系統接口端口,它在程序正在執行時提供一個表示程序執行的狀態的3位輸出。該MPC-860是個40mHz的通信控制器,但是該開發系統接口端口只能在4mHz的速度下運行。所以,該端口不能被用于實時調試。在“MPC-860 PowerQuicc User’s Manual”(MPC-860 PowerQuicc用戶手冊)(版權所有,1996,美國伊利諾依州Schaumberg摩托羅拉公司)中有對MPC-860的說明書,本文參考引用其全文。
采用一個或多個嵌入式處理器的ASIC設計,對調試提出了更多的要求。現有技術的在給定的時間點設陷阱指令的方法,意味著只有讓系統停止才能對固件進行調試。然而,一旦系統停止,實時事件以及它們的時序關系就丟失。如果有一個固件故障只有正在通信時(在實時操作期間)才能被識別,那么在修改固件之前有必要獲得有關該故障的上下文信息。
因此,本發明的一個目的是提供一種用于跟蹤指令而不丟失實時上下文和事件交互(event interaction)的調試接口。
本發明的另一個目的是提供一種不干擾處理器或系統總線的操作的調試接口。
本發明的再另一個目的是提供一種不要求在處理器芯片上有許多額外的引腳的調試接口。
本發明還有一個目的是提供一種能訪問相當多的有關被執行的指令的信息的調試接口。
依照這些以下將作詳細討論的目的,本發明的調試接口包含一個第一譯碼器,它與一個處理器的序列發生器連接,也與該處理器的指令RAM(IRAM)連接。按照本發明,該第一譯碼器每個周期提供一個實時的3位輸出,它指示上一個時鐘周期中處理器的活動。按照目前的最佳實施例,該3位輸出指示關于處理器活動的7種不同狀態。特別地,該3位輸出指示自上一個時鐘周期以來是否有新的指令被執行,是否已執行一個新的指令處理器執行的上一個指令是直接轉移(immediate jump)、寄存器轉移(jump to register)還是分支轉移(branch taken)。此外,該3位輸出將指示該指令的執行是否產生了一個例外。通過持續地記錄這3位輸出,將其與在程序碼中列出的實際指令作比較,就能獲得關于當時實時運行著的程序的重要調試信息。
按照本發明的一個最佳實施例,將一個第二譯碼器和一個事件歷史緩沖器連接到該處理器的序列發生器的原因寄存器(causeregister)。特別地,將該第二譯碼器連接到該歷史緩沖器的使能輸入端,將該原因寄存器連接到該歷史緩沖器的數據輸入端。第二譯碼器解譯原因寄存器的內容,每當原因寄存器的內容指示例外、寄存器轉移指令或者中斷行的狀態變化時,就使能歷史緩沖器。每當歷史緩沖器被使能時,原因寄存器和程序計數器的信息就被裝入該緩沖器。通過持續地記錄歷史緩沖器的內容,將該信息與實際的程序碼作比較,就能獲得關于當時實時運行著的程序的額外的重要調試信息。按照本發明的這個最佳實施例,由第一譯碼器的3位輸出所指示的第7種狀態是,是否遇到過例外而沒有寫到歷史緩沖器。
按照目前的最佳實施例,事件歷史緩沖器中的每個條目都是44位。歷史緩沖器中的每個44位的條目包含16位的當前時間戳記、23位的來自原因寄存器或程序計數器的某些字段的內容、表示該條目與一條轉移指令還是與一個例外相關的1位、標識(多處理器系統中的)處理器號的2位、標識該歷史緩沖器是否溢出的1位、1個時間戳記翻轉位。該歷史緩沖器的深度最好是至少有16個條目。
該調試接口的一個示例性實現,體現在一個有3個處理器的ASIC上。每個處理器具有兩個如上所述的譯碼器和一個在芯片上提供的事件歷史緩沖器。芯片上有9個引腳提供對每個第一譯碼器的3位輸出的訪問。芯片上有3個引腳提供對事件歷史緩沖器的內容的串行訪問(數據、時鐘和使能)。芯片上這12個引腳允許在實時操作期間將一個診斷設備連接到芯片,而不干擾芯片的操作。第一譯碼器的輸出和事件歷史緩沖器的內容可持續地由該診斷設備記錄,以提供對在芯片上實時發生的處理事件的實時記錄。該以對正在執行的程序碼的了解而采集的實時記錄,實時地提供了處理器的執行序列的一個真實圖象,借此加快了程序碼的調試。
對本領域的熟練人員來說,通過參考結合附圖的詳細說明,本發明的其它目的和優點將顯而易見。
圖1是按照本發明的一個實時調試器接口的示例性實現的示意框圖;圖2是一個與體現按照本發明的實時調試器接口的芯片相連接的調試系統的示意框圖。
現在參看圖1,包含一個按照本發明的調試器接口的示例性ASIC芯片10,包括3個處理器12a、12b、12c,它們通過時鐘總線17共享一個公共時鐘16。各處理器包括一個指令RAM(IRAM)18a、18b、18c,一個算術邏輯單元(ALU)20a、20b、20c和一個“序列發生器”22a、22b、22c。每個序列發生器包括一個程序計數器24a、24b、24c和一個原因寄存器26a、26b、26c。每個程序計數器含有一個指令在相關IRAM中的變址和一個當該指令被處理器執行時指向該變址的指針。原因寄存器存儲關于中斷、例外和其它處理器功能的當前信息。
按照本發明的一個方面,將一個第一譯碼器28a、28b、28c連接到每個IRAM 18a、18b、18c,并且連接到每個“序列發生器”22a、22b、22c,即連接到每個程序計數器和每個原因寄存器。每個第一譯碼器都有一個3位輸出30a、30b、30c,通過3個引腳(0、1、2)能在芯片10外實時地得到該輸出。
如上所述,每個第一譯碼器28的該3位輸出提供對上一個時鐘周期期間處理器活動的指示。所以,將譯碼器28安排得能指示程序計數器是否已經將其指針移到一個新的指令。譯碼器也解譯IRAM中的該指令,以提供關于該指令的信息,并且解譯原因寄存器的內容,以提供表示在指令執行期間遇到的例外。按照一個當前最佳的實施例,第一譯碼器28生成一個如下面的表1所示進行解釋的3位輸出。
表1輸出000指出自上一個時鐘周期以來處理器中沒有變化;即處理器沒有處理過新指令,并且程序計數器沒有改變。輸出001指出處理器已經處理了程序中的下一條指令;即程序計數器指針已經遞增到變址中的下一條指令。輸出010指出,處理器所處理的上一條指令是一個向某指令的“硬編碼的”轉移;即程序計數器指向的IRAM中的指令中包含的代碼表明,它是一條轉移指令,目標是程序中的某個絕對地址。輸出101指出,處理器所處理的上一條指令是一個向基于某寄存器的內容的指令的轉移;即程序計數器指向的IRAM中的指令中包含的代碼表明,它是一條轉移指令,目標是由某變量確定的程序中的某個位置。輸出100指出,自上一個時鐘周期以來,處理器遇到過中斷或例外;即原因寄存器的內容含有的代碼指示一個中斷或例外。輸出101指出,處理器所處理的上一條指令是一個pc分支轉移;即程序計數器指向的IRAM中的指令中包含的代碼表明,它是一條轉移回另一條指令的轉移指令。輸出110目前不使用,而保留起來供將來使用。輸出111指出,自上一個時鐘周期以來,處理器遇到過中斷或例外,沒有在歷史緩沖器中記錄下來。
結合表2中所示的一個簡單的程序碼列表,說明第一譯碼器的操作及其輸出。
表2表2中的列表在行80有一條“立即的”或“硬編碼的”轉移指令,在行50有一條條件轉移指令。在行60也有一條轉移指令,它根據的是一個寄存器的內容,即在行10被輸入的A的值。下面的表3中表示的是在表2中的指令的執行期間第一譯碼器的3位輸出,其中也顯示了變量A、B、C和D的值。
表3當(行10中列出的)第一條指令被執行時,第一譯碼器指出,在程序的執行中已經發生了一次程序計數器遞增(INC),并顯示輸出為“001”。在程序從行10前進到行40上的指令的過程中,第一譯碼器繼續指出在程序的執行中已經發生了一次程序計數器遞增(INC)并且繼續顯示輸出“001”。當行50上的指令被執行時,第一譯碼器指出已經發生過程序計數器分支轉移(PBT)并顯示輸出“101”。如表2和3中所見,程序轉移到行70,因為根據變量D=7,行50的條件表達式為真。當執行行70時,第一譯碼器指出,在程序的執行中發生了程序計數器遞增(INC),并顯示輸出“001”。當行80的指令被執行時,第一譯碼器指出發生了一個直接轉移(JI)并顯示輸出“0101”。如表2和3中所見,程序轉移到行30。當行30和40的指令被執行時,第一譯碼器指出,在程序的執行中發生了程序計數器遞增(INC),并顯示輸出“001”。當行50(現在第二次)被執行時,第一譯碼器指出在程序的執行中已經發生了程序計數器遞增(INC)并顯示輸出“001”,因為行50中轉移的條件(D=7)不再有效。現在執行行60并發生向在一個寄存器中存儲的位置的轉移。第一譯碼器于是通過顯示輸出“011”來指示一個寄存器轉移(JR)。
再次參看圖1,按照本發明的另一個方面,每個原因寄存器26a、26b、26c都連接到一個事件歷史緩沖器14的D數據輸入端,第二譯碼器32a、32b、32c連接到每個原因寄存器并且連接到該歷史緩沖器14的使能輸入端E。時鐘16通過時鐘總線17向歷史緩沖器14的時鐘輸入C提供公共時鐘信號,時間標記寄存器19也連接到時鐘總線17。由歷史緩沖器14的數據、時鐘和使能(D、C、E)三個引腳能在芯片外得到歷史緩沖器14的內容。按照本發明的這個方面,當某些條件被第二譯碼器32之一檢測到時,就通過適當的譯碼器使能該歷史緩沖器,將原因寄存器、時間標記寄存器和程序計數器的內容存儲到歷史緩沖器。更具體來說,每當第一譯碼器含有的代碼表明處理器正在處理一個要轉移到某寄存器中存儲的位置的指令時,每當第一譯碼器含有的代碼表明遇到過一個例外時,以及每當第一譯碼器含有的代碼表明某中斷線路的狀態有變化時,第二譯碼器32就使能歷史緩沖器。
按照一個當前最佳的實施例,當歷史緩沖器被使能時,它捕獲來自原因寄存器或程序計數器以及時間標記寄存器的44位數據。這44位數據的結構最好如下面的表4所示的那樣。
表4第1位是位位置43,它是一個方式標識符,指示所存儲的條目中有程序計數器信息還是原因寄存器信息。在位位置42、41存儲著兩位二進制格式的處理器標識號碼。該號碼被用來指示(就多處理器系統而言)所存儲的是哪個處理器的信息。此后自位位置40至18的23位被用來依照如上所述的方式存儲原因寄存器信息或程序計數器信息。如果所存儲的是程序計數器信息,程序計數器的內容被存儲在位位置40至18。如果所存儲的是原因寄存器信息,位位置40被用來指示當處理器在執行分支延遲時間片(branch delay slot)中的指令時是否發生過例外(這適用于流水線式處理器,諸如RISC處理器)。位位置39至35用來存儲處理器有關的例外條件。位位置43至18用來存儲指示所有待處理的中斷(外部的、軟件的、協處理器的)。位位置17的HOVRF字段用來指示內部事件歷史緩沖器是否已溢出。TR位16被用來指示一個時間標記翻轉,位15至0被用來存儲一個16位的時間標記。按照本發明當前最佳的實施例,在歷史緩沖器14中所捕獲的該44位是用44個時鐘周期在數據引腳D上串行輸出的(位串行輸出)。
如上所述,當發生某個事件(無屏蔽例外或PC寄存器轉移指令)時,事件歷史緩沖器記錄信息。按照本發明一個當前最佳的實施例,這要求每個原因寄存器有一個額外的屏蔽寄存器,有一個自由運行的(free running)時間標記寄存器。事件屏蔽是由靜態調試接口中一個JTAG測試寄存器裝入指令提供的。當某例外對應的原因寄存器位是無屏蔽或者遇到一條PC寄存器轉移指令時,就在歷史緩沖器中建立一個條目。
本領域的熟練人員明白,第一譯碼器28的輸出和歷史緩沖器14的內容,實時地提供對每個處理器的執行序列的相對完整的指示,特別是在實際正在執行的程序碼的角度看來是如此。因此,按照本發明,可以如圖2所示地將一個調試系統連接到該第一譯碼器和歷史緩沖器。
現在轉看圖2,將各第一譯碼器的輸出30a、30b、30c和歷史緩沖器的D、C、E端連接到一個調試計算機44,后者最好存儲該程序碼的一個副本。最好將第一譯碼器的3位輸出30a、30b、30c和歷史緩沖器的D、C、E端連接到一個接口緩沖器40,后者通過串行、并行或網絡連接40與調試計算機44連接。接口緩沖器40是一個速率去耦(rate decoupling)緩沖器。在本發明當前的實施例中,調試器接口是在一個100MHz的三處理器系統上提供的。在該系統中,讀事件歷史緩沖器的數據速率約為1吉比特/秒。目前的PC跟不上這個數據速率。因此提供緩沖器40,以防止事件歷史數據的丟失。
當程序在ASIC 10上運行時,調試計算機44從各第一譯碼器和歷史緩沖器收集信息。通過單步調試在計算機44中存儲的程序碼的副本,將計算機44所收集的信息與ASIC正在執行的每行代碼相關聯。當遇到一個故障時,就能用計算機44檢查導致該故障的指令執行的整個歷史。該調試系統是非侵犯型的,允許調試實時運行的程序。
本文至此說明和解釋了一種用于嵌入式系統的實時調試器接口。盡管描述了本發明的特定實施例,這并非要用其來限制本發明,因為這種描述旨在讓本發明的范圍盡本領域所允許的那樣寬,對本說明書要以同樣的觀點來閱讀。所以,盡管就第一譯碼器的輸出和歷史緩沖器的內容披露了特定的編碼方案,應當明白其它編碼方案如果能取得與本文所述的實質上相同的結果,那么也可以使用。另外,盡管本發明是針對一個三處理器的ASIC芯片作說明的,應當認識到,本發明可以應用于其它類型的有更多或更少處理器的芯片。此外,盡管就第一譯碼器所提供的指示而披露了特定的配置,應當明白,其它配置如果能取得與本文所述的實質上相同的結果,那么也可以使用。因此本領域的熟練人員應當知道,在不偏離權利要求書規定的精神和范圍的情況下還能對本發明作其它改進。
權利要求
1.一種有實時調試接口的處理器,該處理器包含a)用于存儲要由該處理器執行的指令的的指令存儲器裝置;b)與該指令存儲器裝置相連接的用于索引所述指令的程序計數器裝置;c)用于指示關于中斷和例外的信息的原因寄存器裝置;和d)用于指示關于由該處理器在一個時鐘周期內執行的指令的信息的第一譯碼器裝置,該第一譯碼器裝置與指令存儲器裝置、程序計數器裝置和原因寄存器裝置相連,第一譯碼器裝置有一個第一輸出,其中該第一輸出實時提供關于該處理器的活動的信息。
2.按照權利要求1的處理器,所述關于該處理器的活動的信息包括關于至少一種下列情況的信息執行過一條轉移指令,執行過一條基于某寄存器的內容的指令,作過分支轉移,遇到過一個例外。
3.按照權利要求1的處理器,其中所述時鐘周期是個處理器時鐘周期;所述第一譯碼器裝置每個處理器時鐘周期更新所述關于該處理器所執行的每條指令的信息。
4.按照權利要求3的處理器,其中所述關于該處理器所執行的每條指令的信息包括對自上個處理器周期以來是否執行過一條指令的指示。
5.按照權利要求1的處理器,其中所述第一輸出是個3位的并行輸出。
6.按照權利要求1的處理器,進一步包含e)與原因寄存器裝置相連接的用于指示關于原因寄存器裝置的內容的信息的第二譯碼器裝置,該第二譯碼器裝置有一個第二輸出;和f)用于存儲關于處理器事件的信息的事件歷史緩沖器裝置,該事件歷史緩沖器裝置有一個數據輸入端、一個數據輸出端和一個使能輸入端,數據輸入端與原因寄存器裝置連接,使能輸入端與所述第二輸出連接,其中第二譯碼器裝置解譯原因寄存器裝置的內容并在原因寄存器裝置的內容指示某個特定事件時使能事件歷史緩沖器裝置以捕獲原因寄存器裝置的內容。
7.按照權利要求6的處理器,其中當原因寄存器裝置的內容指示包括某中斷線的狀態的變化、內部處理器例外和基于某寄存器的內容的轉移指令的至少之一的一個事件時,第二譯碼器裝置使能事件歷史緩沖器裝置。
8.按照權利要求6的處理器,其中事件歷史緩沖器裝置的數據輸出端是個一個位串行輸出端。
9.按照權利要求6的處理器,其中該處理器是在一個有多個引腳的芯片上實現的,所述第一輸出端和數據輸出端是通過該多個引腳中的一些引腳提供的。
10.按照權利要求9的處理器,其中所述第一輸出端是個n位的并行輸出端,所述數據輸出端是個串行輸出端。
11.一種有多個處理器和一個實時調試接口的嵌入式系統,該系統包含a)多個指令存儲器裝置,用于存儲要由該多個處理器的各處理器執行的指令;b)多個程序計數器裝置,每個與多個指令存儲器裝置中相應的一個連接,用于索引所述指令存儲器裝置的內容;c)多個原因寄存器裝置,用于指示關于該多個處理器中一個對應處理器的中斷和例外的信息,所述每個原因寄存器裝置都與多個處理器中的一個相應的處理器連接;和d)多個第一譯碼器裝置,每個第一譯碼器裝置與指令存儲器裝置中相應的一個連接,與程序計數器裝置中相應的一個連接,與原因寄存器裝置中相應的一個連接,每個第一譯碼器裝置用于指示關于由相應一個處理器在一個時鐘周期內執行的指令的信息,每個第一譯碼器裝置有一個第一輸出,其中該第一輸出實時提供關于該處理器的活動的信息。
12.按照權利要求11的嵌入式系統,其中所述關于該處理器的活動的信息包括關于至少一種下列情況的信息執行過一條轉移指令,執行過一條基于某寄存器的內容的轉移指令,作過分支轉移,遇到過一個例外。
13.按照權利要求11的嵌入式系統,其中所述時鐘周期是個處理器時鐘周期;每個所述第一譯碼器裝置每個該相應處理器的處理器時鐘周期更新所述關于該相應處理器所執行的每條指令的信息。
14.按照權利要求13的嵌入式系統,其中每條所述關于由相應處理器所執行的每條指令的信息包括對自該相應處理器的上個處理器周期以來是否執行過一條指令的指示。
15.按照權利要求11的嵌入式系統,其中每個所述第一輸出都是個3位的并行輸出。
16.按照權利要求11的嵌入式系統,進一步包含e)多個第二譯碼器裝置,每個與多個原因寄存器裝置中相應的一個連接,每個第二譯碼器裝置用于指示關于相應的原因寄存器裝置的內容的信息;和f)一個用于存儲關于處理器事件的信息的事件歷史緩沖器裝置,該事件歷史緩沖器裝置有一個數據輸入端、一個數據輸出端和一個使能輸入端,數據輸入端與該多個原因寄存器裝置的每一個連接,使能輸入端與每一個所述第二輸出連接,其中每個第二譯碼器裝置解譯一個相應的原因寄存器裝置的內容并在該相應的原因寄存器裝置的內容指示某個特定事件時使能事件歷史緩沖器裝置以捕獲該相應的原因寄存器裝置的內容。
17.按照權利要求16的嵌入式系統,其中每個第二譯碼器裝置在相應的原因寄存器裝置的內容指示包括某中斷線的狀態的變化、內部處理器例外和基于某寄存器的內容的轉移指令的至少之一的一個事件時,使能事件歷史緩沖器裝置。
18.按照權利要求16的嵌入式系統,其中事件歷史緩沖器裝置的數據輸出端是個一個位串行輸出端。
19.按照權利要求11的嵌入式系統,其中該系統是在一個有多個引腳的芯片上實現的,所述第一和第二輸出端是通過該多個引腳中的一些引腳提供的。
20.按照權利要求19的嵌入式系統,其中所述第一輸出端是個n位的并行輸出端,所述第二輸出端是個串行輸出端。
21.一種調試處理器的方法,該方法包含a)實時提供關于該處理器的活動的信息;b)將該處理器執行的指令與關于該處理器的活動的信息關聯。
22.按照權利要求21的方法,其中提供關于該處理器的活動的信息的步驟包括提供關于該處理器所執行的每條指令的信息。
23.按照權利要求21的方法,其中提供關于該處理器的活動的信息的步驟包括提供該處理器在上一個處理器周期還沒有執行過一條指令的信息。
24.按照權利要求21的方法,其中關于該處理器的活動的信息包括關于至少一種下列情況的信息所執行的上條指令是轉移指令,執行過一條基于某寄存器的內容的轉移指令,作過分支轉移,或者一條遇到過一個例外的指令。
25.按照權利要求21的方法,進一步包含c)當發生某些處理器事件時,提供關于處理器的狀態的信息,所述某些處理器事件包括某中斷線的狀態的變化、內部處理器例外和基于某寄存器的內容的轉移指令的執行至少之一。
全文摘要
一個調試接口(10)包括一對譯碼器(28a、28b)和一個與處理器的序列發生器相連的事件歷史緩沖器(14)。第一譯碼器與處理器的指令RAM相連。第二譯碼器(32a)與序列發生器的原因寄存器(22a)相連,事件歷史緩沖器(14)也與原因寄存器(22a)相連。第一譯碼器(28a)提供一個3位的實時輸出(30a),它按周期指示處理器的活動。該3位輸出(30a)指示7種不同狀態:處理器執行的上一個指令是否是INC、例外、沒有事件歷史緩沖器條目的例外、分支轉移、上一個時鐘周期以來是否沒有執行過指令、一條轉移指令是直接轉移還是寄存器轉移。當第一譯碼器(28a)指出上一個指令是個例外或者是寄存器轉移,并且有中斷線的狀態改變或內部處理器例外事件時,將關于上一個被執行的指令的更詳細的信息裝入事件歷史緩沖器(14)。
文檔編號G06F11/36GK1306639SQ99807656
公開日2001年8月1日 申請日期1999年4月14日 優先權日1998年4月22日
發明者S·C·羅伊, P·赫姆布洛克, E·L·帕雷拉, R·馬里爾諾 申請人:美商傳威股份有限公司