TWI423018B - 資料處理裝置的除錯(二) - Google Patents

資料處理裝置的除錯(二) Download PDF

Info

Publication number
TWI423018B
TWI423018B TW100126426A TW100126426A TWI423018B TW I423018 B TWI423018 B TW I423018B TW 100126426 A TW100126426 A TW 100126426A TW 100126426 A TW100126426 A TW 100126426A TW I423018 B TWI423018 B TW I423018B
Authority
TW
Taiwan
Prior art keywords
data processing
debug
bit
processing device
instruction set
Prior art date
Application number
TW100126426A
Other languages
English (en)
Other versions
TW201224740A (en
Inventor
Michael John Williams
Richard Roy Grisenthwaite
Simon John Craske
Original Assignee
Advanced Risc Mach Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Advanced Risc Mach Ltd filed Critical Advanced Risc Mach Ltd
Publication of TW201224740A publication Critical patent/TW201224740A/zh
Application granted granted Critical
Publication of TWI423018B publication Critical patent/TWI423018B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • G06F11/3656Software debugging using additional hardware using a specific debug interface
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30098Register arrangements
    • G06F9/30105Register structure
    • G06F9/30112Register structure comprising data of variable length
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • G06F9/30149Instruction analysis, e.g. decoding, instruction word fields of variable length instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30181Instruction operation extension or modification
    • G06F9/30189Instruction operation extension or modification according to execution mode, e.g. mode flag
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45554Instruction set architectures of guest OS and hypervisor or native processor differ, e.g. Bochs or VirtualPC on PowerPC MacOS

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Microcomputers (AREA)

Description

資料處理裝置的除錯(二)
本發明係關於資料處理。更特定言之,本發明係關於資料處理裝置之除錯(debugging)。
資料處理裝置之除錯,為在於資料處理裝置上執行的電腦程式或於包含資料處理裝置之電子硬體件中,尋找蟲(bug)或缺陷,並減少蟲或缺陷數量的方法論(methodical)程序。隨著時間演進,微處理器與設計以在微處理器上執行的軟體變得更為複雜,使得對於產出有效率的方法與系統以在作業中偵測缺陷而言,除錯程序逐漸變得更有挑戰性。已知提供資料處理裝置之除錯模式,將資料處理裝置切換為除錯模式以執行除錯作業。
考慮現代微處理器的複雜度,對於給定微處理器而言能夠執行一個以上的指令集是常見的。例如,ARM7TDMIRTM 處理器核心能夠執行正規的「A32」指令集(亦稱為「ARM」指令集)與更為精簡的「T32」指令集(亦稱為「Thumb」指令集),「A32」指令集包含32位元寬作業碼,「T32」指令集提供已壓縮為16位元寬作業碼之最常用的A32指令子集。在執行時,16位元寬指令可被解壓縮為全32位元寬A32指令,或可使用專屬解碼單元直接執行。因此,給定資料處理裝置可能夠執行複數個不同的指令集。A32指令集與T32指令集皆以32位元寬資料操作。
除了能夠執行複數個不同指令集的給定資料處理裝置之外,許多現代資料處理裝置能夠操作於複數個不同的操作狀態,或操作於複數個不同的「特權位級(privilege levels)」。在不同的特權位級,資料處理裝置對程式指令施加不同的對於記憶體與一組暫存器之至少一者的存取許可(access permission)。例如,處理電路在標準特權位級下可存取的控制暫存器組,相較於處理電路在操作於較高特權位級時可存取的控制暫存器組,通常將更為受限,例如在資料處理裝置操作於系統模式而非使用者模式時。在操作於不同的特權位級時,資料處理裝置通常將應用不同的虛擬至實體記憶體位址轉譯方案,來將程式指令的記憶體位址轉譯。
例如,在實施虛擬化(virtualisation)並執行超管理器(hypervisor),以使複數個不同的訪客作業系統能夠在相同資料處理裝置上執行的資料處理系統中,資料處理裝置的任何低於超管理器的特權位級之特權位級(亦即,在超管理器的監督下執行),將具有相關於虛擬化程序之額外的位址轉譯位級。位址轉譯的額外位級使用「虛擬轉譯表基底暫存器(virtual translation table base register)」。然而,對應於超管理器層自身的特權位級不需參考虛擬轉譯表基底暫存器,而僅需參考轉譯表基底暫存器,且因此涉及的轉譯級將少一級。
已知在能夠執行複數個指令集的處理器中,施加預設除錯指令集以在資料處理裝置位於除錯模式中時使用。例如,在ARM10、ARM11與ARM Cortex處理器中,預設為在資料處理裝置被切換為除錯模式時使用A32指令集。替代性的已知作法為(例如在ARM7TDMIRTM 與ARM9處理器中)在進入除錯模式時,指令集狀態保持為如進入除錯模式時的狀態,使得若資料處理裝置在進入除錯模式時正執行T32指令,則將使用T32指令於除錯程序,而若資料處理裝置在進入除錯模式時正執行A32指令,則將使用A32指令執行除錯程序。
然而,因為在資料處理裝置操作狀態之間(亦即,在欲執行除錯作業時資料處理裝置正操作之特權位級,與分配為使用於資料處理裝置的除錯模式中的指令集)可能的不匹配,可能發生問題。因此,適合用於處理器當前特權位級的虛擬至實體位址轉譯方案,可不相容於選定的除錯指令集。在可配置以具有用於指令之可變寬度暫存器的資料處理裝置中,此可代表特定問題,因為具有較大運算子位元寬度的指令可需用於除錯程序,儘管處理器的操作狀態可代表在除錯模式中需實施32位元虛擬至實體位址轉譯方案。此於處理器操作狀態與除錯指令集之間潛在的不匹配,增加了除錯作業的複雜度,因為除錯模組硬體隨後將需被設計為容納大量的位元圖樣(bit pattern),位元圖樣對應至可由資料處理裝置執行之複數個指令集中之每一者。因此,產生減少除錯電路複雜度,並仍能夠對除錯資料處理裝置提供彈性的需求,該資料處理裝置能夠操作於複數個不同的特權位級,且(或)能夠執行複數個不同的指令集。
本發明之第一態樣提供一種資料處理裝置,包含:資料處理電路,該資料處理電路用於回應於程式指令之執行而執行資料處理作業,該資料處理電路經配置以至少操作於操作模式與除錯模式中;除錯電路,該除錯電路徑配置以在該資料處理電路與除錯單元之間提供介面,該除錯單元位於該資料處理電路之外部,該除錯電路經配置以在該資料處理電路正操作於該除錯模式時控制該資料處理電路的作業;其中該資料處理電路經配置以在該資料處理電路進入該除錯模式時,決定該資料處理電路的當前操作狀態,並根據該當前操作狀態分配複數個指令集中之一者以作為除錯指令集。
本發明認知到,藉由在資料處理電路進入除錯模式時決定資料處理裝置的當前操作狀態,並根據當前操作狀態分配複數個指令集中之一者以作為除錯指令集,可達成良好的彈性。此係因為提供了在除錯模式中使用多於一種單一預設指令集,且根據資料處理裝置的當前操作狀態適當地選擇所選定的指令集的可能性。此增進了在資料處理電路的當前操作狀態與經分配除錯指令集之間較佳的相容性。
藉由不是簡單地在進入除錯模式時選定當前指令集,可減少在除錯模式中需要被支持的指令總數。事實上,在除錯模式中僅需實施能夠被資料處理裝置執行之所有複數個指令集中的一個子集。此簡化了除錯指令之驗證,並減少了除錯電路的成本。根據資料處理電路在進入除錯模式時的當前操作狀態來致能對複數個指令集之一者的分配,有效地確保在除錯模式中被解碼的指令對當前操作狀態的記憶體配置(亦即,特權位級)是適當的。
將認知到,資料處理裝置可經配置以操作於涉及資料處理硬體的不同視點之數個不同的操作狀態的任何一者,且可根據當前操作狀態的特定性質來分配適當的除錯指令集。然而,在一些具體實施例中,資料處理電路可經配置以操作於複數個特權位級,其中資料處理電路在不同的特權位級對程式指令施加不同的對於記憶體與暫存器組之至少一者的存取許可。例如,在較高的特權位級,較之於在較低的特權位級,資料處理裝置可存取較大的控制暫存器組。可應用至不同特權位級之記憶體及(或)暫存器的不同視點,使得在除錯指令集與處理器的當前操作狀態之間的相容性更為重要。能夠根據當前特權位級從複數個替代性除錯指令集分配除錯指令集的能力,增進了除錯作業的效率。
將認知到在不同的特權位級,除了對記憶體與暫存器之至少一者之存取許可的差異不同之外,資料處理裝置可具有各種的操作狀態差異。然而,在一具體實施例中在該等特權位級中之不同者,該資料處理電路各別應用不同的虛擬記憶體位址至實體記憶體位址轉譯規則。其中資料處理裝置在不同的操作狀態使用不同的虛擬至實體位址轉譯規則時,若在除錯模式中分配了不適當的除錯指令集,則除錯作業可變得過度複雜。例如,在當前操作狀態為訪客作業系統經配置以將32位元虛擬位址轉譯成實體位址,而預設除錯指令集卻包含產生64位元虛擬位址的指令時,可發生問題。此將需要從64位元除錯指令產生32位元虛擬位址,或需要構件以在經配置為轉譯32位元虛擬位址的系統中轉譯64位元虛擬位址。因此,對於避免在最近實施之虛擬至實體記憶體位址轉譯方案與除錯作業欲執行之指令之間的不相容性,根據處理器當前操作狀態適當地分配除錯指令集的能力是有用的。
在一些具體實施例中,該資料處理裝置經配置以執行對應至複數個不同的軟體階層(software hierarchical levels)的程式指令,該複數個軟體階層對應至各別的複數個特權位級。因此(例如),一個特權位級可對應至訪客作業系統,而另一特權位級可對應至使用者應用程式。由於資料處理裝置對於軟體通常需要能夠向下相容(諸如在本質上能夠執行64位元指令的資料處理裝置上需要能夠執行32位元作業系統),可發生問題。能夠根據當前操作狀態(且因此根據當前軟體階層)分配適當的除錯指令集的能力,提供了在除錯系統內適當地在併入向下相容性的系統中進行除錯的彈性。
將認知到,對應至不同的軟體階層的複數個特權位級可包含許多且多變之不同的軟體層組合。然而,在一具體實施例中,除了應用程式層與作業系統層以外,複數個軟體階層包含超管理器層。此使系統能夠方便的進行虛擬化。
在另一具體實施例中,除了應用程式系統層、作業系統層與有或沒有的超管理器層以外,提供了安全監視層。在操作於安全模式時,為了保持資料處理裝置的整體性,確保選定了適當的除錯指令集是特別重要的。
將認知到,在初始進入除錯模式時,可根據在進入除錯模式時的當前操作狀態分配單一除錯指令集。然而,在一些具體實施例中,資料處理裝置可從除錯模式自身內配置,以在複數個特權位級中之不同者之間切換,且資料處理電路經配置以重複決定當前操作狀態,並根據資料處理裝置新切換的操作狀態重複分配除錯指令集。此確保儘管在執行除錯作業的同時當前操作狀態被切換,仍可分配適當的除錯指令集。此對使除錯電路能夠被控制以從一個操作狀態切換至不同的操作狀態,而進一步調查即將發生的系統蟲提供了額外的彈性,並確保在除錯指令集與當前操作狀態之間的相容性在此彈性之下仍能維持。
將認知到,資料處理裝置的當前操作狀態,可從具有相同運算子位元寬度的複數個不同的處理器操作狀態中選定。然而,在一個具體實施例中,當前操作狀態係從各別具有不同的運算子位元寬度的複數個不同的處理器操作狀態中選定。在能夠執行具有不同的運算子位元寬度之指令的資料處理裝置中,容易發生相容性問題,例如因為在兩個不同的運算子位元寬度之間相異的虛擬至實體位址轉譯方案等等。因此,能夠根據當前操作狀態適當地分配除錯指令集的能力是有用的,該能力可避免在除錯模式中時需要實施過度累贅的轉換程序。在一些此等具體實施例中,具有運算子位元寬度的複數個操作狀態至少包含32位元操作狀態與64位元操作狀態。
將認知到,本技術可應用至任何資料處理裝置,諸如藉由從記憶體讀取運算子以執行指令的資料處理裝置。然而,在一些具體實施例中,資料處理裝置包含用於儲存程式指令之運算子的複數個暫存器,且其中不同的運算子位元寬度對應至用於處理電路之不同的暫存器寬度。在此種可配置以使用可變暫存器寬度的資料處理裝置中,能夠根據當前操作狀態配置適當的除錯指令集是有用的,因為可根據可變寬度暫存器的當前設定來適當地選定對除錯指令集的分配。在一些此種具體實施例中,具有不同的運算子位元寬度的複數個暫存器的至少一子集可經配置為可變寬度暫存器。
在一些具體實施例中,資料處理電路經配置以藉由寫入可被除錯電路存取的至少一個暫存器,來對除錯電路指示已根據當前操作狀態分配的除錯指令集。此提供了方便的方法以指示供除錯電路使用的適當的除錯指令集。在替代性具體實施例中,資料處理電路徑配置以藉由傳送控制命令至除錯單元,來對除錯單元指示除錯指令集。此節省了暫存器空間。
將認知到,資料處理裝置可由數種不同方法之任一者來決定當前操作狀態。然而,在一些具體實施例中,資料處理裝置經配置以在可被除錯單元存取的給定位置中,維持當前操作狀態之經儲存值。此係可單純實施,並允許除錯單元在需要時容易地存取當前操作狀態,而不論資料處理器何時從非除錯模式切換為除錯模式。
在一些具體實施例中,資料處理裝置可經配置以在複數個不同的特權位級操作,當前操作狀態係從複數個處理器操作狀態中選定,該複數個處理器操作狀態具有各別的運算子位元寬度,且資料處理裝置經配置以在可被除錯電路存取的第一位置中,維持與複數個特權位級之每一者相關的運算子位元寬度的記錄。不同的處理器操作狀態的運算子位元寬度可不需全為不同,例如,對於四個特權位級與兩個位元寬度而言,可對兩個或多個特權位級使用相同的運算子位元寬度。此對於對每個可能的特權位級儲存相關運算子位元寬度提供了方便的手段,並代表可輕易決定適當的除錯指令集。應注意到,當前儲存於被維持的記錄中的運算子位元寬度,將取決於當前時間,因為將認知到資料處理裝置在不同時間可為執行(例如)不同的程式作業或不同的訪客作業系統,且因此在不同時間與給定特權位級相關的運算子位元寬度可為不同。
在一些此種具體實施例中,其中在第一位置中儲存與複數個特權位級之每一者相關的運算子位元寬度之記錄,資料處理裝置亦經配置以在除錯單元可存取的第二位置中,維持資料處理電路正操作之當前特權位級之記錄。藉由參考第一位置與第二位置兩者,除錯單元可輕易地決定對應至當前特權位級的運算子位元寬度,且因此可適當地決定資料處理電路已根據當前運算子位元寬度來分配的除錯指令集。
在一些具體實施例中,資料處理電路使用該當前特權位級以從該複數個處理器操作狀態中決定該除錯指令集,該複數個處理器操作狀態各別具有該等運算子位元寬度之各別者。在一些此種具體實施例中,資料處理裝置經配置以維持對應至當前處理器操作狀態的當前運算子位元寬度的記錄。
在替代性具體實施例中,除錯單元經配置以使用該當前運算子位元寬度之該記錄推論除錯指令集,並使至少一個程式指令被資料處理電路執行,以決定資料處理電路正操作的當前特權位級。實施此種除錯單元是較便宜的,因為較之於對於對複數個可能的特權位級之每一者的運算子位元寬度提供儲存位置,此種除錯單元使用較少的暫存器空間。使用較少的暫存器空間,就決定當前異常位級所需的邏輯而言,抵消了額外成本。雖然除錯單元在此情況下推論出除錯指令集,資料處理電路進行對於適當的除錯指令集之初始決定(亦即,事實上分配了除錯指令集),且除錯單元隨後確定資料處理電路基於暫存器內容做了些什麼。
另一方面,在使用當前特權位級記錄與相關於複數個特權位級之運算子位元寬度記錄兩者的具體實施例中,這兩個儲存位址組的狀態容易方便地映射(例如)在處理器其他處的暫存器的狀態,並對除錯器提供更多資訊,並減少欲執行的程式指令數量,以決定適當的除錯指令集。
將認知到,經分配的除錯指令集可包含可由資料處理裝置在非除錯模式中執行的完整指令集。然而在一些具體實施例中,經分配的除錯指令集包含完整指令集的子集。在一些此種具體實施例中,子集為下列子集中之一者:A32指令集;T32指令集;T32EE指令集;以及A64指令集。因此,不想要(及/或不為有用)在除錯模式中實施的完整指令集中的這些指令,可輕易地從分配為除錯模式中使用的完整指令之子集中排除。例如,給定完整指令集的分支指令在除錯模式中時,可被強迫為未定義。
本發明之第二態樣提供一種資料處理方法,包含以下步驟:回應於程式指令之執行而在資料處理電路上執行資料處理作業,資料處理電路經配置以至少操作於操作模式與除錯模式中;在該資料處理電路與除錯單元之間提供除錯介面,該除錯單元位於該資料處理電路之外部,該除錯介面經配置以在該資料處理電路正操作於該除錯模式中時控制該資料處理電路之作業;在該資料處理電路進入該除錯模式時,決定該資料處理電路的當前操作狀態,並根據該當前操作狀態分配複數個指令集中之一者以作為除錯指令集。
本發明之第三態樣提供一種資料處理裝置,包含:執行構件,該執行構件用於回應於程式指令之執行而執行資料處理作業,該執行構件經配置以至少操作於操作模式與除錯模式中;除錯構件,該除錯構件用於經配置以在該執行構件與除錯分析構件之間提供介面,該除錯分析構件位於該資料處理裝置之外部,該除錯構件經配置以在該執行構件正操作於該除錯模式中時控制該執行構件之作業;其中該執行構件經配置以在該執行構件進入該除錯模式時,決定該執行構件的當前操作狀態,並根據該當前操作狀態分配複數個指令集中之一者以作為除錯指令集。
在附加申請專利範圍中定義了本發明的各種各別的態樣與特徵。來自申請專利範圍附屬項之特徵的組合,可與獨立項之特徵適當地結合,且不限於明確地揭示於申請專利範圍中者。
第1圖示意圖示說明根據本發明具體實施例之資料處理裝置。資料處理裝置包含積體電路100,積體電路100包含形成「單晶片系統(System-on-Chip)」的複數個電路部件。積體電路100包含:執行管線110、一般用途暫存器組120、控制暫存器組160、除錯模組130、除錯埠132、記憶體管理單元(MMU)與晶片上(on-chip)記憶體142。資料處理裝置100亦可存取晶片外(off-chip)記憶體144。資料處理裝置100的除錯埠132係連接至主個人電腦150,主個人電腦150經配置以執行除錯軟體組152以支援對資料處理裝置100除錯。
第1圖圖示之資料處理裝置100具有RISC(Rdeuced Instruction Set Computin)架構,RISC架構為裝載-儲存(load-store)架構,其中處理資料之指令僅在暫存器上操作,且與存取記憶體之指令分離。資料處理裝置100為管線式資料處理裝置,且執行管線110包含擷取級、解碼級與執行級(未圖示)。暫存器組包含一般用途暫存器120與控制暫存器160。在此特定具體實施例中,暫存器組120包含複數個64位元暫存器,該複數個64位元暫存器係可配置以操作如可變寬度暫存器般,以使在資料處理電路100操作於32位元暫存器寬度操作狀態中時(亦即,在執行實質上處理32位元資料並使用32位元虛擬位址(稱為32位元程式,包含32位元程式指令)的程式時),資料處理裝置將暫存器組120視為32位元暫存器,儘管當資料處理裝置100操作於64位元暫存器寬度操作狀態時(亦即,在執行實質上處理64位元資料並使用32位元以上的虛擬位址(稱為64位元程式,包含64位元程式指令)的程式時),資料處理裝置100係經配置以使暫存器組120之每一暫存器的全64位元寬度被利用。然而,注意到在處理電路100操作於32位元暫存器寬度操作狀態時,仍可執行一些64位元作業(例如,64位元值的寬乘法與裝載/儲存)。類似地,在處理電路100操作於64位元暫存器寬度操作狀態時,仍可執行一些32位元作業。
當在非除錯作業模式中時,資料處理電路100從系統記憶體(亦即,從晶片上記憶體142或晶片外記憶體144)擷取指令以執行。記憶體管理單元140根據資料處理裝置100的當前作業狀態,控制對記憶體142、144的存取,使得相較於在系統模式中可被存取,(例如)在使用者模式中較小的記憶體位置子集可被資料處理電路100存取。
記憶體管理單元140負責管理執行管線110對記憶體的所有存取要求,記憶體管理單元140的功能包含虛擬記憶體位址至實體記憶體位址之轉譯、記憶體保護、快取控制與匯流排仲裁。在資料處理裝置100進入除錯模式時,執行管線直接地從除錯模組130之指令傳輸暫存器(instruction transfer register;ITR)134擷取指令。指令傳輸暫存器134在除錯軟體152的控制下裝載除錯指令,除錯軟體152在主個人電腦150上執行,主個人電腦150在除錯模式中經由除錯埠132控制資料處理電路100。在此具體實施例中,除錯軟體152與執行除錯軟體152的主個人電腦150代表除錯單元。然而,在替代性具體實施例中,除錯單元被生產在與資料處理電路相同的積體電路上。
控制暫存器160儲存負責控制資料處理裝置100態樣的控制值。特定言之,他們對於資料處理裝置100之複數個「特權位級」之每一者(參照第2圖詳細描述),儲存與此特權位級相關之對應的運算子位元寬度操作狀態。
除錯模組130更進一步包含外部除錯介面暫存器(EDIFR)136,EDIFR 136保持相關於複數個特權位級之每一者的暫存器寬度狀態(亦即運算子位元寬度狀態)的記錄,以及資料處理裝置100正操作之當前特權位級的記錄。EDIFR 136係為除錯軟體152所可見。
在資料處理裝置100從標準操作模式(或任何非除錯模式)切換為除錯模式時,資料處理裝置100根據儲存在控制暫存器160中的資料決定資料處理裝置的當前操作狀態,並根據此狀態選定複數個不同的除錯指令集之一者來實施,以執行除錯作業,且根據此更新EDIFR 136中的記錄。對於除錯軟體152,在位於除錯模式中的同時,可能起始從一個操作狀態至另一個不同的操作狀態之資料處理裝置100的切換。例如,可將資料處理裝置從操作於第一特權位級(執行第一除錯指令群組)切換為操作於不同的第二特權位級(執行第二除錯指令群組)。因此,除錯模組130經配置以基於在操作狀態切換時控制暫存器160中的資訊,重複決定資料處理電路100的當前操作狀態,並對除錯作業分配經更新除錯指令集,且由此更新EDIFR 136中的記錄。在此情況下,所實施的除錯指令集可對應於操作狀態切換而改變,或者可保持相同。
雖然在第1圖圖示的具體實施例中,EDIFR 136位於除錯模組130中,在替代性具體實施例中EDIFR 136位於在資料處理裝置100外部的主個人電腦主機端150(亦即,在除錯單元中)。在另一替代性具體實施例中,EDIFR未被實施,但除錯單元藉由從主系統暫存器(亦即控制暫存器160)讀取狀態值而獲得EDIFR包含的資訊。在硬體階層,EDIFR暫存器136可被實施為閂鎖器電路(如在第1圖之具體實施例內般)或來自系統暫存器之簡單組合路徑。再者,雖然在第1圖之具體實施例內主個人電腦(除錯單元)位於晶片外(相對於資料處理電路100),在替代性具體實施例中資料處理裝置100與用於控制除錯作業並執行除錯軟體152的電路(亦即除錯單元)係生產在相同的積體電路上,以使資料處理電路100不形成整個單晶片系統。在此等具體實施例中,邏輯上可將除錯電路視為正被除錯之處理器的部份,且除錯單元為位於相同單晶片系統上之第二個不同的處理器。在第1圖之具體實施例中,對除錯單元150提供介面(例如,先進微控制器匯流排架構(Advanced Microcontroller Bus Architecture))之除錯模組30的除錯電路,為與單晶片系統之資料處理電路100相同之「巨晶元(macrocell)」的部份。
第2圖示意圖示說明第1圖圖示之資料處理裝置100的複數個不同的操作狀態,該複數個不同的操作狀態各別對應至複數個不同的特權位級。各別的特權位級對應至在第1圖圖示之資料處理裝置100上執行之軟體的各別不同階層。第2圖的最上列對應至最低特權位級PL0,而第2圖的最下列對應至最高特權位級PL3。在最低特權位級PL0與最高特權位級PL3之間有兩個中間特權位級PL1與PL2。
最低特權位級PL0對應至應用軟體層。在此範例具體實施例中,資料處理裝置100藉由處理資源之分時多工(time division multiplexing)執行六個不同的應用程式,以使在任一時間處,六個不同的應用程式中僅有一者具有對資料處理電路100的控制。
第一應用程式202為32位元程式,32位元程式包含32位元程式指令,且因此在執行此第一應用程式202時,資料處理裝置100位於32位元操作狀態中。第二應用程式204亦為執行需要32位元處理器操作狀態的32位元程式,第三應用程式206為64位元程式,包含64位元程式指令,且因此在執行此應用程式時,資料處理裝置被置入64位元操作狀態中。第四應用程式208為需要32位元處理器操作狀態的32位元應用程式。最低特權位級PL0亦包含第一安全(secure)64位元應用程式209與第二安全32位元應用程式210。這些安全應用程式僅可在資料處理裝置位於安全作業模式中時被執行。
第一特權位級PL1(第二低特權位級)對應至作業系統軟體層。在第1圖與第2圖之具體實施例中,資料處理裝置設定為具有容納三個不同訪客作業系統的能力。第一訪客作業系統222為32位元作業系統,代表包含具有32位元虛擬位址的32位元程式。第二訪客作業系統224為64作業系統,代表包含具有32位元以上虛擬位址的64位元程式。64位元安全作業系統226亦位於第一特權位級PL1,以供處理器作業之安全模式專屬使用。
作業系統負責管理應用程式,特定言之,控制應用程式對下層資料處理系統100的存取以及不同應用程式之間的分時多工,包含(在多處理器與多執行緒處理器中)將應用程式分配給不同處理器與執行緒。在第1圖與第2圖之具體實施例中,32位元作業系統僅可管理32位元應用程式,且因此由第一訪客作業系統222管理的兩個應用程式(第一應用程式202與第二應用程式204)皆為32位元應用程式。然而,64位元作業系統能夠管理64位元與32位元應用程式兩者,且因此由第二訪客作業系統224與安全作業系統226管理的應用程式,包含32位元應用程式與64位元應用程式的混合。作業系統222、224與226負責控制一對轉譯表基底暫存器(TTBR0_PL1與TTBR1_PL1),該對轉譯表基底暫存器影響如何對在特權位級PL0處執行之應用程式之每一者,以及如何對在特權位級PL1處執行之作業系統自身,執行虛擬至實體記憶體位址轉譯。
第二特權位級PL2對應至超管理器軟體層。在第2圖中,超管理器230為64位元程式,包含在資料處理裝置100上執行的64位元程式指令,並使第一訪客作業系統222與第二訪客作業系統224能夠在相同的資料處理裝置100上執行。超管理器230為虛擬化系統的部份,虛擬化系統使第一訪客作業系統222與第二訪客作業系統224在相同的資料處理裝置100上執行,而彼此無需認知係有另一訪客作業系統正同時在資料處理裝置100上執行。
超管理器負責管理作業系統,特定言之,控制作業系統對下層資料處理系統100的存取,以及在不同作業系統之間的分時多工,包含(在多處理器與多執行緒處理器中)將作業系統分配給不同處理器與執行緒。64位元超管理器能夠管理32位元與64位元作業系統兩者,且因此由超管理器230管理的作業系統包含32位元與64位元作業系統的混合。超管理器230控制虛擬轉譯表基底暫存器(VTTBR_PL2)的實施,虛擬轉譯表基底暫存器(VTTBR_PL2)更進一步影響對於在特權位級PL1處執行之作業系統之每一者,以及對於在特權位級PL0處執行之由這些作業系統管理之應用程式,如何執行虛擬至實體記憶體位址轉譯。超管理器230亦控制第三轉譯表基底暫存器(TTBR_PL2)的實施,第三轉譯表基底暫存器(TTBR_PL2)控制如何對在特權位級PL2處執行之超管理器,執行虛擬至實體記憶體位址轉譯。因此,在PL2之虛擬至實體位址轉譯係獨立於在PL0與PL1之虛擬至實體位址轉譯。
最高特權位級為PL3,且此對應至安全監視器240軟體層,安全監視器240軟體層在此情況下為包含64位元程式指令的64位元程式。安全監視器240操作如在執行於非安全模式之軟體(如超管理器230、作業系統222、224以及應用程式202、204、206與208)與執行於安全模式之軟體(如安全作業系統226與安全應用程式對209、210)之間的守門員。如第2圖所示,在資料處理裝置位於安全模式中時,未使用超管理器230。因此,在安全模式中,僅有有效的三個特權位級:PL0、PL1與PL3。安全監視器240亦控制第四轉譯表基底暫存器(TTBR_PL3)的實施,第四轉譯表基底暫存器(TTBR_PL3)控制如何對在特權位級PL3執行的安全監視器,執行虛擬至實體記憶體位址轉譯。因此,在PL3的虛擬至實體位址轉譯係獨立於在PL0、PL1與PL2的虛擬至實體位址轉譯。
對於包含僅能夠處理單執行緒作業之單一執行管線110的資料處理裝置100,在任一時間處不論在安全或非安全模式中,僅將有單一個應用程式在單一作業系統的控制下執行。對於第2圖圖示說明之四個特權位級之每一者,第1圖之除錯模組130的EDIFR 136儲存對應之運算子位元寬度。在此具體實施例中,因為有四個可能的特權位級,使用欄位RW[3:0](亦即,32位元EDIFR暫存器136之四位元欄位)以提供對應至每一異常位級(exception level)之運算子位元寬度(或均等的暫存器寬度)的指示。
在第2圖上方圖示對於資料處理裝置之可能操作狀態之每一者的欄位RW[3:0]內容。在第一應用程式202在超管理器230的控制下,在第一訪客作業系統222上執行並位於具有安全監視器240的系統中時,四位元暫存器欄位RW[3:0]具有值「1100」。此係因為在此具體實施例中,使用值「1」指示64位元處理器狀態,而使用值「0」指示32位元處理器架構狀態。RW暫存器欄位的四個位元各別對應至PL3、PL2、PL1與PL0。類似地,在第二應用程式204正在超管理器230與安全監視器240上方,在第一訪客作業系統222上執行時,四位元暫存器欄位RW[3:0]具有值「1100」。另一方面,在第三應用程式206(為64位元應用程式)正在64位元第二訪客作業系統224上執行時,暫存器欄位RW[3:0]具有值「1111」,因為應用程式、作業系統、超管理器與安全監視器均對應至64位元程式碼。在第四應用程式208正在第二訪客作業系統上執行時,四位元暫存器欄位RW[3:0]具有值「1110」,因為除了最低特權位級(亦即,第四應用程式208)之外均對應至64位元碼。
在資料處理裝置正於安全模式中操作時,僅有三個而非四個特權位級,因為對應至PL2的超管理器層230不存在。因此,RW[2]之值的選擇為任意的。在第1圖所示之資料處理裝置中,在操作於安全模式中時RW[2]設定為與RW[1]相同的值。因此在第2圖中。在第一(64位元)安全應用程式209正在安全作業系統226上執行時,暫存器欄位RW[3:0]具有值「1111」,且在第二(32位元)安全應用程式210正執行時,暫存器欄位RW[3:0]具有值「1110」。
將認知到,在包含多個處理器(且因此包含多個執行管線)、及/或其他能夠同時執行多個執行緒的其他具體實施例中,在任一時間處可執行多個應用程式,可能在多個作業系統的控制下,並可能在安全與非安全模式之混合中。在此種具體實施例中,可複製EDIFR的控制欄位以對每一硬體執行緒提供相同資訊。
第3圖示意圖示說明第1圖所示之資料處理裝置如何經配置,以具有在程式指令執行期間在不同的複數個特權位級之每一者之間切換的能力,以及在不同特權位級下虛擬至實體位址轉譯方案如何可分異。
第3圖圖示在最低特權位級PL0下的32位元應用程式410、在次高特權位級PL1下的32位元訪客作業系統420、在下一特權位級PL2下的64位元超管理器430、以及在最高特權位級PL3下的64位元安全監視器440。第1圖所示之資料處理裝置100之操作狀態,在資料處理電路100正於非除錯或除錯模式中執行程式指令時,可在不同的四個特權位級PL0、PL1、PL2、PL3之每一者之間往上與往下切換。隨著資料處理裝置在這些特權位級之間切換,操作狀態隨之改變。
在資料處理裝置從特權位級PL0執行程式指令時,已由程式碼產生的32位元虛擬記憶體位址,將使用特定於訪客作業系統420所屬特權位級的轉譯表基底暫存器(TTBR0_PL1與TTBR1_PL1),被轉譯為中間實體位址。相應地,中間實體位址將使用對應於超管理器430之特權位級PL2的虛擬轉譯表基底暫存器(VTTBR_PL2),被轉譯為最終實體位址。
類似地,在執行32位元訪客作業系統420之程式指令時,對應至正執行之訪客作業系統指令的32位元虛擬位址,將使用對應至訪客作業系統420之特權位級PL1的轉譯表基底暫存器TTBR0_PL1與TTBR1_PL2,被轉譯為中間實體位址,且相應地,此中間實體位址將參考與超管理器430相關之虛擬轉譯表基底暫存器,被轉譯為最終實體位址。
相反而論,在64位元超管理器430之程式指令對應於特權位級PL2而被執行時,僅需執行單一級虛擬至實體位址轉譯,故64位元虛擬位址被參考與超管理器特權位級相關之轉譯表基底暫存器(TTBR_PL2),直接轉譯為實體位址。在此情況下不需要虛擬轉譯表基底暫存器。
除了在第3圖之不同特權位級之虛擬位址大小與虛擬至實體位址轉譯之間的差異之外,於在對不同特權位級之系統暫存器及(或)記憶體位置的存取性中亦有差異。特定言之,在最高特權位級處所有系統暫存器將為可見,且在逐漸較低之特權位級處可用的系統暫存器將逐漸較少。
此外,在系統控制暫存器特定地鏈結至操作狀態的情況下,系統暫存器於在32位元狀態中存取時將似如32位元系統暫存器,但於在64位元狀態中存取時將似如64位元暫存器。例如,包含虛擬位址的錯誤位址暫存器(Fault Address Register;FAR)(未圖示),在32位元狀態中為32位元寬,但在64位元狀態中為64位元寬。其他系統暫存器自然地為64位元寬,且因此必須使用特別的系統指令存取,特別的系統指令於在32位元操作狀態中時,在一對32位元一般用途暫存器上操作,但於在64位元操作狀態中時,可由在單一64位元一般用途暫存器上操作的一般系統暫存器指令存取。例如,TTBR暫存器包含轉譯表的實體基底位址,且因為實體位址的大小大於32位元,TTBR暫存器在32位元操作狀態與64位元操作狀態兩者中皆為64位元寬。其他系統暫存器在一個狀態中可為可存取,但在另一狀態中可為不可存取。
由於虛擬至實體位址轉譯方案取決於處理器的操作狀態,且(在第3圖之情況下)對應至資料處理系統當前正操作之特權位級,不可能任意地分配除錯指令集以在任何給定特權位級執行除錯作業。例如,若在資料處理裝置位於對應至第3圖之PL1之操作狀態中時分配了64位元除錯指令集,則將發生問題,因為在此特權位級操作的訪客作業系統420為32位元訪客作業系統,32位元訪客作業系統實施需要從64位元除錯指令產生32位元虛擬位址的虛擬至實體位址轉譯方案。若欲讀取TTBR暫存器之64位元除錯指令集在對應至第3圖之PL1之操作狀態中被執行,則將發生另一問題,因為此指令通常在64位元系統暫存器與單一64位元一般用途暫存器之間傳輸資料,但32位元指令集均等的在64位元系統暫存器與一對32位元一般用途暫存器之間傳輸資料。
第4A圖示意圖示說明對於第1圖之EDIFR暫存器136的位元分配(bit-allocation)。如第4A圖所示,EDIFR為32位元暫存器,其中在資料處理裝置位於除錯狀態時位元EDIFR[9:8]被分配以指定當前特權位級,同時位元EDIFR[13:10]被分配為對第2圖之具體實施例之四個特權位級之每一者,指定與此特權位級相關之對應運算子位元寬度。對於第1圖之具體實施例,對於每一特權位級之運算子位元寬度或可被稱為暫存器寬度,暫存器寬度具有可變暫存器寬度(32位元或64位元配置)。因此,EDIFR的運算子位元寬度或暫存器寬度欄位,將被表示為RW[13:10],同時被分配以指定當前特權的位元將被表示為PL[9:8]。運算子位元寬度指示位元RW[13:10]被分配,以使位元13對應至最高特權位級,同時位元10對應至最低特權位級(亦即,位元13至10各別對應至PL3、PL2、PL1與PL0)。欄位RW[13:10]為唯讀欄位,同時資料處理裝置可寫入欄位PL[9:8]以更新當前特權位級。
第4B圖之表圖示對於兩位元欄位PL[9:8]之四個可能值之每一者,所指示的對應特權。特定言之,PL[9:8]=00對應至最低特權位級PL0;PL[9:8]=01對應至PL1;PL[9:8]=10對應至PL2;且PL[9:8]=11對應至最高特權位級PL3。就除錯電路而言,這兩個位元PL[9:8]為唯讀。在資料處理裝置100位於除錯模式時,兩位元PL[9:8]代表處理器的當前特權位級,但若資料處理裝置位於非除錯狀態,則兩位元欄位PL[9:8]被設為值「00」。
第4C圖之表對於各別對應至四個RW位元之四個特權位級之每一者,對EDIFR欄位RW[13:10]的不同位元值指定對應的處理器暫存器寬度操作狀態(或均等地為運算子位元寬度操作狀態)。RW[13:10]=1111對應為所有四個特權位級均在64位元暫存器寬度狀態中。值RW[13:10]=1110對應為最高的三個特權位級PL3、PL2與PL1位在64位元暫存器寬度狀態中,且最低特權位級PL0在32位元暫存器寬度狀態中。值RW[13:10]=1100對應為最高的兩個特權位級PL3與PL2位在64位元暫存器寬度狀態中,同時最低的兩個特權位級PL1與PL0位在32位元暫存器寬度狀態中。必須注意到此特定值RW[13:10]=1100,在資料處理裝置當前操作在安全模式中時將不為可見,因為(如第2圖圖示)對應至PL2的超管理器層係不為安全模式所可見。值RW[13:10]=1000對應為最高特權位級PL3位在64位元暫存器寬度狀態中,同時剩餘的最低的三個特權位級PL2、PL1與PL0位在32位元暫存器寬度狀態中。此特定位元圖樣RW[13:10]=1000亦被選定以對於安全模式,指示PL3係位在64位元暫存器寬度狀態中,同時PL1與PL0位在32位元暫存器寬度狀態中(在此狀態中PL2不存在)。位元圖樣RW[13:10]=0000指示所有四個特權位級對應至32位元暫存器寬度狀態。其他RW[13:10]值是不被允許的。
對於此特定具體實施例,為方便起見,已對暫存器寬度狀態指示器RW與特權位級狀態指示器PL選定特定的預定值。例如,若資料處理裝置不在除錯模式中,則欄位RW[13:10]被設為「1111」。若當前特權位級為除了PL0外的任意者,則較低位元暫存器寬度欄位的最低位元RW[10]被設為與RW[11]相等。在安全模式中不存在PL2,且因此RW[12]被設為與RW[11]相等。
第5圖示意圖示說明,對於32位元暫存器寬度狀態(標籤為「AArch 32」)以及對於64位元暫存器寬度狀態(標籤為「AArch 64」),在處理器位於給定暫存器寬度狀態中時可執行的對應指令集。在第5圖中,第一集(標籤為510)對應至「AArch 32」,換言之,32位元運算子寬度或32位元暫存器寬度狀態。在此處理器狀態中,資料處理裝置能夠執行三種不同的指令集。第一指令集522為「A32」指令集,對應至在32位元寬度資料上操作的高效能32位元寬指令。第二指令集524為「T32」指令集,「T32」指令集代表更精簡的指令集,包含壓縮為16位元寬度格式之最常用的A32指令的子集,但這些指令亦在32位元寬度資料上操作。第三指令集526為「T32EE」指令集(亦稱為「ThumbEE」指令集),「T32EE」指令集代表類似於T32的精簡指令集,但併入適於虛擬機器的擴充,虛擬機器提供能夠執行在物件導向程式碼(諸如Java指令)與T32EE指令之間之轉換的能力。因此,在處理器根據32位元暫存器寬度狀態中操作時(亦即,在32位元寬度資料上操作時),可執行三個指令集選項:A32、T32與T32EE。
在第5圖中,第二集550代表64位元暫存器寬度狀態「AArch 64」,其中可執行單一「A64」指令集562。A64指令集在64位元寬度資料上操作。值得注意的是,在此具體實施例中,在AArch 64指令集550之集與AArch 32指令集510之集之間沒有交集。根據本技術,若決定資料處理裝置100當前係於AArch 64暫存器寬度狀態550中,則A64指令集562被分配為除錯指令集,但若處理器在進入除錯模式時資料處理裝置100位於AArch 32暫存器寬度狀態中,則T32指令集524被選定為除錯指令集,而無論處理器在進入除錯模式時是正執行A32指令集522、T32指令集524或T32EE指令集526。很明顯地,對於32位元暫存器寬度狀態AArch 32之特定選擇T32指令集524,係專屬於此特定具體實施例。在替代性具體實施例中,三個可能的AArch 32指令集522、524與526之任一者可被選定為除錯指令集。在其他替代性具體實施例中,完整非除錯模式指令集之一者之子集被選定為除錯模式指令集。
第6圖為流程圖,示意圖示說明由第1圖資料處理裝置執行,以決定由除錯模組130實施之適當的除錯指令集的作業。
程序開始於階段610,在階段610,執行管線110處理從晶片上記憶體142或晶片外記憶體144獲得的指令。因此,在階段610資料處理裝置在標準操作模式中執行指令,而非在除錯模式中。程序隨後進行至階段620,在階段620決定是否發生了除錯事件。若在階段620未發生除錯事件,則處理器回到階段610,在階段610執行管線繼續擷取、解碼並執行來自記憶體142與144的指令。然而,若事實上在階段620偵測到了除錯事件,則程序進行至階段630,在階段630資料處理裝置(資料處理電路)進入除錯模式。在階段630之後,程序進行至階段640,在階段640決定資料處理裝置是否位在64位元處理器狀態中。若在階段640發現資料處理裝置位在32位元處理器狀態中,則程序進行至階段650,在階段650資料處理電路分配T32指令集以作為除錯指令集。程序隨後進行至階段670。另一方面,若在階段640決定資料處理裝置位於64位元處理器狀態中(對應至第5圖之狀態550),則程序進行至階段660,在階段660資料處理電路分配A64指令集以用於除錯作業。如第5圖所示,A64指令集為資料處理器可在64位元處理器操作狀態中執行的指令集,同時T32指令集為資料處理裝置在32位元處理器操作狀態中於非除錯模式中能執行之三種不同的指令集中之一者。
雖然在第6圖之具體實施例中,在階段650與660處理器分配了A64或T32指令集,在替代性具體實施例中所分配的除錯指令集包含完整指令集之子集。例如,A64指令集、A32指令集、T32指令集或T32EE指令集之一者的子集。適合用於除錯模式中之完整指令集的子集,可(例如)被適當地選定以排除諸如分支(branch)指令之指令的執行,此指令在除錯模式中為不想要的。因此,在T32或A64指令集子集中,如分支指令等等可被強迫為未定義。
在階段650與660兩者之後,程序進行至階段670,在階段670除錯電路130對除錯器152(亦即,除錯單元)指示欲使用的指令集。在此階段資料處理電路亦更新除錯模組130中的暫存器,以指示當前係使用哪個指令集。一旦在階段670指示了適當的除錯指令集,程序進行至階段680,在階段680除錯指令開始執行。在此階段,因為處理器位於除錯模式,執行管線110不再從記憶體擷取指令,而是直接從第1圖之除錯模組130之指令傳輸暫存器134擷取指令。
在階段680之後,程序進行至階段690,在階段690決定資料處理裝置是否必須退出除錯模式。若由除錯軟體152控制的除錯作業已完成,則除錯模組將在階段690退出,且程序回到階段610,在階段610處理器從除錯模式切換回標準作業模式,在標準作業模式中指令被從記憶體142與144送進執行管線110。另一方面,若在階段690決定需要另外的除錯作業且資料處理裝置必須保持在除錯模式中,則程序進行至700,在階段700確定在除錯模式中的同時,資料處理器操作的當前特權是否有改變。
若在確定了最近的特權位級以後,特權位級未有改變,則程序回到階段680。因此若當前特權位級未有改變且資料處理裝置仍位於除錯狀態中,則繼續處理來自指令傳輸暫存器134的指令。然而,在階段700當特權位級有改變時,程序回到階段640,在階段640所分配的除錯指令集根據當前特權位級被更新。
第7圖圖示說明可使用的虛擬機器實施。雖然先前描述之具體實施例以裝置和方法實施本發明,以操作支援所關注技術之特定處理硬體,亦可能提供所謂的硬體裝置的虛擬機器實施。這些虛擬機器實施在主處理器740上執行,主處理器740執行支援虛擬機器程式720的主作業系統730。通常需要大型強大的處理器以提供執行於可接受的速度的虛擬機器實施,但此作法在特定狀況中可被證明為是正當的,諸如在為了相容性或再使用之理由想要執行專屬於另一處理器的碼時。虛擬機器程式720提供應用程式介面至應用程式710,應用程式710與可由真實硬體提供之應用程式介面相同,真實硬體為由虛擬機器程式720構型之裝置。因此,包含如上述對記憶體存取之控制的程式指令,可使用虛擬機器程式720從應用程式710內中執行,以構型他們與虛擬機器硬體的互動。
雖然本文已參照附加圖式描述了本發明之示意性具體實施例,必須瞭解本發明並不限於這些精確的具體實施例,且在本發明領域中具有通常知識者可在這些具體實施例中進行各種改變與修改,而不脫離如附加申請專利範圍所界定之本發明的範圍與精神。
100...積體電路
110...執行管線
120...一般用途暫存器組
130...除錯模組
132...除錯埠
134...指令傳輸暫存器(ITR)
136...外部除錯介面暫存器(EDIFR)
140...記憶體管理單元(MMU)
142...晶片上記憶體
144...晶片外記憶體
150...主個人電腦
152...除錯軟體組
160...控制暫存器組
202...第一應用程式
204...第二應用程式
206...第三應用程式
208...第四應用程式
209...第一安全64位元應用程式
210...第二安全32位元應用程式
222...第一訪客作業系統
224...第二訪客作業系統
226...64位元安全作業系統
230...超管理器
240...安全監視器
410...32位元應用程式
420...32位元訪客作業系統
430...64位元超管理器
440...64位元安全監視器
510...第一集
522...第一指令集
524...第二指令集
526...第三指令集
550...第二集
562...A64指令集
610...階段
620...階段
630...階段
640...階段
650...階段
660...階段
670...階段
680...階段
690...階段
700...階段
710...應用程式
720...虛擬機器程式
730...主作業系統
740...主處理器
第1圖示意圖示說明根據本發明之第一具體實施例的資料處理裝置,其中處理器實施可變暫存器寬度,且提供包含外部除錯介面暫存器的除錯模組;
第2圖示意圖示說明第1圖之資料處理裝置的複數個不同的操作狀態,以及彼等操作狀態如何對應至複數個不同的特權位級與各別的複數個軟體階層;
第3圖示意圖示說明四個不同的特權位級、資料處理裝置如何執行不同特權位級之間的切換、以及不同特權位級如何實施對於虛擬位址至實體位址之轉譯的不同方案;
第4A圖示意圖示說明在第1圖之外部除錯介面暫存器(EDIFR)中的位元分配之子集;
第4B圖示意圖示說明對於第1圖之EDIFR之特權位級指示位元的位元圖樣與各別特權位級;
第4C圖示意圖示說明對於複數個暫存器寬度位元圖樣之每一者,對於四個特權位級之每一者所對應的處理器狀態;
第5圖示意圖示說明對於32位元處理器操作狀態與64位元處理器操作狀態兩者,在處理器操作狀態與可用之對應指令集之間的映射;
第6圖為示意圖示說明如何由第1圖之資料處理裝置分配適當除錯指令集的流程圖;且
第7圖示意圖示說明虛擬機器實施。
100...積體電路
110...執行管線
120...一般用途暫存器組
130...除錯模組
132...除錯埠
134...指令傳輸暫存器(ITR)
136...外部除錯介面暫存器(EDIFR)
140...記憶體管理單元(MMU)
142...晶片上記憶體
144...晶片外記憶體
150...主個人電腦
152...除錯軟體組
160...控制暫存器組

Claims (36)

  1. 一種資料處理裝置,該資料處理裝置包含:資料處理電路,用於回應於程式指令之執行而執行資料處理作業,該資料處理電路經配置以至少操作於一操作模式與一除錯模式中;除錯電路,該除錯電路經配置以在該資料處理電路與一除錯單元之間提供一介面,該除錯單元位於該資料處理電路的外部,該除錯電路經配置以在該資料處理電路正操作於該除錯模式中時控制該資料處理電路的作業;其中該資料處理電路經配置以在該資料處理電路進入該除錯模式時,決定該資料處理裝置的一當前操作狀態,並根據該當前操作狀態分配複數個指令集中之一者以作為一除錯指令集。
  2. 如請求項第1項所述之資料處理裝置,其中該資料處理電路經配置以對該除錯單元指示用於控制該資料處理電路的該經分配除錯指令集。
  3. 如請求項第1項所述之資料處理裝置,其中該資料處理電路係可配置成操作於複數個特權位級(privilege levels),其中該資料處理電路在不同的特權位級對程式指令施加不同的對於一記憶體與一暫存器組之至少一者的存取許可。
  4. 如請求項第3項所述之資料處理裝置,其中該資料處理電路在該等特權位級中之不同者,各別應用不同的虛擬記憶體位址至實體記憶體位址轉譯規則。
  5. 如請求項第3項所述之資料處理裝置,其中該資料處理裝置經配置以執行對應至複數個不同的軟體階層的程式指令,該複數個軟體階層對應至各別的該複數個特權位級。
  6. 如請求項第5項所述之資料處理裝置,其中該複數個特權位級之一第一者對應至一應用程式層,且該複數個特權位級之一第二者對應至一作業系統層。
  7. 如請求項第6項所述之資料處理裝置,其中該複數個特權位級之一第三者對應至一超管理器層(hypervisor layer)。
  8. 如請求項第6項所述之資料處理裝置,其中一再者特權位級對應至一安全監視層。
  9. 如請求項第3項所述之資料處理裝置,其中於在該複數個特權位級之不同者之間切換之時,該資料處理電路經配置以重複決定該當前操作狀態與該除錯指令集,以產 生一更新除錯指令集,並對該除錯單元指示該更新除錯指令集。
  10. 如請求項第1項所述之資料處理裝置,其中該當前操作狀態係從複數個不同的處理器操作狀態中選定,該複數個不同的處理器操作狀態具有各別不同的運算子位元寬度。
  11. 如請求項第10項所述之資料處理裝置,其中該複數個操作狀態至少包含一32位元操作狀態與一64位元操作狀態。
  12. 如請求項第10項所述之資料處理裝置,其中該資料處理裝置包含用於儲存該等程式指令之運算子的複數個暫存器,且其中該等不同的運算子位元寬度對應至用於該資料處理電路之不同的暫存器寬度。
  13. 如請求項第12項所述之資料處理裝置,其中該複數個暫存器之至少一子集經配置為可變寬度暫存器。
  14. 如請求項第2項所述之資料處理裝置,其中該資料處理電路經配置以藉由寫入可被該除錯單元存取的至少一個暫存器,來對該除錯單元指示該除錯指令集。
  15. 如請求項第2項所述之資料處理裝置,其中該資料處理電路經配置以藉由傳送一控制命令至該除錯單元,來對該除錯單元指示該除錯指令集。
  16. 如請求項第1項所述之資料處理裝置,其中該資料處理裝置經配置以在可被該除錯單元存取的一給定位置中,維持該當前操作狀態之一經儲存值。
  17. 如請求項第3項所述之資料處理裝置,其中該當前操作狀態係從複數個處理器操作狀態中選定,該複數個處理器操作狀態具有各別的運算子位元寬度,且其中資料處理裝置經配置以在可被該除錯單元存取的一第一位置中,維持與該複數個特權位級之每一者相關的一運算子位元寬度之一記錄。
  18. 如請求項第17項所述之資料處理裝置,其中該資料處理裝置經配置以在可被該除錯單元存取的一第二位置中,維持該資料處理電路正操作之一當前特權位級的一記錄。
  19. 如請求項第18項所述之資料處理裝置,其中該資料處理電路使用該當前特權位級以從該複數個處理器操作狀態中決定該除錯指令集,該複數個處理器操作狀態各別具有該等運算子位元寬度之各別者。
  20. 如請求項第1項所述之資料處理裝置,其中該資料處理裝置經配置以維持對應於該當前處理器操作狀態之一當前運算子位元寬度的一記錄。
  21. 如請求項第20項所述之資料處理裝置,其中該除錯單元經配置以從該當前運算子位元寬度之該記錄,推論出由該資料處理電路分配的該除錯指令集。
  22. 如請求項第21項所述之資料處理裝置,其中該除錯單元經配置以使至少一個程式指令被該資料處理電路執行,以決定該資料處理電路正操作之一當前特權位級。
  23. 如請求項第1項所述之資料處理裝置,其中該經分配除錯指令集包含可供該資料處理裝置在一非除錯模式中執行的一完整指令集之一子集。
  24. 如請求項第23項所述之資料處理裝置,其中該完整指令集包含下列之其中一者:一A32指令集;一T32指令集;一T32EE指令集;以及一A64指令集。
  25. 如請求項第23項所述之資料處理裝置,其中該完整指令集之該子集至少排除了分支指令(branch instructions)。
  26. 一種用於執行一資料處理裝置之指令之除錯的除錯單元,該資料處理裝置係能夠至少操作於一除錯模式、一作業模式與複數個不同的操作狀態中,該除錯單元包含:讀取電路,該讀取電路用於從該資料處理裝置內的一儲存位置,讀取一當前運算子位元寬度之一記錄,該當前運算子位元寬度之該記錄指定該資料處理裝置之該複數個操作狀態之一者;推論電路,該推論電路用於推論用於產生除錯指令的一除錯指令集,以供應至該資料處理裝置之除錯電路來執行該除錯。
  27. 如請求項第26項所述之除錯單元,其中該推論電路經配置以基於從該資料處理裝置接收到的一控制命令,推論該除錯指令集。
  28. 如請求項第26項所述之除錯單元,其中該推論電路經配置以基於該資料處理裝置內之該當前運算子位元寬度之該經讀取內容,來推論該除錯指令集。
  29. 如請求項第27項所述之除錯單元,其中該資料處理裝置係能夠操作在複數個不同的特權位級,其中該資料處理裝置在不同的特權位級對程式指令施加不同的對於 一記憶體與一暫存器組之至少一者的存取許可,且其中該推論電路經配置以使至少一個程式指令被該資料處理裝置執行,以決定該資料處理裝置正操作之一當前特權位級。
  30. 一種用於執行一資料處理裝置之作業之除錯的除錯方法,該資料處理裝置係能夠至少操作於一除錯模式、一作業模式與複數個不同的操作狀態中,該除錯方法包含以下步驟:從該資料處理裝置內的一儲存位置,讀取一當前運算子位元寬度之一記錄,該當前運算子位元寬度之該記錄指定該資料處理裝置之該複數個操作狀態之一者;以及推論用於產生除錯指令的一除錯指令集,以供應至該資料處理裝置之除錯電路來執行該除錯。
  31. 一種用於實施如請求項第30項所述之除錯方法的電腦程式。
  32. 一種由在一資料處理裝置上執行之一電腦程式提供的虛擬機器(virtual machine),該虛擬機器根據如請求項第1項所述之資料處理裝置來提供一指令執行環境。
  33. 一種資料處理裝置,包含: 執行構件,用於回應於程式指令之執行而執行資料處理作業,該執行構件經配置以至少操作於一操作模式與一除錯模式中;除錯構件,用於經配置以在該執行構件與一除錯分析構件之間提供一介面,該除錯分析構件位於該資料處理裝置之外部,該除錯構件經配置以在該執行構件正操作於該除錯模式中時控制該執行構件之作業;其中該執行構件經配置以在該執行構件進入該除錯模式時,決定該執行構件的一當前操作狀態,並根據該當前操作狀態分配複數個指令集中之一者以作為一除錯指令集,並對該除錯分析構件指示用於控制該執行構件的該經分配除錯指令集。
  34. 一種資料處理方法,該方法包含以下步驟:回應於程式指令之執行而在資料處理電路上執行資料處理作業,該資料處理電路經配置以至少操作於一操作模式與一除錯模式中;在該資料處理電路與一除錯單元之間提供一除錯介面,該除錯單元位於該資料處理電路之外部,該除錯介面經配置以在該資料處理電路正操作於該除錯模式中時控制該資料處理電路之作業;在該資料處理電路進入該除錯模式時,決定該資料處理電路的一當前操作狀態,並根據該當前操作狀態分配複數個指令集中之一者以作為一除錯指令集。
  35. 一種用於實施如請求項第34項所述之方法的電腦程式產品。
  36. 一種用於執行一資料處理裝置之指令之除錯的裝置,該資料處理裝置係能夠至少操作於一除錯模式、一作業模式與複數個不同的操作狀態中,該除錯單元包含:讀取構件,用於從該資料處理裝置內的一儲存位置,讀取一當前運算子位元寬度之一記錄,該當前運算子位元寬度之該記錄指定該資料處理裝置之該複數個操作狀態之一者;以及推論構件,用於推論用於產生除錯指令的一除錯指令集,以供應至該資料處理裝置之除錯電路來執行該除錯。
TW100126426A 2010-09-24 2011-07-26 資料處理裝置的除錯(二) TWI423018B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB1016077.8A GB2483906C (en) 2010-09-24 2010-09-24 Selection of debug instruction set for debugging of a data processing apparatus

Publications (2)

Publication Number Publication Date
TW201224740A TW201224740A (en) 2012-06-16
TWI423018B true TWI423018B (zh) 2014-01-11

Family

ID=43127905

Family Applications (1)

Application Number Title Priority Date Filing Date
TW100126426A TWI423018B (zh) 2010-09-24 2011-07-26 資料處理裝置的除錯(二)

Country Status (10)

Country Link
US (2) US9355014B2 (zh)
EP (1) EP2619671B1 (zh)
JP (1) JP5778283B2 (zh)
KR (1) KR101770665B1 (zh)
CN (1) CN103140837B (zh)
GB (1) GB2483906C (zh)
IL (1) IL224509A (zh)
MY (1) MY165363A (zh)
TW (1) TWI423018B (zh)
WO (1) WO2012038710A1 (zh)

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2483906C (en) 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus
US9053233B2 (en) * 2011-08-15 2015-06-09 Freescale Semiconductor, Inc. Method and device for controlling debug event resources
US9047090B2 (en) * 2012-08-07 2015-06-02 Qualcomm Incorporated Methods, systems and devices for hybrid memory management
KR20140083530A (ko) * 2012-12-26 2014-07-04 삼성전자주식회사 하드웨어를 디버깅하는 부트 쉘을 포함하는 시스템온칩 및 이의 구동 방법
US9183399B2 (en) * 2013-02-14 2015-11-10 International Business Machines Corporation Instruction set architecture with secure clear instructions for protecting processing unit architected state information
US20150019775A1 (en) * 2013-03-14 2015-01-15 Microchip Technology Incorporated Single Wire Programming and Debugging Interface
JP6086230B2 (ja) * 2013-04-01 2017-03-01 日本電気株式会社 中央演算装置、情報処理装置、および仮想コア内レジスタ値取得方法
US9665468B2 (en) * 2013-08-19 2017-05-30 Intel Corporation Systems and methods for invasive debug of a processor without processor execution of instructions
GB2527088B (en) 2014-06-11 2021-07-14 Advanced Risc Mach Ltd Executing debug program instructions on a target apparatus processing pipeline
GB2530050B (en) * 2014-09-10 2021-07-21 Advanced Risc Mach Ltd Debugging in a data processing apparatus
US10013360B2 (en) * 2015-03-04 2018-07-03 Cavium, Inc. Managing reuse information with multiple translation stages
GB2538091B (en) * 2015-05-07 2018-03-14 Advanced Risc Mach Ltd Verifying correct code execution context
GB2539428B (en) 2015-06-16 2020-09-09 Advanced Risc Mach Ltd Data processing apparatus and method with ownership table
GB2539433B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Protected exception handling
GB2539429B (en) 2015-06-16 2017-09-06 Advanced Risc Mach Ltd Address translation
GB2539435B8 (en) 2015-06-16 2018-02-21 Advanced Risc Mach Ltd Data processing memory access control, in which an owning process for a region of memory is specified independently of privilege level
GB2539436B (en) * 2015-06-16 2019-02-06 Advanced Risc Mach Ltd Secure initialisation
US9465617B1 (en) * 2015-06-29 2016-10-11 Vmware, Inc. Implementing upcall from secure to non-secure mode by injecting exception into non-secure mode
CN106779700B (zh) * 2016-11-15 2021-03-30 中国银行股份有限公司 跨行交易权限控制方法及装置
US10754765B2 (en) * 2017-05-17 2020-08-25 Google Llc Operating system validation
CN110383256B (zh) * 2018-02-02 2022-01-14 华为技术有限公司 一种内核完整性保护方法及装置
US10761855B2 (en) 2018-05-02 2020-09-01 Micron Technology, Inc. Securing conditional speculative instruction execution
US11275587B2 (en) * 2018-05-02 2022-03-15 Micron Technology, Inc. Static identifications in object-based memory access
CN108710554B (zh) * 2018-05-21 2023-06-06 格兰菲智能科技有限公司 处理器侦错系统及方法
GB2582790B (en) 2019-04-03 2021-03-31 Graphcore Ltd Debugging mechanism
US11468199B2 (en) 2020-07-22 2022-10-11 Apple Inc. Authenticated debug for computing systems
CN112346783B (zh) * 2020-11-05 2022-11-22 海光信息技术股份有限公司 一种处理器及其操作方法、装置、设备和介质
CN113672554B (zh) * 2021-07-06 2023-12-29 平头哥(杭州)半导体有限公司 处理器核、处理器、片上系统和调试系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415382B1 (en) * 1999-04-30 2002-07-02 Adaptec, Inc. Hard disk bootstrap redirection
US20040172578A1 (en) * 2003-02-27 2004-09-02 Acer Inc. Method and system of operating system recovery
US6934805B2 (en) * 2003-05-19 2005-08-23 International Business Machines Corporation Method and apparatus for managing computer storage devices for improved operational availability

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5530804A (en) * 1994-05-16 1996-06-25 Motorola, Inc. Superscalar processor with plural pipelined execution units each unit selectively having both normal and debug modes
US5621886A (en) * 1995-06-19 1997-04-15 Intel Corporation Method and apparatus for providing efficient software debugging
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6321329B1 (en) * 1999-05-19 2001-11-20 Arm Limited Executing debug instructions
JP3805578B2 (ja) * 1999-09-14 2006-08-02 松下電器産業株式会社 プロセッサ
US7134116B1 (en) * 2001-04-30 2006-11-07 Mips Technologies, Inc. External trace synchronization via periodic sampling
US7814308B2 (en) * 2004-08-27 2010-10-12 Microsoft Corporation Debugging applications under different permissions
US8769495B1 (en) * 2005-09-30 2014-07-01 Sony Computer Entertainment Inc. Systems and methods for debugging in a multiprocessor environment
US7412589B2 (en) * 2006-03-31 2008-08-12 International Business Machines Corporation Method to detect a stalled instruction stream and serialize micro-operation execution
US8352713B2 (en) * 2006-08-09 2013-01-08 Qualcomm Incorporated Debug circuit comparing processor instruction set operating mode
US7529916B2 (en) * 2006-08-16 2009-05-05 Arm Limited Data processing apparatus and method for controlling access to registers
US7996835B2 (en) * 2006-10-10 2011-08-09 International Business Machines Corporation System, method and program for managing communication with multiple configurations for virtual machine
US8380966B2 (en) * 2006-11-15 2013-02-19 Qualcomm Incorporated Method and system for instruction stuffing operations during non-intrusive digital signal processor debugging
US8914274B1 (en) * 2006-12-11 2014-12-16 Synopsys, Inc. Method and system for instruction set simulation with concurrent attachment of multiple debuggers
US8255203B2 (en) * 2007-04-26 2012-08-28 Hewlett-Packard Development Company, L.P. Method of debugging an executable computer program having instructions for different computer architectures
GB2483907A (en) 2010-09-24 2012-03-28 Advanced Risc Mach Ltd Privilege level switching for data processing circuitry when in a debug mode
GB2483906C (en) 2010-09-24 2019-10-09 Advanced Risc Mach Ltd Selection of debug instruction set for debugging of a data processing apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6415382B1 (en) * 1999-04-30 2002-07-02 Adaptec, Inc. Hard disk bootstrap redirection
US20040172578A1 (en) * 2003-02-27 2004-09-02 Acer Inc. Method and system of operating system recovery
US6934805B2 (en) * 2003-05-19 2005-08-23 International Business Machines Corporation Method and apparatus for managing computer storage devices for improved operational availability

Also Published As

Publication number Publication date
US20120079254A1 (en) 2012-03-29
GB201016077D0 (en) 2010-11-10
JP5778283B2 (ja) 2015-09-16
GB2483906A (en) 2012-03-28
EP2619671B1 (en) 2016-04-20
GB2483906C (en) 2019-10-09
TW201224740A (en) 2012-06-16
MY165363A (en) 2018-03-21
GB2483906B (en) 2018-06-27
EP2619671A1 (en) 2013-07-31
CN103140837A (zh) 2013-06-05
IL224509A (en) 2017-05-29
KR20130112033A (ko) 2013-10-11
US9355014B2 (en) 2016-05-31
CN103140837B (zh) 2016-12-07
US20160239405A1 (en) 2016-08-18
KR101770665B1 (ko) 2017-08-23
WO2012038710A1 (en) 2012-03-29
US10318407B2 (en) 2019-06-11
JP2013542499A (ja) 2013-11-21

Similar Documents

Publication Publication Date Title
TWI423018B (zh) 資料處理裝置的除錯(二)
KR101253454B1 (ko) 컴퓨팅 환경의 다중 페이징가능 게스트에 의한 스토리지 사용의 관리
JP5668143B2 (ja) データ処理装置のデバッグ
US7213125B2 (en) Method for patching virtually aliased pages by a virtual-machine monitor
JP5058970B2 (ja) シーケンサー・アドレス管理
TWI514135B (zh) 記憶體存取控制
JP5255285B2 (ja) プロセッサが規格合致するように見えるアーキテクチャ・レベルを選択するための方法および装置
TW200825904A (en) Virtualizing performance counters
US10402576B2 (en) Safe physical function passthrough using virtual machine functions
JP7445431B2 (ja) 命令の実行を制御する装置および方法
US20060026577A1 (en) Method and system for replacing instructions and instruction blocks in computer code
US10884946B2 (en) Memory state indicator check operations
US20180150311A1 (en) Virtual processor state switching virtual machine functions
US7389398B2 (en) Methods and apparatus for data transfer between partitions in a computer system
JPH06332803A (ja) 仮想計算機システムにおけるtlb制御方法
US20080072009A1 (en) Apparatus and method for handling interrupt disabled section and page pinning apparatus and method
CN113474754A (zh) 有条件退让给管理程序指令
JPH0744401A (ja) 論理集積回路およびそのデータ処理システム
Ruia Virtualization of non-volatile ram
TW201935249A (zh) 在資料處理設備中的位址轉換
JP2006048488A (ja) 命令処理装置及び半導体装置