150 likes | 435 Views
微處理機系統 (Microprocessor System). 第二章 ARM 微處理器基礎. Ping-Liang Lai ( 賴秉樑 ). 章節大綱. 2.1 ARM 微處理器的工作狀態 2.2 ARM 系列結構的定址方式與記憶體格式 2.3 指令長度及資料類型 2.4 處理器模式 2.5 暫存器內容. 2.1 ARM 微處理器的工作狀態. 基本概念 字元組 (Word) : ARM 字元組長度為 32 位元,而在 8/16 位元系列的微處理器,一般為 16 位元 ;
E N D
微處理機系統(Microprocessor System) 第二章ARM 微處理器基礎 Ping-Liang Lai (賴秉樑)
章節大綱 • 2.1 ARM 微處理器的工作狀態 • 2.2 ARM 系列結構的定址方式與記憶體格式 • 2.3 指令長度及資料類型 • 2.4 處理器模式 • 2.5 暫存器內容
2.1 ARM微處理器的工作狀態 • 基本概念 • 字元組 (Word):ARM 字元組長度為32 位元,而在8/16位元系列的微處理器,一般為16位元; • 半字元組 (Half-Word):ARM 半字元組為16位元,與8/16位元系列一致; • 位元組 (Byte): ARM 與8/16位元系列位元組為8位元。 • ARM 微處理器的工作狀態有兩種可相互切換 • ARM 狀態: 執行32位元的字元組對齊的 ARM 指令; • Thumb 狀態:執行16位元的半字元組對齊的 Thumb 指令; • 在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且處理器工作狀態的轉變,不影響其工作模式和相應暫存器中的內容。
章節大綱 • 2.1 ARM 微處理器的工作狀態 • 2.2 ARM 系列結構的定址方式與記憶體格式 • 2.3 指令長度及資料類型 • 2.4 處理器模式 • 2.5 暫存器內容
2.2 ARM系列結構的定址方式與記憶體格式(1/2) • 32位元 ARM 所支援的最大定址空間為4GB (232位元組),8-bit單一的線性定址空間。 • 位元組定址若是無號數的話,可定址的範圍: 0~232-1; • 可視為230個32位元組,若以字元對齊 (word-aligned)的話,則位址可被4整除; • 字元對齊的A,是由A,A+1,A+2,A+3位元組所組成; • 若是半字元組對齊 (halfword-aligned)的話,則位址可被2整除,且半字元組對齊的A,是由A,A+1位元組所組成。
對齊問題 • 在許多機器中,存取大於一個位元組的物件時,必須要對齊 (align)。在位址 A 上存取大小為 s 個位元組的物件時,若 A mod s = 0 (A 是 s 的整數倍),則這次存取是對齊的。 • 不對齊的存取會造成硬體設計的複雜度: 因為記憶體一般都是依據字元或雙字元的整數倍來切齊邊界的,所以未對齊的記憶體存取,需要好幾次對齊的存取才可以得到想要的資料。
2.2 ARM系列結構的定址方式與記憶體格式(2/2) • 兩種方法來存取字元組資料,稱之為大端 (Big Endian)格式與小端 (Little Endian)格式。 • 大端 (Big Endian)格式: 字元組資料的高位元組是儲存在低位址中,而低位元組是儲存在高位址中,Motorola系列的晶片組為主要代表。 • 小端 (Little Endian)格式:字元組資料的高位元組是儲存在高位址中,而低位元組是儲存在低位址中,Atmel系列的晶片組為主要代表。 31 0 14 24 23 15 8 7 31 0 14 24 23 15 8 7
(c) 解法但錯誤: 反轉位元組,反轉後變成 (5, “LLIJ”) (b) 在 SPARC 接收後 (big endian) (5x2^24, “JILL”). Pentium 以 0, 1, 2…, 的位元組順序傳送,但 SPARC將它以大端格式存入。 (a) 在 Pentium 中的原始訊息(little endian) (5, “JILL”)。 字元組資料的順序 • 在同一部電腦中,通常位元組排列的順序不太受到注意,只有針對同一個位址存取字元又存取位元組時才會注意到兩者的差異。 • 然而,在兩種位元組排列順序不同的機器間交換資料時,就可能發生問題。 • 範例: 在 Pentium 的機器中,欲以小端格式傳送資料訊息 (5, “JILL”) 給 SPARC 的機器,而 SPARC 是以大端格式來存取字元組資料的。
章節大綱 • 2.1 ARM微處理器的工作狀態 • 2.2 ARM系列結構的定址方式與記憶體格式 • 2.3 指令長度及資料類型 • 2.4 處理器模式 • 2.5 暫存器內容
2.3 指令長度及資料類型 • ARM 微處理器的指令長度可以是32位元 (在ARM狀態下),也可以為16位元 (在 Thumb 狀態下)。 • 支援位元組 (8位元); • 支援半字元組 (16位元):需要2個位元組對齊 (位址的最低位元為0); • 支援字元組 (32位元): 需要4個位元組對齊 (位址的低兩位元為0)。
章節大綱 • 2.1 ARM 微處理器的工作狀態 • 2.2 ARM 系列結構的定址方式與記憶體格式 • 2.3 指令長度及資料類型 • 2.4 處理器模式 • 2.5 暫存器內容
2.4 處理器模式 • ARM 微處理器支援7種執行模式 • 使用者模式 (User Mode, usr): ARM微處理器正常的程式執行狀態; • 快速中斷模式 (Fast Interrupt Request Mode, FIQ):應用於高速資料傳輸或通道處理; • 外部中斷模式 (Interrupt Request Mode, IRQ):用於通用的中斷處理; • 管理者模式 (Supervisor Mode, SVC):作業系統使用的保護模式; • 終止模式 (Abort Mode, ABT):當資料或指令預取終止時進入該模式,可用於虛擬儲存及儲存保護; • 系統模式 (System Mode, sys):執行具有特權的作業系統任務; • 未定義指令中止模式 (UNDefined Mode, UND): 當未定義的指令執行時進入該模式,可用於支援硬體輔助運算器的軟體除錯。 • 除使用者模式以外,其餘稱之為非使用者模式,或特權模式(Privileged Modes)。
章節大綱 • 2.1 ARM 微處理器的工作狀態 • 2.2 ARM 系列結構的定址方式與記憶體格式 • 2.3 指令長度及資料類型 • 2.4 處理器模式 • 2.5 暫存器內容
2.5 暫存器內容 • ARM 共有37個32位元暫存器,其中31個為通用暫存器,6個為程式狀態暫存器。 • 哪些暫存器是可以透過程式來存取,則取決於微處理器的工作狀態以及目前的執行模式; • 但任何時刻,通用暫存器R0 ~ R14 、程式計數器 PC (R15)、一個或兩個程式狀態暫存器 (CPSR 與 SPSE) 是可以存取的。
ARM狀態下的暫存器內容 以下,分別介紹各種暫存器的內容與特性 • 通用暫存器: 包括R0 ~ R15,可分為三類 • 未分區塊暫存器R0 ~ R7: 在所有的執行模式下,未分區塊暫存器都指向同一個實體暫存器,它們未被系統用作特殊的用途。但是在中斷或例外事件處理進行執行模式轉換時,不同的處理器均使用相同的實體暫存器,可能造成暫存器中的資料被破壞或被更改; • 分區塊暫存器R8 ~ R14: 對於分區塊暫存器,它們每一次所存取的實體暫存器與處理器目前的執行模式有關; • 程式計數器PC (R15): 暫存器R15用作程式計數器 (PC)。 • 目前程式狀態暫存器(Current Program Status Register, CPSR) • R16暫存器,CPSR 可以在任何執行模式下被存取,它包括條件旗標位元、中斷禁止位元、目前處理器模式旗標位元,以及其他一些相關的控制和狀態位元。 • 儲存程式狀態暫存器 (Saved Program Status Register, SPSR) • 每一種執行模式都有一個專用的 SPSR。當例外發生時,SPSR 用來保存 CPSR 的目前值,而退出例外時,則可由 SPSR 的備份值來恢復 CPSR 暫存器 。