專利名稱::數(shù)據(jù)處理裝置的除錯的制作方法
技術(shù)領域:
:本發(fā)明關(guān)于數(shù)據(jù)處理。更特定而言,本發(fā)明關(guān)于數(shù)據(jù)處理裝置的除錯(debugging)。
背景技術(shù):
:數(shù)據(jù)處理裝置的除錯是一種在于數(shù)據(jù)處理裝置上執(zhí)行的計算機程序或于包含數(shù)據(jù)處理裝置的電子硬件中,尋找錯誤(bug)或缺陷并減少錯誤或缺陷數(shù)量的方法過程。隨著微處理器隨著時間的演進,微處理器和設計為在微處理器上執(zhí)行的軟件變得更為復雜,使得對于產(chǎn)出高效的方法和系統(tǒng)以在操作中偵測缺陷而言,除錯過程逐漸變得更有挑戰(zhàn)性。已知提供數(shù)據(jù)處理裝置的除錯模式,將數(shù)據(jù)處理裝置切換為除錯模式以執(zhí)行除錯操作??紤]現(xiàn)代微處理器的復雜度,對于給定微處理器而言能夠執(zhí)行一個以上的指令集是常見的。例如,ARM7TDMI處理器核心能夠執(zhí)行正規(guī)的“A32”指令集(亦稱為“ARM”指令集)和更為精簡的“T32”指令集(亦稱為“Thumb”指令集),“A32”指令集包含32位寬操作碼,“T32”指令集提供已壓縮為16位寬操作碼的最常用的A32指令的子集。在執(zhí)行時,16位寬指令可被解壓縮為全32位寬A32指令,或可使用專用譯碼單元直接執(zhí)行。因此,給定數(shù)據(jù)處理裝置可能夠執(zhí)行復數(shù)個不同的指令集。A32指令集與T32指令集都對32位寬數(shù)據(jù)進行操作。除了能夠執(zhí)行復數(shù)個不同指令集的給定數(shù)據(jù)處理裝置以外,許多現(xiàn)代數(shù)據(jù)處理裝置能夠操作于復數(shù)個不同的操作狀態(tài),或操作于復數(shù)個不同的“權(quán)限級別(privilegelevels)”。在不同的權(quán)限級別,數(shù)據(jù)處理裝置對程序指令施加不同的對于存儲器和寄存器組的至少一者的存取許可(accesspermission)。例如,處理電路在標準權(quán)限級別下可存取的控制寄存器組,相較于處理電路在操作于較高權(quán)限級別時(例如在數(shù)據(jù)處理裝置操作于系統(tǒng)模式而非使用者模式時)可存取的控制寄存器組,通常將更為受限。在操作于不同的權(quán)限級別時,數(shù)據(jù)處理裝置通常將應用不同的虛擬至物理存儲器地址轉(zhuǎn)譯方案,來轉(zhuǎn)譯程序指令的存儲器地址。例如,在實施虛擬化(virtualisation)并運行超管理器(hypervisor)以使復數(shù)個不同的訪客操作系統(tǒng)能夠在相同數(shù)據(jù)處理裝置上運行的數(shù)據(jù)處理系統(tǒng)中,數(shù)據(jù)處理裝置的任何比超管理器的權(quán)限級別低的權(quán)限級別(亦即,在超管理器的監(jiān)督下運行),將具有與虛擬化過程相關(guān)聯(lián)的額外的地址轉(zhuǎn)譯級別。該額外的地址轉(zhuǎn)譯級別使用“虛擬轉(zhuǎn)譯表基址寄存器(virtualtranslationtablebaseregister)”。然而,對應于超管理器層本身的權(quán)限級別不需參考虛擬轉(zhuǎn)譯表基址寄存器,而僅需參考轉(zhuǎn)譯表基址寄存器且因此涉及的轉(zhuǎn)譯級將少一級。已知在能夠執(zhí)行復數(shù)個指令集的處理器中,施加默認除錯指令集用于在數(shù)據(jù)處理裝置位于除錯模式中時使用。例如,在ARM10、ARM11與ARMCortex處理器中,默認為在數(shù)據(jù)處理裝置被切換為除錯模式時使用A32指令集。替代性的已知作法為(例如在ARM7TDMI與ARM9處理器中)在進入除錯模式時,指令集狀態(tài)保持為如進入除錯模式時的狀態(tài),使得若數(shù)據(jù)處理裝置在進入除錯模式時正執(zhí)行T32指令,則將T32指令用于除錯過程,而若數(shù)據(jù)處理裝置在進入除錯模式時正執(zhí)行A32指令,則將用A32指令執(zhí)行除錯過程。然而,由于在數(shù)據(jù)處理裝置操作狀態(tài),亦即,在欲執(zhí)行除錯操作時數(shù)據(jù)處理裝置正操作于的權(quán)限級別,與分配用于數(shù)據(jù)處理裝置的除錯模式中的指令集之間可能的不匹配,可能發(fā)生問題。因此,適合用于處理器當前權(quán)限級別的虛擬至物理地址轉(zhuǎn)譯方案,可不兼容于選定的除錯指令集。在可配置為具有用于指令的可變寬度寄存器的數(shù)據(jù)處理裝置中,此可代表特定問題,因為具有較大操作數(shù)(operand)位寬的指令必須被用于除錯過程,而處理器的操作狀態(tài)可能意味著在除錯模式中應當實施32位虛擬至物理地址轉(zhuǎn)譯方案。處理器操作狀態(tài)與除錯指令集之間的這種潛在的不匹配增加了除錯操作的復雜度,因為除錯模塊硬件隨后將需被設計為容納大量的位圖樣(bitpattern),位圖樣對應于可由數(shù)據(jù)處理裝置執(zhí)行的復數(shù)個指令集中的每一者。因此,產(chǎn)生了減少除錯電路復雜度但仍能夠?qū)?shù)據(jù)處理裝置的除錯提供靈活性的需求,該數(shù)據(jù)處理裝置能夠操作于復數(shù)個不同的權(quán)限級別和/或能夠執(zhí)行復數(shù)個不同的指令集。
發(fā)明內(nèi)容根據(jù)第一方面,本發(fā)明提供一種數(shù)據(jù)處理裝置,包含:數(shù)據(jù)處理電路,該數(shù)據(jù)處理電路用于響應于程序指令的執(zhí)行而執(zhí)行數(shù)據(jù)處理操作,該數(shù)據(jù)處理電路被配置為至少操作于操作模式和除錯模式中;除錯電路,該除錯電路被配置為在該數(shù)據(jù)處理電路與除錯器單元之間提供接口,該除錯器單元位于該數(shù)據(jù)處理電路的外部,該除錯電路被配置為在該數(shù)據(jù)處理電路正操作于該除錯模式時控制該數(shù)據(jù)處理電路的操作;其中該數(shù)據(jù)處理電路被配置為在該數(shù)據(jù)處理電路進入該除錯模式時,確定該數(shù)據(jù)處理電路的當前操作狀態(tài),并根據(jù)該當前操作狀態(tài)分配復數(shù)個指令集中的一個以作為除錯指令集。本發(fā)明認知到通過在數(shù)據(jù)處理電路進入除錯模式時確定數(shù)據(jù)處理裝置的當前操作狀態(tài),并根據(jù)當前操作狀態(tài)分配復數(shù)個指令集中的一個以作為除錯指令集,可提供良好的靈活性水平。這是因為提供了在除錯模式中使用多于單一默認指令集,且根據(jù)數(shù)據(jù)處理裝置的當前操作狀態(tài)適當?shù)剡x擇所選定指令集的機會。這提高了數(shù)據(jù)處理電路的當前操作狀態(tài)與所分配的除錯指令集之間的兼容性的可能性。通過不是簡單地在進入除錯模式時選定當前指令集,可減少在除錯模式中需要被支持的指令總數(shù)。事實上,在除錯模式中僅需實施能夠被數(shù)據(jù)處理裝置執(zhí)行的所有復數(shù)個指令集的一個子集。這簡化了除錯指令的驗證,并減少了除錯電路的成本。根據(jù)數(shù)據(jù)處理電路在進入除錯模式時的當前操作狀態(tài)來使能對復數(shù)個指令集之一的分配,有效地確保了在除錯模式中被譯碼的指令對當前操作狀態(tài)的存儲器配置(亦即,權(quán)限級別)是適當?shù)?。將認知到,數(shù)據(jù)處理裝置可被配置為操作于涉及數(shù)據(jù)處理硬件的不同視點的多個不同操作狀態(tài)的任一狀態(tài)中,且可根據(jù)當前操作狀態(tài)的特定性質(zhì)來分配適當?shù)某e指令集。然而,在一些具體實施例中,數(shù)據(jù)處理電路可被配置為操作于復數(shù)個權(quán)限級別,其中,數(shù)據(jù)處理電路在不同的權(quán)限級別對程序指令施加不同的對于存儲器和寄存器組的至少一者的存取許可。例如,在較高的權(quán)限級別,與較低的權(quán)限級別相比,數(shù)據(jù)處理裝置可存取更大的控制寄存器組??蓱弥敛煌瑱?quán)限級別的存儲器和/或寄存器的不同視點使得在除錯指令集與處理器的當前操作狀態(tài)之間取得兼容性。根據(jù)當前權(quán)限級別從復數(shù)個替代性除錯指令集分配除錯指令集的能力提高了除錯操作的效率。將認知到,在不同的權(quán)限級別,除了對存儲器和寄存器的至少一者的存取許可的不同以外,數(shù)據(jù)處理裝置可具有各種的操作狀態(tài)差異。然而,在一具體實施例中,在上述權(quán)限級別中的不同權(quán)限級別中,該數(shù)據(jù)處理電路分別應用不同的虛擬存儲器地址至物理存儲器地址轉(zhuǎn)譯規(guī)則。當數(shù)據(jù)處理裝置在不同的操作狀態(tài)使用不同的虛擬至物理地址轉(zhuǎn)譯規(guī)則時,若在除錯模式中分配了不適當?shù)某e指令集,則除錯操作可變得過度復雜。例如,在當前操作狀態(tài)為訪客操作系統(tǒng)被配置為將32位虛擬地址轉(zhuǎn)譯成物理地址,而默認除錯指令集卻包含產(chǎn)生64位虛擬地址的指令時,可發(fā)生問題。這將需要從64位除錯指令產(chǎn)生32位虛擬地址,或需要在被配置為轉(zhuǎn)譯32位虛擬地址的系統(tǒng)中轉(zhuǎn)譯64位虛擬地址的構(gòu)件。因此,對于避免在當前實施的虛擬至物理存儲器地址轉(zhuǎn)譯方案與除錯操作欲執(zhí)行的指令之間的不兼容性而言,根據(jù)處理器當前操作狀態(tài)適當?shù)胤峙涑e指令集的能力是有用的。在一些具體實施例中,該數(shù)據(jù)處理裝置被配置為執(zhí)行對應于復數(shù)個不同的軟件階層(softwarehierarchicallevels)的程序指令,該復數(shù)個不同的軟件階層對應于各自的復數(shù)個權(quán)限級別。因此,例如,一個權(quán)限級別可對應于訪客操作系統(tǒng),而另一權(quán)限級別可對應于使用者應用。由于對數(shù)據(jù)處理裝置在軟件方面向后兼容的一般要求,諸如對在本質(zhì)上能夠執(zhí)行64位指令的數(shù)據(jù)處理裝置上能夠執(zhí)行32位操作系統(tǒng)的要求),可導致問題。根據(jù)當前操作狀態(tài)且因此根據(jù)當前軟件階層分配適當?shù)某e指令集的能力在除錯系統(tǒng)內(nèi)提供了充分地應對包含向后兼容性的系統(tǒng)中的除錯的靈活性。將認知到,與不同的軟件階層相對應的復數(shù)個權(quán)限級別可包含許多且多變的不同的軟件層組合。然而,在一具體實施例中,除了應用層與操作系統(tǒng)層以外,復數(shù)個軟件階層還包含超管理器層。這使系統(tǒng)能夠方便地應對虛擬化。在另一具體實施例中,除了應用系統(tǒng)層和操作系統(tǒng)層以及有或沒有的超管理器層以外,還提供了安全監(jiān)視層。在操作于安全模式時,為了保持數(shù)據(jù)處理裝置的整體性,確保選定了適當?shù)某e指令集是特別重要的。將認知到,在初始進入除錯模式時,可根據(jù)進入除錯模式時的當前操作狀態(tài)分配單個除錯指令集。然而,在一些具體實施例中,數(shù)據(jù)處理裝置可從除錯模式本身內(nèi)進行配置,以在復數(shù)個權(quán)限級別中的不同者之間切換,且數(shù)據(jù)處理電路被配置為重復確定當前操作狀態(tài)并根據(jù)數(shù)據(jù)處理裝置新切換的操作狀態(tài)重復分配除錯指令集。這確保了盡管在執(zhí)行除錯操作的同時對當前操作狀態(tài)進行切換,也仍可分配適當?shù)某e指令集。這提供了額外的靈活性來使除錯電路能夠被控制為從一個操作狀態(tài)切換至不同操作狀態(tài)以便進一步調(diào)查即將發(fā)生的系統(tǒng)錯誤,并確保不管該靈活性如何,在除錯指令集與當前操作狀態(tài)之間的兼容性仍能維持。將認知到,數(shù)據(jù)處理裝置的當前操作狀態(tài)可從具有相等操作數(shù)位寬的復數(shù)個不同的處理器操作狀態(tài)中選定。然而,在一個具體實施例中,當前操作狀態(tài)是從各自具有不同的操作數(shù)位寬的復數(shù)個不同的處理器操作狀態(tài)中選定的。在能夠執(zhí)行具有不同操作數(shù)位寬的指令的數(shù)據(jù)處理裝置中,容易發(fā)生兼容性問題,例如,因為虛擬至物理地址轉(zhuǎn)譯方案在兩個不同的操作數(shù)位寬之間而不同,等等。因此,根據(jù)當前操作狀態(tài)適當?shù)胤峙涑e指令集的能力是有用的,該能力可避免在除錯模式中需要實現(xiàn)過度麻煩的轉(zhuǎn)換處理。在一些此等具體實施例中,具有操作數(shù)位寬的復數(shù)個操作狀態(tài)至少包含32位操作狀態(tài)和64位操作狀態(tài)。將認知到,本技術(shù)可應用至任何數(shù)據(jù)處理裝置,諸如通過從存儲器讀取操作數(shù)以執(zhí)行指令的數(shù)據(jù)處理裝置。然而,在一些具體實施例中,數(shù)據(jù)處理裝置包含用于儲存程序指令的操作數(shù)的復數(shù)個寄存器,且其中不同的操作數(shù)位寬度對應于處理電路所使用的不同的寄存器寬度。在此種可配置為使用可變寄存器寬度的數(shù)據(jù)處理裝置中,能夠根據(jù)當前操作狀態(tài)分配適當?shù)某e指令集是有用的,因為可根據(jù)可變寬度寄存器的當前設置來適當?shù)剡x擇除錯指令集的分配。在一些此種具體實施例中,具有不同的操作數(shù)位寬的復數(shù)個寄存器的至少一子集被配置為可變寬度寄存器。在一些具體實施例中,數(shù)據(jù)處理電路被配置為通過寫入可被除錯電路存取的至少一個寄存器,來對除錯電路指示已根據(jù)當前操作狀態(tài)分配的除錯指令集。這提供了方便的方法以指示供除錯電路使用的適當?shù)某e指令集。在替代性具體實施例中,數(shù)據(jù)處理電路被配置為通過傳送控制命令至除錯器單元,來對除錯器單元指示除錯指令集。這節(jié)省了寄存器空間。將認知到,數(shù)據(jù)處理裝置可根據(jù)數(shù)種不同方法的任一種來確定當前操作狀態(tài)。然而,在一些具體實施例中,數(shù)據(jù)處理裝置被配置為在可被除錯器單元存取的給定位置中維護當前操作狀態(tài)的所儲存值。這直截了當?shù)貙崿F(xiàn)并允許除錯器單元在需要時容易地存取當前操作狀態(tài),而不論數(shù)據(jù)處理器何時從非除錯模式切換為除錯模式。在一些具體實施例中,數(shù)據(jù)處理裝置可被配置為在復數(shù)個不同的權(quán)限級別操作,當前操作狀態(tài)是從復數(shù)個處理器操作狀態(tài)中選定的,該復數(shù)個處理器操作狀態(tài)具有各自的操作數(shù)位寬,且數(shù)據(jù)處理裝置被配置為在可被除錯電路存取的第一位置中,維護與復數(shù)個權(quán)限級別的每一個相關(guān)聯(lián)的操作數(shù)位寬的記錄。不同處理器操作狀態(tài)的操作數(shù)位寬不一定都不同,例如,對于四個權(quán)限級別與兩個位寬度而言,可對兩個以上權(quán)限級別使用相同的操作數(shù)位寬。這對于針對每個可能的權(quán)限級別儲存相關(guān)聯(lián)的操作數(shù)位寬提供了方便的手段,這意味著可輕易確定適當?shù)某e指令集。應注意到,當前儲存于所維護記錄中的操作數(shù)位寬將取決于當前時間,因為將認知到,數(shù)據(jù)處理裝置在不同時間可執(zhí)行例如不同的程序操作或不同的訪客操作系統(tǒng),且因此在不同時間與給定權(quán)限級別相關(guān)聯(lián)的操作數(shù)位寬可不同。在與復數(shù)個權(quán)限級別的每個相關(guān)聯(lián)的操作數(shù)位寬的記錄被儲存在第一位置中的一些這種具體實施例中,數(shù)據(jù)處理裝置還被配置為在除錯器單元可存取的第二位置中,維護數(shù)據(jù)處理電路正操作于的當前權(quán)限級別的記錄。通過參考第一位置與第二位置兩者,除錯器單元可輕易地確定對應于當前權(quán)限級別的操作數(shù)位寬,且因此可根據(jù)當前操作數(shù)位寬適當?shù)卮_定數(shù)據(jù)處理電路被分配的除錯指令集。在一些具體實施例中,數(shù)據(jù)處理電路使用該當前權(quán)限級別來從具有各自的操作數(shù)位寬的復數(shù)個處理器操作狀態(tài)中確定該除錯指令集。在一些此種具體實施例中,數(shù)據(jù)處理裝置被配置為維護對應于當前處理器操作狀態(tài)的當前操作數(shù)位寬的記錄。在替代性具體實施例中,除錯器單元被配置為使用該當前操作數(shù)位寬的該記錄來推斷除錯指令集,并使至少一個程序指令被數(shù)據(jù)處理電路執(zhí)行以確定數(shù)據(jù)處理電路正操作于的當前權(quán)限級別。這實現(xiàn)起來是較便宜的,因為與對于復數(shù)個可能的權(quán)限級別的每一個來為操作數(shù)位寬提供儲存位置相比,其使用較少的寄存器空間。使用較少寄存器空間的事實抵消了確定當前異常級別所需的邏輯方面的額外成本。雖然在此情況下除錯器單元推斷出除錯指令集,但是數(shù)據(jù)處理電路對適當?shù)某e指令集作出初始確定(即,事實上分配了除錯指令集),且除錯器單元隨后基于寄存器內(nèi)容確定數(shù)據(jù)處理電路做了些什么。另一方面,在使用當前權(quán)限級別的記錄和與至少復數(shù)個權(quán)限級別相關(guān)聯(lián)的操作數(shù)位寬的記錄兩者的具體實施例中,這兩個儲存地址集合的狀態(tài)容易方便地鏡像反映出例如處理器中其它地方的寄存器的狀態(tài),并向除錯器提供了更多信息,并減少了為了確定適當?shù)某e指令集而欲執(zhí)行的程序指令數(shù)量。將認知到,所分配的除錯指令集可包含可由數(shù)據(jù)處理裝置在非除錯模式中執(zhí)行的完整指令集。然而在一些具體實施例中,所分配的除錯指令集包含完整指令集的子集。在一些此種具體實施例中,該子集為下列集合之一的子集:A32指令集;T32指令集;Τ32ΕΕ指令集;以及Α64指令集。因此,在除錯模式中不想要和/或無用的完整指令集中的這些指令可輕易地從被分配為在除錯模式中使用的完整指令的子集中排除。例如,在除錯模式中時,給定完整指令集的分支指令(branchinstructions)可被強迫為未定義。根據(jù)第二方面,本發(fā)明提供一種數(shù)據(jù)處理方法,包含以下步驟:響應于程序指令的執(zhí)行而在數(shù)據(jù)處理電路上執(zhí)行數(shù)據(jù)處理操作,數(shù)據(jù)處理電路被配置為至少操作于操作模式與除錯模式中;在該數(shù)據(jù)處理電路與除錯器單元之間提供除錯接口,該除錯器單元位于該數(shù)據(jù)處理電路的外部,該除錯接口被配置為在該數(shù)據(jù)處理電路正操作于該除錯模式中時控制該數(shù)據(jù)處理電路的操作;在該數(shù)據(jù)處理電路進入該除錯模式時,確定該數(shù)據(jù)處理電路的當前操作狀態(tài),并根據(jù)該當前操作狀態(tài)分配復數(shù)個指令集中的一者以作為除錯指令集。根據(jù)第三方面,本發(fā)明提供一種數(shù)據(jù)處理設備,包含:用于響應于程序指令的執(zhí)行而執(zhí)行數(shù)據(jù)處理操作的裝置,該用于執(zhí)行數(shù)據(jù)處理操作的裝置被配置為至少操作于操作模式和除錯模式中;用于除錯的裝置,被配置為在該用于執(zhí)行數(shù)據(jù)處理的裝置與用于除錯分析的裝置之間提供接口,該用于除錯分析的裝置位于該數(shù)據(jù)處理裝置的外部,該用于除錯的裝置被配置為在該用于執(zhí)行數(shù)據(jù)處理的裝置操作于該除錯模式中時控制該用于執(zhí)行數(shù)據(jù)處理的裝置的操作;其中該用于執(zhí)行數(shù)據(jù)處理的裝置被配置為在該用于執(zhí)行數(shù)據(jù)處理的裝置進入該除錯模式時,確定該用于執(zhí)行數(shù)據(jù)處理的裝置的當前操作狀態(tài),并根據(jù)該當前操作狀態(tài)分配復數(shù)個指令集中的一個以作為除錯指令集。在所附權(quán)利要求中定義了本發(fā)明的各種各別的方面與特征。來自從屬權(quán)利要求的特征的組合,可與獨立權(quán)利要求的特征適當?shù)亟Y(jié)合,且不僅限于明確地揭示于權(quán)利要求中的?,F(xiàn)在將參考附圖僅以示例的方式來描述本發(fā)明的優(yōu)選實施例,其中:第I圖示意地圖示說明根據(jù)本發(fā)明的第一具體實施例的數(shù)據(jù)處理裝置,其中處理器實現(xiàn)可變寄存器寬度,且提供包含外部除錯接口寄存器的除錯模塊;第2圖示意地圖示說明第I圖的數(shù)據(jù)處理裝置的復數(shù)個不同的操作狀態(tài),以及這些操作狀態(tài)如何對應于復數(shù)個不同的權(quán)限級別和各自的復數(shù)個軟件階層;第3圖示意地圖示說明四個不同的權(quán)限級別、數(shù)據(jù)處理裝置如何執(zhí)行不同權(quán)限級別之間的切換、以及不同權(quán)限級別如何實施對于虛擬地址至物理地址轉(zhuǎn)譯的不同方案;第4A圖示意地圖示說明第I圖的外部除錯接口寄存器(EDIFR)中的位分配的子集;第4B圖示意地圖示說明對于第I圖的EDIFR的權(quán)限級別指示位的位圖樣和各自權(quán)限級別;第4C圖示意地圖示說明對于復數(shù)個寄存器寬度位圖樣的每個,針對四個權(quán)限級別的每個的對應處理器狀態(tài);第5圖示意地圖示說明對于32位處理器操作狀態(tài)與64位處理器操作狀態(tài)兩者,在處理器操作狀態(tài)與可用的對應指令集之間的映射;第6圖是示意地圖示說明如何由第I圖的數(shù)據(jù)處理裝置分配適當除錯指令集的流程圖;且第7圖示意地圖示說明虛擬機實施方式。具體實施例方式第I圖示意圖示說明根據(jù)本發(fā)明具體實施例的數(shù)據(jù)處理裝置。數(shù)據(jù)處理裝置包含集成電路100,集成電路100包含形成“芯片上系統(tǒng)(System-On-Chip)”的復數(shù)個電路部件。集成電路100包含:執(zhí)行流水線110、通用寄存器組120、控制寄存器組160、除錯模塊130、除錯端口132、存儲器管理單元(MMU)與芯片上(on-chip)存儲器142。數(shù)據(jù)處理裝置100亦可存取芯片外(off-chip)存儲器144。數(shù)據(jù)處理裝置100的除錯端口132被連接至主機個人計算機150,主機個人計算機150被配置為運行除錯器軟件組152以輔助對數(shù)據(jù)處理裝置100除錯。第I圖的數(shù)據(jù)處理裝置100具有RISC(RedeucedInstructionSetComputing,精簡指令集計算)架構(gòu),RISC架構(gòu)為裝載-儲存(load-store)架構(gòu),其中對數(shù)據(jù)進行處理的指令僅在寄存器上操作且與對存儲器進行存取的指令分離。數(shù)據(jù)處理裝置100為流水線式數(shù)據(jù)處理裝置,且執(zhí)行流水線110包含擷取級、譯碼級與執(zhí)行級(未圖示)。寄存器組包含通用寄存器120與控制寄存器160。在此特定具體實施例中,寄存器組120包含復數(shù)個64位寄存器,該復數(shù)個64位寄存器可配置以如可變寬度寄存器般操作,以使得在數(shù)據(jù)處理電路100操作于32位寄存器寬度操作狀態(tài)中時,亦即,在執(zhí)行實質(zhì)上處理32位數(shù)據(jù)并使用32位虛擬地址的程序(稱為32位程序,包含32位程序指令)時,數(shù)據(jù)處理裝置將寄存器組120視為32位寄存器,而當數(shù)據(jù)處理裝置100操作于64位寄存器寬度操作狀態(tài)時,亦即,在執(zhí)行實質(zhì)上處理64位數(shù)據(jù)并使用32位以上的虛擬地址的程序(稱為64位程序,包含64位程序指令)時,數(shù)據(jù)處理裝置100被配置為使得寄存器組120的每一寄存器的全64位寬度被利用。然而,注意,在處理電路100操作于32位寄存器寬度操作狀態(tài)時,仍可執(zhí)行一些64位操作(例如,64位值的寬乘法和裝載/儲存)。類似地,在處理電路100操作于64位寄存器寬度操作狀態(tài)時,仍可執(zhí)行一些32位操作。當在非除錯操作模式中時,數(shù)據(jù)處理電路100從系統(tǒng)存儲器亦即,從芯片上存儲器142或芯片外存儲器144擷取指令以執(zhí)行。存儲器管理單元140根據(jù)數(shù)據(jù)處理裝置100的當前操作狀態(tài),控制對存儲器142、144的存取,以使得例如相較于在系統(tǒng)模式中可存取的存儲器位置,在使用者模式中更小子集的存儲器位置可被數(shù)據(jù)處理電路100存取。存儲器管理單元140負責管理執(zhí)行流水線110對存儲器的所有存取請求,存儲器管理單元140的功能包含虛擬存儲器地址至物理存儲器地址的轉(zhuǎn)譯、存儲器保護、高速緩存控制和總線仲裁。在數(shù)據(jù)處理裝置100進入除錯模式時,執(zhí)行流水線直接地從除錯模塊130的指令傳輸寄存器(instructiontransferregister;ITR)134掘取指令。指令傳輸寄存器134在除錯軟件152的控制下被裝載除錯指令,除錯器軟件152在主機個人計算機150上執(zhí)行,主機個人計算機150在除錯模式中經(jīng)由除錯端口132控制數(shù)據(jù)處理電路100。在此具體實施例中,除錯器軟件152與運行除錯器軟件152的主機個人計算機150代表除錯器單元。然而,在替代性具體實施例中,除錯器單元被制造在與數(shù)據(jù)處理電路相同的集成電路上??刂萍拇嫫?60儲存負責控制數(shù)據(jù)處理裝置100的各方面的控制值。具體而言,他們對于數(shù)據(jù)處理裝置100的復數(shù)個“權(quán)限級別”的每一個(參照第2圖詳細描述),儲存與此權(quán)限級別相關(guān)聯(lián)的對應的操作數(shù)位寬操作狀態(tài)。除錯模塊130更進一步包含外部除錯接口寄存器(EDIFR)136,EDIFR136維護與復數(shù)個權(quán)限級別的每一個相關(guān)聯(lián)的寄存器寬度狀態(tài)(亦即,操作數(shù)位寬狀態(tài))的記錄,以及數(shù)據(jù)處理裝置100正操作于的當前權(quán)限級別的記錄。EDIFR136對于除錯器軟件152是可見的。在數(shù)據(jù)處理裝置100從標準操作模式(或任何非除錯模式)切換為除錯模式時,數(shù)據(jù)處理裝置100根據(jù)儲存在控制寄存器160中的數(shù)據(jù)確定數(shù)據(jù)處理裝置的當前操作狀態(tài),并根據(jù)此狀態(tài)選定復數(shù)個不同的除錯指令集的一者來實施以執(zhí)行除錯操作,且相應地更新EDIFR136中的記錄。對于除錯器軟件152,在位于除錯模式中的同時,可發(fā)起數(shù)據(jù)處理裝置100從一個操作狀態(tài)至另一個不同的操作狀態(tài)的切換。例如,可將數(shù)據(jù)處理裝置從操作于第一權(quán)限級別(以執(zhí)行第一組除錯指令)切換為操作于不同的第二權(quán)限級別(以執(zhí)行第二組除錯指令)。因此,除錯模塊130被配置為基于在操作狀態(tài)切換時控制寄存器160中的信息,重復確定數(shù)據(jù)處理電路100的當前操作狀態(tài),并將經(jīng)更新的除錯指令集分配用于除錯操作,且相應地更新EDIFR136中的記錄。在此情況下,所實施的除錯指令集可與操作狀態(tài)切換相對應地改變,或者替代地可保持不變。雖然在第I圖的具體實施例中,EDIFR136位于除錯模塊130中,在替代性具體實施例中EDIFR136位于在數(shù)據(jù)處理裝置100外部的主機個人計算機150中,亦即,在除錯器單元中。在另一替代性具體實施例中,EDIFR未被實施,但除錯器單元通過從主系統(tǒng)寄存器(亦即控制寄存器160)讀取狀態(tài)值而獲得EDIFR中包含的信息。在硬件階層,EDIFR寄存器136可被實施為閂鎖器電路(如在第I圖的具體實施例內(nèi)那樣)或?qū)嵤閬碜韵到y(tǒng)寄存器的簡單組合路徑。再者,雖然在第I圖的具體實施例內(nèi),主機PC(除錯器單元)相對于數(shù)據(jù)處理電路100位于芯片外,在替代性具體實施例中,數(shù)據(jù)處理裝置100與用于控制除錯操作并執(zhí)行除錯器軟件152的電路(亦即除錯單元)被制造在相同的集成電路上,以使數(shù)據(jù)處理電路100不形成整個的芯片上系統(tǒng)。在這樣的具體實施例中,邏輯上可將除錯電路視為正被除錯的處理器的一部分,且除錯單元為位于相同芯片上系統(tǒng)上的第二個不同的處理器。在第I圖的具體實施例中,向除錯器單元150提供接口(例如,先進微控制器總線架構(gòu)(AdvancedMicrocontrollerBusArchitecture))的除錯模塊30的除錯電路是與芯片上系統(tǒng)的數(shù)據(jù)處理電路100相同的“巨晶元(macrocell)”的一部分。第2圖示意地說明第I圖的數(shù)據(jù)處理裝置100的復數(shù)個不同的操作狀態(tài),該復數(shù)個不同操作狀態(tài)對應于各自的復數(shù)個不同權(quán)限級別。各權(quán)限級別對應于在第I圖的數(shù)據(jù)處理裝置100上執(zhí)行的各自不同的軟件階層。第2圖的最上行對應于最低權(quán)限級別PL0,而第2圖的最下行對應于最高權(quán)限級別PL3。在最低權(quán)限級別PLO與最高權(quán)限級別PL3之間有兩個中間權(quán)限級別PLl與PL2。最低權(quán)限級別PLO對應于應用軟件層。在此范例具體實施例中,數(shù)據(jù)處理裝置100通過對處理資源進行時分復用(timedivisionmultiplexing)來執(zhí)行六個不同的應用程序,以使在任一時刻處,六個不同的應用程序中僅有一個具有對數(shù)據(jù)處理電路100的控制。第一程序應用202為32位程序,包含32位程序指令,且因此在執(zhí)行此第一應用202時,數(shù)據(jù)處理裝置100處于32位操作狀態(tài)中。第二程序應用204亦為其執(zhí)行需要32位處理器操作狀態(tài)的32位程序應用。第三程序應用206為64位程序,包含64位程序指令,且因此在執(zhí)行此應用時,數(shù)據(jù)處理裝置被置入64位操作狀態(tài)中。第四程序應用208為需要32位處理器操作狀態(tài)的32位程序應用。最低權(quán)限級別PLO亦包含第一安全64位程序應用209與第二安全32位程序應用210。這些安全應用僅可在數(shù)據(jù)處理裝置處于安全操作模式中時被執(zhí)行。第一權(quán)限級別PLl(第二低的權(quán)限級別)對應于操作系統(tǒng)軟件層。在第I圖與第2圖的具體實施例中,數(shù)據(jù)處理裝置設定為具有容納三個不同訪客操作系統(tǒng)的能力。第一訪客操作系統(tǒng)222為32位操作系統(tǒng),意味著包含具有32位虛擬地址的32位程序。第二訪客操作系統(tǒng)224為64位操作系統(tǒng),意味著包含具有32位以上虛擬地址的64位程序。64位安全操作系統(tǒng)226亦位于第一權(quán)限級別PL1,以供專屬用在處理器操作的安全模式中。操作系統(tǒng)負責管理應用,具體而言,控制應用對下層數(shù)據(jù)處理系統(tǒng)100的存取,并且負責不同應用之間的時分復用,包括在多處理器和多線程處理器中將應用程序分配給不同處理器和線程。在第I圖與第2圖的具體實施例中,32位操作系統(tǒng)僅可管理32位程序應用,且因此由第一訪客操作系統(tǒng)222管理的兩個應用(即,第一程序應用202與第二程序應用204)皆為32位程序應用。然而,64位操作系統(tǒng)能夠管理64位與32位程序應用兩者,且因此由第二訪客操作系統(tǒng)224和安全操作系統(tǒng)226管理的應用包含32位程序應用與64位程序應用的混合。操作系統(tǒng)222、224與226負責控制成對轉(zhuǎn)譯表基址寄存器(TTBR0_PL1與TTBR1_PL1),該成對轉(zhuǎn)譯表基址寄存器影響如何對在權(quán)限級別PLO處執(zhí)行的每個應用以及如何對在權(quán)限級別PLl處執(zhí)行的操作系統(tǒng)自身,執(zhí)行虛擬至物理存儲器地址轉(zhuǎn)譯。第二權(quán)限級別PL2對應于超管理器軟件層。在第2圖中,超管理器230為包含在數(shù)據(jù)處理裝置100上執(zhí)行的64位程序指令的64位程序,并使第一訪客操作系統(tǒng)222、第二訪客操作系統(tǒng)224能夠在同一數(shù)據(jù)處理裝置100上執(zhí)行。超管理器230為虛擬化系統(tǒng)的部分,虛擬化系統(tǒng)使第一訪客操作系統(tǒng)222與第二訪客操作系統(tǒng)224在同一數(shù)據(jù)處理裝置100上執(zhí)行,而無需具有另一訪客操作系統(tǒng)正同時在那兒執(zhí)行的任何知識。超管理器負責管理操作系統(tǒng),具體而言,控制操作系統(tǒng)對下層數(shù)據(jù)處理系統(tǒng)100的存取,并且負責在不同操作系統(tǒng)之間的時分復用,包括在多處理器與多線程處理器中將操作系統(tǒng)分配給不同處理器和線程。64位超管理器能夠管理32位與64位操作系統(tǒng)兩者,且因此由超管理器230管理的操作系統(tǒng)包含32位與64位操作系統(tǒng)的混合。超管理器230控制虛擬轉(zhuǎn)譯表基址寄存器(VTTBR_PL2)的實施,虛擬轉(zhuǎn)譯表基址寄存器(VTTBR_PL2)更進一步影響對于在權(quán)限級別PLl處執(zhí)行的操作系統(tǒng)的每一者,以及對于在權(quán)限級別PLO處執(zhí)行的由這些操作系統(tǒng)管理的應用,如何執(zhí)行虛擬至物理存儲器地址轉(zhuǎn)譯。超管理器230亦控制第三轉(zhuǎn)譯表基址寄存器(TTBR_PL2)的實施,第三轉(zhuǎn)譯表基址寄存器(TTBR_PL2)控制對于在權(quán)限級別PL2處執(zhí)行的超管理器,如何執(zhí)行虛擬至物理存儲器地址轉(zhuǎn)譯。因此,PL2處的虛擬至物理地址轉(zhuǎn)譯獨立于PLO與PLl處的虛擬至物理地址轉(zhuǎn)譯。最高權(quán)限級別為PL3,且此對應于安全監(jiān)視器240軟件層,安全監(jiān)視器240軟件層在此情況下為包含64位程序指令的64位程序。安全監(jiān)視器240作為執(zhí)行于非安全模式中的軟件(即,超管理器230、操作系統(tǒng)222、224以及應用202、204、206與208)與執(zhí)行于安全模式中的軟件(即,安全操作系統(tǒng)226與安全應用對209、210)之間的守門員進行操作。如第2圖所示,在數(shù)據(jù)處理裝置位于安全模式中時,不使用超管理器230。因此,在安全模式中,僅有有效的三個權(quán)限級別:PL0、PL1與PL3。安全監(jiān)視器240亦控制第四轉(zhuǎn)譯表基址寄存器(TTBR_PL3)的實施,第四轉(zhuǎn)譯表基址寄存器(TTBR_PL3)控制如何對在權(quán)限級別PL3執(zhí)行的安全監(jiān)視器執(zhí)行虛擬至物理存儲器地址轉(zhuǎn)譯。因此,PL3的虛擬至物理地址轉(zhuǎn)譯獨立于PL0、PL1與PL2的虛擬至物理地址轉(zhuǎn)譯。對于包含僅能夠進行單線程操作的單個執(zhí)行流水線110的數(shù)據(jù)處理裝置100,在任一時間點處,不論在安全或非安全模式中,將僅有單個程序應用在單個操作系統(tǒng)的控制下運行。對于第2示說明的四個權(quán)限級別的每一者,第I圖的除錯模塊130的EDIFR136儲存對應的操作數(shù)位寬。在此具體實施例中,因為有四個可能的權(quán)限級別,因此使用字段RW[3:0](亦即,32位EDIFR寄存器136的四位字段)來提供對與每個異常級別(exceptionlevel)相對應的操作數(shù)位寬(或等效地,寄存器寬度)的指示。在第2圖上方示出了用于數(shù)據(jù)處理裝置的每個可能操作狀態(tài)的字段RW[3:0]的內(nèi)容。在第一程序應用202在超管理器230的控制下在第一訪客操作系統(tǒng)222上執(zhí)行并位于具有安全監(jiān)視器240的系統(tǒng)中時,四位寄存器字段RW[3:0]具有值“1100”。這是因為在此具體實施例中,使用值“I”指示64位處理器狀態(tài),而使用值“O”指示32位處理器架構(gòu)狀態(tài)。RW寄存器字段的四個位分別對應于PL3、PL2、PL1和PL0。類似地,在第二程序應用204在超管理器230和安全監(jiān)視器240頂上在第一訪客操作系統(tǒng)222上執(zhí)行時,四位寄存器字段RW[3:0]具有值“1100”。另一方面,在第三程序應用206(為64位應用)正在64位第二訪客操作系統(tǒng)224上執(zhí)行時,寄存器字段RW[3:0]具有值“1111”,因為該應用、操作系統(tǒng)、超管理器和安全監(jiān)視器均對應于64位程序代碼。在第四程序應用208正在第二訪客操作系統(tǒng)上執(zhí)行時,四位寄存器字段RW[3:0]具有值“1110”,因為除了最低權(quán)限級別(亦即,第四應用程序208)以外均對應于64位代碼。在數(shù)據(jù)處理裝置正于安全模式中操作時,僅有三個而非四個權(quán)限級別,因為對應于PL2的超管理器層230不存在。因此,RW[2]的值的選擇在一定程度上是任意的。在第I圖所示的數(shù)據(jù)處理裝置中,在操作于安全模式中時RW[2]設定為與RW[1]相同的值。因此在第2圖中,在第一64位安全應用程序209正在安全操作系統(tǒng)226上執(zhí)行時,寄存器字段RW[3:0]具有值“1111”,且在第二32位安全應用程序210正執(zhí)行時,寄存器字段RW[3:0]具有值“1110”。將認知到,在包含多個處理器(且因此包含多個執(zhí)行流水線)及/或能夠同時執(zhí)行多個線程的(一個或多個)處理器的其它具體實施例中,在任一點處,多個程序應用可能地在多個操作系統(tǒng)的控制下并且可能地在安全與非安全模式的混合中可運行。在此種具體實施例中,EDIFR的控制字段可被復制來每次對于每個硬件線程提供相同信息。第3圖示意地圖示說明第I圖的數(shù)據(jù)處理裝置如何被配置為具有在程序指令執(zhí)行期間在復數(shù)個權(quán)限級別的不同權(quán)限級別之間切換的能力,以及在不同權(quán)限級別下可如何區(qū)分虛擬至物理地址轉(zhuǎn)譯方案。第3示出了在最低權(quán)限級別PLO下的32位程序應用410、在次高權(quán)限級別PLl下的32位訪客操作系統(tǒng)420、在下一權(quán)限級別PL2下的64位超管理器430、以及在最高權(quán)限級別PL3下的64位安全監(jiān)視器440。在第I圖的數(shù)據(jù)處理電路100正于非除錯或除錯模式中執(zhí)行程序指令時,數(shù)據(jù)處理裝置100的操作狀態(tài)可在不同的四個權(quán)限級別PL0、PL1、PL2、PL3的不同權(quán)限級別之間上下切換。隨著數(shù)據(jù)處理裝置在這些權(quán)限級別之間切換,操作狀態(tài)隨之改變。在數(shù)據(jù)處理裝置根據(jù)權(quán)限級別PLO執(zhí)行程序指令時,已由程序代碼產(chǎn)生的32位虛擬存儲器地址將使用特定于訪客操作系統(tǒng)420所屬的權(quán)限級別的轉(zhuǎn)譯表基址寄存器(TTBR0_PL1和TTBR1_PL1)被轉(zhuǎn)譯為中間物理地址。相應地,中間物理地址將使用與超管理器430的權(quán)限級別PL2相對應的虛擬轉(zhuǎn)譯表基址寄存器(VTTBR_PL2)被轉(zhuǎn)譯為最終物理地址。類似地,在執(zhí)行32位訪客操作系統(tǒng)420的程序指令時,與正被執(zhí)行的訪客操作系統(tǒng)指令相對應的32位虛擬地址將使用與訪客操作系統(tǒng)420的權(quán)限級別PLl相對應的轉(zhuǎn)譯表基址寄存器TTBR0_PL1與TTBR1_PL2而被轉(zhuǎn)譯為中間物理地址,且此中間物理地址繼而將參考與超管理器430相關(guān)的虛擬轉(zhuǎn)譯表基址寄存器被轉(zhuǎn)譯為最終物理地址。相對而論,在64位超管理器430的程序指令對應于權(quán)限級別PL2而被執(zhí)行時,僅需執(zhí)行單個級的虛擬至物理地址轉(zhuǎn)譯,故64位虛擬地址參考與超管理器權(quán)限級別相關(guān)的轉(zhuǎn)譯表基址寄存器(TTBR_PL2)而被直接轉(zhuǎn)譯為物理地址。在此情況下不需要虛擬轉(zhuǎn)譯表基址寄存器。除了第3圖的不同權(quán)限級別處的虛擬地址大小與虛擬至物理地址轉(zhuǎn)譯之間的差異以外,在不同權(quán)限級別對系統(tǒng)寄存器及和/或存儲器位置的存取方面亦有差異。具體而言,在最高權(quán)限級別處所有系統(tǒng)寄存器將為可見的,且在逐漸降低的權(quán)限級別處可用的系統(tǒng)寄存器將逐漸變少。此外,在系統(tǒng)控制寄存器被具體地鏈接至操作狀態(tài)的情況下,系統(tǒng)控制寄存器當在32位狀態(tài)中被存取時將作為32位系統(tǒng)寄存器出現(xiàn),但是當在64位狀態(tài)中被存取時將作為64位寄存器出現(xiàn)。例如,錯誤地址寄存器(FaultAddressRegister;FAR)(未圖示出)包含虛擬地址并且在32位狀態(tài)中為32位寬,但在64位狀態(tài)中為64位寬。其它系統(tǒng)寄存器自然地為64位寬,且因此當在32位操作狀態(tài)中被存取時,必須使用在一對32位通用寄存器上操作的特殊系統(tǒng)指令被存取,但是當在64位操作狀態(tài)中被存取時,可利用在單個64位通用寄存器上操作的常規(guī)系統(tǒng)寄存器指令被存取。例如,TTBR寄存器包含轉(zhuǎn)譯表的物理基地址,且因為物理地址的大小大于32位,所以TTBR寄存器在32位操作狀態(tài)與64位操作狀態(tài)兩者中皆為64位寬。其它系統(tǒng)寄存器在一個狀態(tài)中可為可存取的,但在另一狀態(tài)中不可存取。由于虛擬至物理地址轉(zhuǎn)譯方案取決于處理器的操作狀態(tài),且在第3圖的情況下對應于數(shù)據(jù)處理系統(tǒng)當前正操作于的權(quán)限級別,因此不可能任意地分配除錯指令集以在任何給定權(quán)限級別執(zhí)行除錯操作。例如,若在數(shù)據(jù)處理裝置處于與第3圖的PLl相對應的操作狀態(tài)中時分配了64位除錯指令集,則將發(fā)生問題,因為在此權(quán)限級別操作的訪客操作系統(tǒng)420為32位訪客操作系統(tǒng),其實施需要從64位除錯指令產(chǎn)生32位虛擬地址的虛擬至物理地址轉(zhuǎn)譯方案。如果讀取TTBR寄存器的64位除錯指令集在與第3圖的PLl相對應的操作狀態(tài)中被執(zhí)行,則將發(fā)生另一問題,因為此指令通常在64位系統(tǒng)寄存器與單個64位通用寄存器之間傳輸數(shù)據(jù),但32位指令集等價物在64位系統(tǒng)寄存器與成對32位通用寄存器之間傳輸。第4A圖示意地圖示說明了對于第I圖的EDIFR寄存器136的位分配(bit-allocation)。如第4A圖所示,EDIFR為32位寄存器,其中,在數(shù)據(jù)處理裝置處于除錯狀態(tài)時,位EDIFR[9:8]被分配以指定當前權(quán)限級別,而位EDIFR[13:10]被分配為對于第2圖的具體實施例的四個權(quán)限級別的每一個,指示與此權(quán)限級別相關(guān)聯(lián)的對應操作數(shù)位寬。對于第I圖的具體實施例,對于每一權(quán)限級別的操作數(shù)位寬可替代地被稱為寄存器寬度,寄存器寬度具有可變寄存器寬度(32位或64位配置)。因此,EDIFR的操作數(shù)位寬或寄存器寬度字段將被表示為RW[13:10],而被分配用于指定當前權(quán)限的位將被表示為PL[9:8]。操作數(shù)位寬度指示符位RW[13:10]被分配為使得位13對應于最高權(quán)限級別,而位10對應于最低權(quán)限級別,即,位13至10分別對應于PL3、PL2、PL1與PLO0字段Rff[13:10]為只讀字段,而數(shù)據(jù)處理裝置可對字段PL[9:8]進行寫入以更新當前權(quán)限級別。第4B圖的表圖示出了對于兩位字段PL[9:8]的四個可能值的每一個,所指示的對應權(quán)限。具體而言,PL[9:8]=00對應于最低權(quán)限級別PLO;PL[9:8]=01對應于PLl;PL[9:8]=10對應于PL2;且?1^[9:8]=11對應于最高權(quán)限級別PL3。就除錯電路而言,這兩個位PL[9:8]為只讀。在數(shù)據(jù)處理裝置100處于除錯模式時,兩位PL[9:8]代表處理器的當前權(quán)限級別,但若數(shù)據(jù)處理裝置處于非除錯狀態(tài),則兩位字段PL[9:8]被設為值“00”。第4C圖的表對于分別與四個RW位相對應的四個權(quán)限級別的每一個,針對EDIFR字段RW[13:10]的不同位值,指定了對應的處理器寄存器寬度操作狀態(tài)(或等效地,操作數(shù)位寬操作狀態(tài))。值RW[13:10]=1111對應于所有四個權(quán)限級別均在64位寄存器寬度狀態(tài)中。值RW[13:10]=1110對應于最高的三個權(quán)限級別PL3、PL2與PLl在64位寄存器寬度狀態(tài)中,且最低權(quán)限級別PLO在32位寄存器寬度狀態(tài)中。值RW[13:10]=1100對應于最高的兩個權(quán)限級別PL3與PL2在64位寄存器寬度狀態(tài)中,同時最低的兩個權(quán)限級別PLl與PLO在32位寄存器寬度狀態(tài)中。必須注意到,此特定值RW[13:10]=1100在數(shù)據(jù)處理裝置當前操作在安全模式中時將不為可見,因為如第2圖所示,與PL2相對應的超管理器層對于安全模式是不可見的。值RW[13:10]=1000對應于最高權(quán)限級別PL3在64位寄存器寬度狀態(tài)中,而剩余較低的三個權(quán)限級別PL2、PL1與PLO在32位寄存器寬度狀態(tài)中。此特定位圖樣RW[13:10]=1000亦被選擇來針對安全模式指示PL3處于64位寄存器寬度狀態(tài)中而PLl與PLO處于32位寄存器寬度狀態(tài)中(在此情況中,PL2不存在)。位圖樣RW[13:10]=OOOO指示所有四個權(quán)限級別對應于32位寄存器寬度狀態(tài)。其它RW[13:10]值是不被允許的。對于此特定具體實施例,為方便起見,已為寄存器寬度狀態(tài)指示符RW和權(quán)限級別狀態(tài)指示符PL選定了某些預定值。例如,若數(shù)據(jù)處理裝置不在除錯模式中,則字段RW[13:10]被設為“1111”。若當前權(quán)限級別為除了PLO外的任意者,則較低位寄存器寬度字段的最低位RW[10]被同樣地設為與RW[11]相等。在安全模式中不存在PL2,且因此RW[12]被同樣地設為RW[11]。第5圖示意地圖示說明了,對于32位寄存器寬度狀態(tài)(被標為“AArch32”)以及對于64位寄存器寬度狀態(tài)(被標為“AArch64”),在處理器位于給定寄存器寬度狀態(tài)中時可被執(zhí)行的對應指令集。在第5圖中,第一集(標為510)對應于“AArch32”,即,32位操作數(shù)寬度或32位寄存器寬度狀態(tài)。在此處理器狀態(tài)中,數(shù)據(jù)處理裝置能夠執(zhí)行三種不同的指令集。第一指令集522為“A32”指令集,對應于對32位寬度數(shù)據(jù)進行操作的高性能32位寬指令。第二指令集524為“T32”指令集,“T32”指令集代表更精簡的指令集,包含被壓縮為16位寬度格式的最常用的A32指令的子集,但這些指令也對32位寬度數(shù)據(jù)操作。第三指令集526為“T32EE”指令集(亦稱為“ThumbEE”指令集),“T32EE”指令集代表類似于T32的精簡指令集,但并入了適于虛擬機的擴充,以提供能夠執(zhí)行諸如Java之類的面向?qū)ο蟮某绦虼a指令與T32EE指令之間的轉(zhuǎn)換的能力。因此,在處理器根據(jù)32位寄存器寬度狀態(tài)操作時(亦即,在32位寬度數(shù)據(jù)上操作時),有三個可執(zhí)行的指令集選項:A32、T32與T32EE。在第5圖中,第二集550代表64位寄存器寬度狀態(tài)“AArch64”,其中可執(zhí)行單個“A64”指令集562。A64指令集對64位寬度數(shù)據(jù)操作。值得注意的是,在此具體實施例中,在AArch64指令集的集合550與AArch32指令集的集合510之間沒有交集。根據(jù)本技術(shù),若確定數(shù)據(jù)處理裝置100當前處于AArch64寄存器寬度狀態(tài)550中,則A64指令集562被分配為除錯指令集,但若處理器在進入除錯模式時處于AArch32寄存器寬度狀態(tài)中,則T32指令集524被選定為除錯指令集,而無論處理器在進入除錯模式時是正執(zhí)行A32指令集522、T32指令集524還是Τ32ΕΕ指令集526。明顯地,對于32位寄存器寬度狀態(tài)AArch32,Τ32指令集524的這種具體選擇是特定于此具體實施例的。在替代性實施例中,三個可能的AArch32指令集522、524與526的任一者可被選定為除錯指令集。在其它替代性實施例中,完整非除錯模式指令集的一者的子集被選定為除錯模式指令集。第6圖為流程圖,示意地圖示說明了由第I圖的數(shù)據(jù)處理裝置執(zhí)行來確定由除錯模塊130實施的適當除錯指令集的操作。進程開始于階段610,在階段610,執(zhí)行流水線110處理從芯片上存儲器142或芯片外存儲器144獲得的指令。因此,在階段610數(shù)據(jù)處理裝置在標準操作模式中執(zhí)行指令,而非在除錯模式中。進程隨后進行至階段620,在階段620判斷是否發(fā)生了除錯事件。若在階段620未發(fā)生除錯事件,則處理器回到階段610,在階段610執(zhí)行流水線繼續(xù)擷取、譯碼并執(zhí)行來自存儲器142與144的指令。然而,若事實上在階段620偵測到了除錯事件,則進程進行至階段630,在階段630數(shù)據(jù)處理裝置(數(shù)據(jù)處理電路)進入除錯模式。在階段630之后,進程進行至階段640,在階段640判斷數(shù)據(jù)處理裝置是否處于64位處理器狀態(tài)中。若在階段640發(fā)現(xiàn)數(shù)據(jù)處理裝置在32位處理器狀態(tài)中,則進程進行至階段650,在階段650數(shù)據(jù)處理電路分配T32指令集作為除錯指令集。進程隨后進行至階段670。另一方面,若在階段640確定數(shù)據(jù)處理裝置處于64位處理器狀態(tài)中(對應于第5圖的狀態(tài)550),則進程進行至階段660,在階段660數(shù)據(jù)處理電路分配A64指令集用于除錯操作。如第5圖所示,A64指令集為數(shù)據(jù)處理器可在64位處理器操作狀態(tài)中執(zhí)行的指令集,而T32指令集是在非除錯模式中數(shù)據(jù)處理裝置出于32位處理器操作狀態(tài)中能執(zhí)行的三種不同的指令集中的一者。雖然在第6圖的具體實施例中,在階段650與660處理器分配了A64或T32指令集,但是在替代性具體實施例中,所分配的除錯指令集包含完整指令集的子集。例如,A64指令集、A32指令集、T32指令集或T32EE指令集的一者的子集。適合用于除錯模式中的完整指令集的子集例如可被適當?shù)剡x擇為排除在除錯模式中不希望的、諸如分支(branch)指令之類的指令的執(zhí)行。因此,在T32或A64指令集的子集中,可迫使分支指令等為未定義的。在階段650與660兩者之后,進程進行至階段670,在階段670除錯電路130對除錯器152(亦即,除錯器單元)指示欲使用的指令集。在此階段數(shù)據(jù)處理電路還更新除錯模塊130中的寄存器,以指示當前正使用哪個指令集。一旦在階段670指示了適當?shù)某e指令集,進程進行至階段680,在階段680除錯指令開始執(zhí)行。在此階段,因為處理器位于除錯模式,所以執(zhí)行流水線110不再從存儲器擷取指令,而是轉(zhuǎn)而直接從第I圖的除錯模塊130的指令傳輸寄存器134擷取指令。在階段680之后,進程進行至階段690,在階段690判斷數(shù)據(jù)處理裝置是否應當退出除錯模式。若由除錯器軟件152控制的除錯操作已完成,則除錯模式將在階段690退出,如果是這樣,則進程回到階段610,在階段610處理器從除錯模式切換回標準操作模式,此時,指令被從存儲器142與144送進執(zhí)行流水線110。另一方面,若在階段690確定需要另外的除錯操作且數(shù)據(jù)處理裝置應當保持在除錯模式中,則進程進行至700,在階段700判斷在除錯模式中時,數(shù)據(jù)處理器正操作于的當前權(quán)限是否改變了。如果由于是最近確立的權(quán)限級別因此權(quán)限級別未有改變,則進程回到階段680。因此若當前權(quán)限級別未有改變且數(shù)據(jù)處理裝置仍位于除錯狀態(tài)中,則繼續(xù)處理來自指令傳輸寄存器134的指令。然而,當在階段700權(quán)限級別有改變時,進程回到階段640,在階段640所分配的除錯指令集根據(jù)當前權(quán)限級別被更新。第7示說明了可使用的虛擬機實施方式。雖然先前描述的具體實施例以裝置和方法實施本發(fā)明,以操作支持所關(guān)注技術(shù)的特定處理硬件,但是也可提供所謂的硬件裝置的虛擬機實施方式。這些虛擬機實施方式在主機處理器740上運行,主機處理器740運行支持虛擬機程序720的主機操作系統(tǒng)730。通常需要大型的強大處理器以提供執(zhí)行于合理速度的虛擬機實施方式,但此作法在特定狀況中可被證明為是正當?shù)模T如在為了兼容性或再使用的理由想要運行源自于另一處理器的代碼時。虛擬機程序720提供應用程序接口至應用程序710,其與可由真實硬件提供的應用程序接口相同,該真實硬件為由虛擬機程序720建模的裝置。因此,包含上述對存儲器存取的控制的程序指令可使用虛擬機程序720從應用程序710內(nèi)被執(zhí)行,以對它們與虛擬機硬件的交互進行建模。權(quán)利要求1.一種數(shù)據(jù)處理裝置,該數(shù)據(jù)處理裝置包含:數(shù)據(jù)處理電路,用于響應于程序指令的執(zhí)行而執(zhí)行數(shù)據(jù)處理操作,該數(shù)據(jù)處理電路被配置為至少操作于操作模式和除錯模式中;除錯電路,該除錯電路被配置以在該數(shù)據(jù)處理電路與除錯器單元之間提供接口,該除錯器單元位于該數(shù)據(jù)處理電路的外部,該除錯電路被配置為在該數(shù)據(jù)處理電路操作于該除錯模式中時控制該數(shù)據(jù)處理電路的操作;其中該數(shù)據(jù)處理電路被配置為在該數(shù)據(jù)處理電路進入該除錯模式時,確定該數(shù)據(jù)處理裝置的當前操作狀態(tài),并根據(jù)該當前操作狀態(tài)分配復數(shù)個指令集中的一個以作為除錯指令集。2.如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理電路被配置為向該除錯器單元指示用于控制該數(shù)據(jù)處理電路的所分配的除錯指令集。3.如權(quán)利要求1所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理電路可配置成操作于復數(shù)個權(quán)限級別,其中該數(shù)據(jù)處理電路在不同的權(quán)限級別對程序指令施加不同的對于存儲器和寄存器組的至少一者的存取許可。4.如權(quán)利要求3所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理電路在所述權(quán)限級別中的不同權(quán)限級別中,分別應用不同的虛擬存儲器地址至物理存儲器地址轉(zhuǎn)譯規(guī)則。5.如權(quán)利要求3或4所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理裝置被配置為執(zhí)行對應于復數(shù)個不同軟件階層的程序指令,所述復數(shù)個不同軟件階層對應于各自的復數(shù)個權(quán)限級別。6.如權(quán)利要求5所述的數(shù)據(jù)處理裝置,其中所述復數(shù)個權(quán)限級別中的第一個對應于應用層,且所述復數(shù)個權(quán)限級別中的第二個對應于操作系統(tǒng)層。7.如權(quán)利要求6所述的數(shù)據(jù)處理裝置,其中所述復數(shù)個權(quán)限級別中的第三個對應于超管理器層。8.如權(quán)利要求6或7所述的數(shù)據(jù)處理裝置,其中又一權(quán)限級別對應于安全監(jiān)視層。9.如權(quán)利要求3至8中任一項所述的數(shù)據(jù)處理裝置,其中當在所述復數(shù)個權(quán)限級別的不同者之間切換時,該數(shù)據(jù)處理電路被配置為重復確定該當前操作狀態(tài)和該除錯指令集,以產(chǎn)生更新的除錯指令集并向該除錯器單元指示該更新的除錯指令集。10.如前面權(quán)利要求中任一項所述的數(shù)據(jù)處理裝置,其中該當前操作狀態(tài)是從復數(shù)個不同的處理器操作狀態(tài)中選定的,所述復數(shù)個不同的處理器操作狀態(tài)具有各自不同的操作數(shù)位寬。11.如權(quán)利要求10所述的數(shù)據(jù)處理裝置,其中所述復數(shù)個操作狀態(tài)至少包含32位操作狀態(tài)和64位操作狀態(tài)。12.如權(quán)利要求10或11所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理裝置包含用于儲存所述程序指令的操作數(shù)的復數(shù)個寄存器,且其中所述不同的操作數(shù)位寬對應于該數(shù)據(jù)處理電路所使用的不同的寄存器寬度。13.如權(quán)利要求12所述的數(shù)據(jù)處理裝置,其中所述復數(shù)個寄存器的至少一子集被配置為可變寬度寄存器。14.如權(quán)利要求2至13中任一項所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理電路被配置以通過寫入能被該除錯器單元存取的至少一個寄存器,來向該除錯器單元指示該除錯指令集。15.如權(quán)利要求2所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理電路被配置以通過傳送控制命令至該除錯器單元,來向該除錯器單元指示該除錯指令集。16.如前面權(quán)利要求中任一項所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理裝置被配置以在能被該除錯器單元存取的給定位置中,維護該當前操作狀態(tài)的所儲存值。17.如權(quán)利要求3所述的數(shù)據(jù)處理裝置,其中該當前操作狀態(tài)是從復數(shù)個處理器操作狀態(tài)中選定的,所述復數(shù)個處理器操作狀態(tài)具有各自的操作數(shù)位寬,且其中數(shù)據(jù)處理裝置被配置為在能被該除錯器單元存取的第一位置中,維護與所述復數(shù)個權(quán)限級別的每一個相關(guān)聯(lián)的操作數(shù)位寬的記錄。18.如權(quán)利要求17所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理裝置被配置為在能被該除錯器單元存取的第二位置中,維護該數(shù)據(jù)處理電路正操作于的當前權(quán)限級別的記錄。19.如權(quán)利要求18所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理電路使用該當前權(quán)限級別來從具有所述各自的操作數(shù)位寬的所述復數(shù)個處理器操作狀態(tài)中確定該除錯指令集。20.如權(quán)利要求1至16中任一項所述的數(shù)據(jù)處理裝置,其中該數(shù)據(jù)處理裝置被配置來維護與該當前處理器操作狀態(tài)相對應的當前操作數(shù)位寬的記錄。21.如權(quán)利要求20所述的數(shù)據(jù)處理裝置,其中該除錯器單元被配置為從該當前操作數(shù)位寬的該記錄中,推斷出由該數(shù)據(jù)處理電路分配的該除錯指令集。22.如權(quán)利要求21所述的數(shù)據(jù)處理裝置,其中該除錯器單元被配置以使至少一個程序指令被該數(shù)據(jù)處理電路執(zhí)行,以確定該數(shù)據(jù)處理電路正操作于的當前權(quán)限級別。23.如前面權(quán)利要求中任一項所述的數(shù)據(jù)處理裝置,其中所分配的除錯指令集包含可供該數(shù)據(jù)處理裝置在非除錯模式中執(zhí)行的完整指令集的子集。24.如權(quán)利要求23所述的數(shù)據(jù)處理裝置,其中該完整指令集包含下列的其中一者:A32指令集;T32指令集;Τ32ΕΕ指令集;以及Α64指令集。25.如權(quán)利要求23或24所述的數(shù)據(jù)處理裝置,其中該完整指令集的該子集至少排除分支指令。26.一種用于執(zhí)行數(shù)據(jù)處理裝置的操作的除錯的除錯單元,該數(shù)據(jù)處理裝置能夠至少操作于除錯模式和操作模式以及復數(shù)個不同的操作狀態(tài)中,該除錯單元包含:讀取電路,該讀取電路用于從該數(shù)據(jù)處理裝置內(nèi)的一儲存位置讀取當前操作數(shù)位寬的記錄,該當前操作數(shù)位寬的記錄指定該數(shù)據(jù)處理裝置的所述復數(shù)個操作狀態(tài)中的一者;推斷電路,該推斷電路用于推斷用于產(chǎn)生除錯指令的除錯指令集,以供應至該數(shù)據(jù)處理裝置的除錯電路來執(zhí)行該除錯。27.如權(quán)利要求26所述的除錯單元,其中該推斷電路被配置以基于從該數(shù)據(jù)處理裝置接收到的控制命令,來推斷該除錯指令集。28.如權(quán)利要求26所述的除錯單元,其中該推斷電路被配置以基于該數(shù)據(jù)處理裝置內(nèi)的該當前操作數(shù)位寬記錄的所讀取內(nèi)容,來推斷該除錯指令集。29.如權(quán)利要求27所述的除錯單元,其中該數(shù)據(jù)處理裝置能夠操作在復數(shù)個不同的權(quán)限級別,其中該數(shù)據(jù)處理裝置在不同的權(quán)限級別對程序指令施加不同的對于存儲器和寄存器組的至少一者的存取許可,且其中該推斷電路被配置以使至少一個程序指令被該數(shù)據(jù)處理裝置執(zhí)行,以確定該數(shù)據(jù)處理裝置正操作于的當前權(quán)限級別。30.一種用于執(zhí)行數(shù)據(jù)處理裝置的操作的除錯的除錯方法,該數(shù)據(jù)處理裝置系能夠至少操作于除錯模式和操作模式以及復數(shù)個不同的操作狀態(tài)中,該除錯方法包含以下步驟:從該數(shù)據(jù)處理裝置內(nèi)的一儲存位置讀取當前操作數(shù)位寬的記錄,該當前操作數(shù)位寬的記錄指定該數(shù)據(jù)處理裝置的所述復數(shù)個操作狀態(tài)中的一者;以及推斷用于產(chǎn)生除錯指令的除錯指令集,以供應至該數(shù)據(jù)處理裝置的除錯電路來執(zhí)行該除錯。31.一種用于實施如權(quán)利要求30所述的除錯方法的計算機程序。32.—種由在數(shù)據(jù)處理裝置上執(zhí)行的計算機程序提供的虛擬機,該虛擬機根據(jù)如權(quán)利要求I至25中任一項所述的數(shù)據(jù)處理裝置來提供指令執(zhí)行環(huán)境。33.一種數(shù)據(jù)處理設備,包含:用于響應于程序指令的執(zhí)行而執(zhí)行數(shù)據(jù)處理操作的裝置,該用于執(zhí)行數(shù)據(jù)處理操作的裝置被配置為至少操作于操作模式和除錯模式中;用于除錯的裝置,被配置為在該用于執(zhí)行數(shù)據(jù)處理的裝置與用于除錯分析的裝置之間提供接口,該用于除錯分析的裝置位于該數(shù)據(jù)處理設備的外部,該用于除錯的裝置被配置為在該用于執(zhí)行數(shù)據(jù)處理的裝置操作于該除錯模式中時控制該用于執(zhí)行數(shù)據(jù)處理的裝置的操作;其中該用于執(zhí)行數(shù)據(jù)處理的裝置被配置為在該用于執(zhí)行數(shù)據(jù)處理的裝置進入該除錯模式時,確定該用于執(zhí)行數(shù)據(jù)處理的裝置的當前操作狀態(tài),并根據(jù)該當前操作狀態(tài)分配復數(shù)個指令集中的一個以作為除錯指令集,并向該用于除錯分析的裝置指示用于控制該用于執(zhí)行數(shù)據(jù)處理的裝置的所分配的除錯指令集。34.一種數(shù)據(jù)處理方法,該方法包含以下步驟:響應于程序指令的執(zhí)行而在數(shù)據(jù)處理電路上執(zhí)行數(shù)據(jù)處理操作,該數(shù)據(jù)處理電路被配置以至少操作于操作模式和除錯模式中;在該數(shù)據(jù)處理電路與除錯器單元之間提供除錯接口,該除錯器單元位于該數(shù)據(jù)處理電路的外部,該除錯接口被配置以在該數(shù)據(jù)處理電路操作于該除錯模式中時控制該數(shù)據(jù)處理電路的操作;在該數(shù)據(jù)處理電路進入該除錯模式時,確定該數(shù)據(jù)處理電路的當前操作狀態(tài),并根據(jù)該當前操作狀態(tài)分配復數(shù)個指令集中的一個以作為除錯指令集。35.一種用于實施如權(quán)利要求34所述的方法的計算機程序產(chǎn)品。36.一種用于執(zhí)行數(shù)據(jù)處理裝置的指令的除錯的設備,該數(shù)據(jù)處理裝置能夠至少操作于除錯模式和操作模式以及復數(shù)個不同的操作狀態(tài)中,該除錯單元包含:用于從該數(shù)據(jù)處理裝置內(nèi)的一儲存位置讀取當前操作數(shù)位寬的記錄的裝置,該當前操作數(shù)位寬的記錄指定該數(shù)據(jù)處理裝置的所述復數(shù)個操作狀態(tài)中的一者;以及用于推斷用于產(chǎn)生除錯指令的除錯指令集,以供應至該數(shù)據(jù)處理裝置的除錯電路來執(zhí)行該除錯的裝置。全文摘要提供一種數(shù)據(jù)處理裝置,包含數(shù)據(jù)處理電路與除錯電路。在操作于除錯模式時,除錯電路控制處理電路的操作。在進入除錯模式時,數(shù)據(jù)處理電路確定數(shù)據(jù)處理裝置的當前操作狀態(tài)。數(shù)據(jù)處理電路根據(jù)所確定的當前操作狀態(tài),分配復數(shù)個指令集的一個來作為除錯指令集。文檔編號G06F11/36GK103140837SQ201180045900公開日2013年6月5日申請日期2011年7月25日優(yōu)先權(quán)日2010年9月24日發(fā)明者邁克爾·約翰·威廉斯,理查德·羅伊·格里森思懷特,西蒙·約翰·克拉斯克申請人:Arm有限公司