上海高考數(shù)學(xué)答案文科.ppt
《上海高考數(shù)學(xué)答案文科.ppt》由會員分享,可在線閱讀,更多相關(guān)《上海高考數(shù)學(xué)答案文科.ppt(50頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第2章ARM體系結(jié)構(gòu) 目錄 2 1ARM體系結(jié)構(gòu)2 2ARM工作狀態(tài)和工作模式2 3ARM狀態(tài)下寄存器組織2 4Tumb狀態(tài)下寄存器組織2 5ARM存儲器組織2 6異常 2 2 1ARM體系結(jié)構(gòu) ARM內(nèi)核以其高性能 低功耗等特點(diǎn) 被公認(rèn)為業(yè)界領(lǐng)先的32位嵌入式RISC微處理器核 得到了越來越多半導(dǎo)體生產(chǎn)廠商的青睞 以ARM核為嵌入式微處理器的核心 配以各廠家根據(jù)自己處理器的應(yīng)用領(lǐng)域定位不同而設(shè)計(jì)的獨(dú)有的片內(nèi)I O 形成了各種各樣可供不同應(yīng)用領(lǐng)域選擇使用的微處理器芯片 因此 了解ARM內(nèi)核是進(jìn)行嵌入式微處理器芯片選擇 操作系統(tǒng)移植 應(yīng)用軟件開發(fā)以及硬件系統(tǒng)設(shè)計(jì)與調(diào)試等工作的基礎(chǔ) 本章圍繞ARM7TDMI核 從應(yīng)用系統(tǒng)開發(fā)人員的角度 對ARM的內(nèi)核結(jié)構(gòu) 工作狀態(tài) 工作模式以及應(yīng)用程序可訪問的寄存器結(jié)構(gòu) 存儲器組織等進(jìn)行詳細(xì)介紹 為后續(xù)各章節(jié)的學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ) 3 2 1ARM體系結(jié)構(gòu) 2 1ARM核及基于ARM核的芯片結(jié)構(gòu)目前流行的ARM處理器IP核有十多個(gè) 獲得ARM公司授權(quán)的半導(dǎo)體制造廠商多大70多家 不可能也沒有必要對每個(gè)IP核 每種ARM芯片進(jìn)行一一介紹 考慮到ARM7TMDI是目前使用最廣泛的32位嵌入式RISC處理器IP核 且其指令系統(tǒng)與ARM9系列 ARM9E系列和ARM10E系列兼容 本書將重點(diǎn)介紹ARM7TMDI內(nèi)核結(jié)構(gòu) 本章介紹 以及飛利浦半導(dǎo)體公司 NXP恩智浦半導(dǎo)體 使用該IP核設(shè)計(jì)生產(chǎn)的LPC2200系列ARM芯片 第5章和第6章 讀者在實(shí)際工作中涉及到其它ARM微處理器IP核及芯片時(shí) 可參閱相關(guān)書籍或技術(shù)手冊 ARM7TDMI是ARM公司最早為業(yè)界普遍認(rèn)可且得到了廣泛應(yīng)用的核 特別是在手機(jī)和PDA應(yīng)用中 隨著ARM技術(shù)的發(fā)展 它已是目前最低端的ARM核 4 2 1ARM體系結(jié)構(gòu) 2 1 1ARM內(nèi)核不同版本的ARM核其內(nèi)部結(jié)構(gòu)是有所區(qū)別的 但是其數(shù)據(jù)流模型基本上是一致的 從應(yīng)用系統(tǒng)開發(fā)者的角度來看 可以拋開處理器內(nèi)部具體硬件結(jié)構(gòu)的細(xì)節(jié) 而把ARM內(nèi)核看作是由總線連接的各個(gè)功能單元組成的集合 ARM內(nèi)核功能的實(shí)現(xiàn)最終體現(xiàn)為各種數(shù)據(jù)在不同部件之間的流動 圖2 1為ARM7TDMI內(nèi)核的內(nèi)部結(jié)構(gòu)框圖 5 2 1ARM體系結(jié)構(gòu) 6 2 1ARM體系結(jié)構(gòu) 可以看出 ARM7TDMI核內(nèi)部各組成部件之間通過5條相互獨(dú)立的片內(nèi)總線連接起來 這5條總線分別是PC總線 地址自增總線 ALU總線 A總線和B總線 ARM7TDMI有37個(gè)32位寄存器 有6個(gè)狀態(tài)寄存器 7 2 1ARM體系結(jié)構(gòu) 2 1 2基于ARM核的芯片結(jié)構(gòu)半導(dǎo)體廠商從ARM公司購買其設(shè)計(jì)的ARM微處理器核 根據(jù)各自不同的應(yīng)用領(lǐng)域 加入適當(dāng)?shù)耐鈬娐?片內(nèi)I O 從而形成自己的ARM微處理器芯片 圖2 2為一個(gè)典型的使用ARM核的微處理器芯片內(nèi)部結(jié)構(gòu)圖 可以看出 ARM芯片的核心為ARM處理器核 通過片內(nèi)總線將ARM微處理器 控制器 DMA控制器 總線仲裁控制器等 和各種片內(nèi)I O 存儲器 鍵盤 URAT等 連接到一起 ARM芯片內(nèi)部廣泛采用AMBA AdvancedMicroprocessorBusArchitecture 總線結(jié)構(gòu) 最初的AMBA總線包含ARM系統(tǒng)總線ASB AdvancedSystemBus 和ARM外設(shè)總線APB AdvancedPeripheralBus 之后又提出一種稱為ARM高性能總線AHB AdvancedHigh performanceBus AHB直接連接到微處理器核 它是為高速傳輸而優(yōu)化設(shè)計(jì)的 支持流水線技術(shù) 突發(fā)傳輸 多總線控制器等高性能總線特性 用于連接性能高速的片內(nèi)I O APB假設(shè)外設(shè)工作在主從方式 且不支持流水線操作 以簡化外設(shè)和總線控制器中所需的邏輯 APB用于連接低速片內(nèi)I O 8 2 1ARM體系結(jié)構(gòu) 9 2 2ARM工作狀態(tài)和工作模式 2 2ARM工作狀態(tài)和工作模式2 2 1ARM處理器工作狀態(tài)從編程的角度看 ARM處理器有兩種工作狀態(tài) 32位的ARM狀態(tài)和16位的Thumb狀態(tài) 并且ARM可以在兩種狀態(tài)之間進(jìn)行幾乎零開銷的切換 處理器工作狀態(tài)的轉(zhuǎn)變不影響處理器的工作模式 ARM處理器有7中工作模式 詳見下節(jié) 和相應(yīng)寄存器中的內(nèi)容 10 2 2ARM工作狀態(tài)和工作模式 ARM狀態(tài) 處理器執(zhí)行32位的字對齊的ARM指令 ARM處理器在最開始執(zhí)行代碼時(shí)處于ARM狀態(tài) 當(dāng)操作數(shù)寄存器的狀態(tài)位 位0 為1時(shí) 執(zhí)行BX指令可使微處理器從ARM狀態(tài)切換到Thumb狀態(tài) 當(dāng)處理器處于Thumb狀態(tài)時(shí)發(fā)生異常 如IRQ FIQ Undef Abort SWI等 則異常處理返回時(shí) 自動切換到ARM狀態(tài) Thumb狀態(tài) 處理器執(zhí)行16位的半字對齊的Thumb指令 當(dāng)操作數(shù)寄存器的狀態(tài)位 位0 為0時(shí) 執(zhí)行BX指令時(shí)可以使微處理器從Thumb狀態(tài)切換到ARM狀態(tài) 在處理器進(jìn)行異常處理時(shí) 把PC指針放入異常模式連接寄存器中 并從異常向量地址開始執(zhí)行程序 也可以使處理器切換到ARM狀態(tài) 11 2 2ARM工作狀態(tài)和工作模式 使用BX指令將ARM7TDMI內(nèi)核的操作狀態(tài)在ARM狀態(tài)和Thumb狀態(tài)之間進(jìn)行切換 詳見第3章 程序如下所示 從Arm狀態(tài)切換到Thumb狀態(tài)LDRR0 Lable 1 Lable為跳轉(zhuǎn)的目標(biāo)地址 其最低兩位為00BXR0 地址 Lable 1 最低位為1 表示切換到Thumb狀態(tài) 從Thumb狀態(tài)切換到ARM狀態(tài)LDRR0 Lable 地址 Lable 最低位為0 表示切換到ARM狀態(tài)BXR0 12 2 2ARM工作狀態(tài)和工作模式 2 2 2ARM處理器工作模式ARM處理器有7種基本工作模式 除用戶模式以外 其余的6種模式稱為非用戶模式或特權(quán)模式 除去用戶模式和系統(tǒng)模式以外的5種又稱為異常模式 常用于處理中斷或異常 以及需要訪問受保護(hù)的系統(tǒng)資源等情況 13 2 2ARM工作狀態(tài)和工作模式 1 用戶模式 User 非特權(quán)模式 正常程序執(zhí)行的模式 大部分任務(wù)執(zhí)行在這種模式下 2 系統(tǒng)模式 System 使用和User模式相同寄存器集的特權(quán)模式 但是運(yùn)行的是特權(quán)級的操作系統(tǒng)任務(wù) 3 快速中斷模式 FIQ 當(dāng)一個(gè)高優(yōu)先級中斷產(chǎn)生時(shí)將會進(jìn)入這種模式 用于高速數(shù)據(jù)傳輸和通道處理 4 普通中斷模式 IRQ 當(dāng)一個(gè)低優(yōu)先級中斷產(chǎn)生時(shí)將會進(jìn)入這種模式 用于通常的中斷處理 5 管理模式 Supervisor 當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會進(jìn)入這種模式 是一種可以供操作系統(tǒng)使用的保護(hù)模式 6 中止模式 Abort 當(dāng)數(shù)據(jù)或指令存取異常時(shí)將會進(jìn)入這種模式 用于虛擬存儲及存儲保護(hù) 7 未定義模式 Undefined 當(dāng)執(zhí)行未定義指令時(shí)會進(jìn)入這種模式 可用于支持硬件協(xié)處理器的軟件仿真 14 2 2ARM工作狀態(tài)和工作模式 15 絕大多數(shù)應(yīng)用程序都在用戶模式下運(yùn)行 當(dāng)處理器運(yùn)行在用戶模式下時(shí) 某些被保護(hù)的系統(tǒng)資源是不能被訪問的 除了產(chǎn)生異常實(shí)現(xiàn)模式切換外 不能隨意進(jìn)行模式切換 這將有效的保護(hù)系統(tǒng)資源 除用戶模式外 其他模式均為私有模式 這些模式對系統(tǒng)有完全的訪問控制權(quán) 另外 這6中模式既可以通過軟件改變 也可以通過外部中斷和異常處理來實(shí)現(xiàn)模式的改變 2 3ARM狀態(tài)下寄存器組織 ARM處理器在ARM狀態(tài)下共有37個(gè)32位寄存器 其中31個(gè)為通用寄存器 6個(gè)為狀態(tài)寄存器 如圖2 3所示 處理器在某種模式時(shí)有其對應(yīng)的一組寄存器 其中用戶模式和系統(tǒng)模式使用的是完全相同的一組寄存器 對于其他5種異常模式 為了使進(jìn)入異常模式后不會影響系統(tǒng)的正常工作或?yàn)榱颂岣唔憫?yīng)速度 專門設(shè)計(jì)了對應(yīng)模式獨(dú)用的一些寄存器 圖中以三角形標(biāo)出 稱其為分組寄存器 16 2 3ARM狀態(tài)下寄存器組織 17 2 3ARM狀態(tài)下寄存器組織 2 3 1通用寄存器通用寄存器R0 R15通常用來存放數(shù)據(jù) 但有些寄存器 如R13 R14 R15 也被賦予其他特殊用途 R13常被用作堆棧指針寄存器SP R14被用作子程序連接寄存器LR R15用作程序計(jì)數(shù)器PC 詳見下述 1 共用寄存器 R0 R7 共用寄存器R0 R7是被所有運(yùn)行模式共用的 指向的是同一個(gè)物理寄存器 它們用來存放數(shù)據(jù) 未被系統(tǒng)用做特殊的用途 因此 在中斷或異常處理進(jìn)行運(yùn)行模式轉(zhuǎn)換時(shí) 由于不同的處理器運(yùn)行模式均使用相同的物理寄存器 可能會造成寄存器中數(shù)據(jù)的破壞 這一點(diǎn)在進(jìn)行程序設(shè)計(jì)時(shí)要引起注意 18 2 3ARM狀態(tài)下寄存器組織 2 分組寄存器 R8 R14 與共用寄存器不同 分組寄存器R8 R14在不同的模式下可能訪問的是不同的物理寄存器 分一下三種情況討論 R8 R12 快速中斷模式 FIQ 有對應(yīng)的專門寄存器 R8 fiq R12 fiq 以減少中斷保護(hù)所需要的時(shí)間開銷 實(shí)現(xiàn)中斷的快速響應(yīng) 其他6中模式使用相同的物理寄存器R8 R12 R13 在ARM指令中常用作堆棧指針SP 但這只是一種習(xí)慣用法 用戶也可以使用其它寄存器作為堆棧指針 而在Thumb指令中 某些指令強(qiáng)制性地要求使用R13作為堆棧指針 由于每種運(yùn)行模式都有各自獨(dú)立的物理寄存器R13 所以在用戶應(yīng)用程序的初始化部分 一般都要初始化每種模式下的R13 使其指向該運(yùn)行模式的??臻g 這樣 當(dāng)程序的運(yùn)行進(jìn)入異常模式時(shí) 可以將需要保護(hù)的寄存器放入R13所指向的堆棧 而當(dāng)程序從異常模式返回時(shí) 則從對應(yīng)的堆棧中恢復(fù)相關(guān)寄存器的值 采用這種方式可以保證異常發(fā)生后程序的正常執(zhí)行 R14 R14也被稱為子程序連接寄存器 SubroutineLinkRegister 或連接寄存器LR 當(dāng)用BL或BLX指令調(diào)用子程序時(shí) 系統(tǒng)自動將PC R15 的當(dāng)前值復(fù)制給R14 執(zhí)行完子程序后 為了返回到調(diào)用處 在子程序的最后安排一條指令 將保存在R14中的斷點(diǎn)地址送回給PC R15 這樣程序就可以從子程序返回到調(diào)用處 在其他情況下 R14用作通用寄存器 與之類似 當(dāng)發(fā)生中斷或異常時(shí) 對應(yīng)的分組寄存器R14 svc R14 irq R14 fiq R14 abt和R14 und用來保存R15 PC 的值 19 2 3ARM狀態(tài)下寄存器組織 3 程序計(jì)數(shù)器 R15 寄存器R15用作程序計(jì)數(shù)器 PC 用來存放下一條要讀取指令的地址 在ARM狀態(tài)下 位 1 0 為0 位 31 2 用于保存PC 在Thumb狀態(tài)下 位 0 為0 位 31 1 用于保存PC R15雖然也可用做通用數(shù)據(jù)寄存器 但一般不這樣使用 因?yàn)閷15的使用有一些特殊的限制 當(dāng)違反了這些限制時(shí) 程序的執(zhí)行結(jié)果是未知的 由于ARM體系結(jié)構(gòu)采用了多級流水線技術(shù) 所以對于ARM7TDMI而言 由于有取指 譯碼和執(zhí)行三級流水結(jié)構(gòu) 同時(shí)進(jìn)行執(zhí)行 譯碼和取指三個(gè)操作 因此 一下條要讀取指令所在存儲單元的地址為當(dāng)前正在執(zhí)行指令所在單元的地址加8 20 2 3ARM狀態(tài)下寄存器組織 注 因?yàn)锳RM狀態(tài)處理器執(zhí)行的是32位字對齊的ARM指令 一條指令需要4個(gè)字節(jié)對齊存放 因此指令地址的低兩位為00 Thumb狀態(tài)處理器執(zhí)行的是16位半字對齊的Thumb指令 需要個(gè)字節(jié)對齊存放 地址的最低位為0 21 2 3ARM狀態(tài)下寄存器組織 2 3 2程序狀態(tài)寄存器ARM有兩類程序狀態(tài)寄存器 當(dāng)前程序狀態(tài)寄存器CPSR CurrentProgramStatusRegister 和程序狀態(tài)保存寄存器SPSR SavedProgramStatusRegister 如圖2 3所示 CPSR是ARM的7種工作模式共用的一個(gè)物理寄存器 可以被任何一種工作模式訪問 用來存放或設(shè)置相關(guān)的狀態(tài)標(biāo)志和控制標(biāo)志 CPSR各位的功能見圖2 4 22 2 3ARM狀態(tài)下寄存器組織 23 2 3ARM狀態(tài)下寄存器組織 如圖2 3所示 ARM的5種異常模式各自都有一個(gè)程序狀態(tài)保存寄存器SPSR 當(dāng)異常發(fā)生時(shí) 每種異常模式專用的SPSR用于保存CPSR的當(dāng)前值 從而在異常返回時(shí)恢復(fù)CPSR原有的狀態(tài) 用戶模式和系統(tǒng)模式不屬于異常模式 所以不需要SPSR來保存CPSR 如圖2 4所示 程序狀態(tài)寄存器是一個(gè)32位寄存器 其中0 7位控制位 8 27位保留未用 28 31位為狀態(tài)標(biāo)志位 24 2 3ARM狀態(tài)下寄存器組織 1 狀態(tài)標(biāo)志位N Z C V是四個(gè)狀態(tài)標(biāo)志位 CPSR各狀態(tài)位的置位或清零操作 通常是處理器根據(jù)當(dāng)前執(zhí)行運(yùn)算指令的結(jié)果 由硬件電路自動完成的 在應(yīng)用程序設(shè)計(jì)中常常需要根據(jù)狀態(tài)位的情況實(shí)現(xiàn)程序的各種判斷和處理 各標(biāo)志位的含義見表2 1 25 2 3ARM狀態(tài)下寄存器組織 在ARM處理器體系機(jī)構(gòu)中 所有的ARM指令都可以條件執(zhí)行 Thumb指令集中的B分支指令也可以條件執(zhí)行 這些狀態(tài)標(biāo)志位的各種組合構(gòu)成了指令執(zhí)行的條件 也就是說 指令條件執(zhí)行的依據(jù)就是這些狀態(tài)標(biāo)志位 因此 有些資料中把這幾個(gè)標(biāo)志位也稱為條件碼 指令的條件執(zhí)行是指當(dāng)指令滿足了指令約定的執(zhí)行條件時(shí) 這條指令才被執(zhí)行 否則 這條指令僅僅是空流過處理器 不做任何操作 如指令 ADDNER0 R0 R1 就是一條條件執(zhí)行指令 其條件為 NE NotEqual 也就是上一條指令執(zhí)行后CPSR中標(biāo)志位Z被設(shè)置為0 兩操作數(shù)不相等 時(shí)條件成立 執(zhí)行R0 R1并將結(jié)果送R0 否則 不執(zhí)行相加操作 26 2 3ARM狀態(tài)下寄存器組織 2 控制位CPSR的低8位 包括I F T和M 4 0 稱為控制位 當(dāng)發(fā)生異常時(shí)這些位可以被改變 如果處理器運(yùn)行在特權(quán)模式 這些位也可以由程序修改 1 中斷禁止位I和F中斷禁止位包括I和F 用來禁止或允許IRQ和FIQ兩類中斷 當(dāng)I 1時(shí) 表示禁止IRQ中斷 I 0時(shí)表示允許IRQ中斷 當(dāng)F 1時(shí) 表示禁止FIQ中斷 F 0時(shí) 表示允許FIQ中斷 27 2 3ARM狀態(tài)下寄存器組織 2 工作狀態(tài)標(biāo)志位TT標(biāo)志位用來標(biāo)識 設(shè)置處理器的工作狀態(tài) 對于ARM體系結(jié)構(gòu)v4及以上的版本的T系列處理器 當(dāng)該位為1時(shí) 程序運(yùn)行于Thumb狀態(tài) 當(dāng)該位為0時(shí) 表示運(yùn)行于ARM狀態(tài) ARM指令集和Thumb指令集均有切換處理器狀態(tài)的指令 這些指令通過修改T位的值來實(shí)現(xiàn)在兩種工作狀態(tài)之間切換 3 工作模式控制位工作模式控制位 M 4 0 用來標(biāo)識或設(shè)置處理器的工作模式 M4 M3 M2 M1 M0不同組合來實(shí)現(xiàn)處理器工作模式的設(shè)置 見表2 2所示 可以看出 CPSR中用5位來設(shè)置處理器的工作模式 理論上可設(shè)置的工作模式有 25 32種 但ARM的實(shí)際工作模式只有7種 因此 有部分編碼組合是無效的 使用這些無效組合的編碼會導(dǎo)致處理器進(jìn)入一個(gè)不可恢復(fù)的狀態(tài) 28 2 3ARM狀態(tài)下寄存器組織 29 2 3ARM狀態(tài)下寄存器組織 30 3 保留位CPSR中的位8到位27為保留位 保留位將用于ARM版本的擴(kuò)展 CPSR和SPSR可通過專門指令進(jìn)行訪問 這些指令將在第3章介紹 2 4Thumb狀態(tài)下寄存器組織 Thumb狀態(tài)下的寄存器集是ARM狀態(tài)下寄存器集的一個(gè)子集 如圖2 5所示 Thumb狀態(tài)共有27個(gè)32位寄存器 其中21個(gè)為通用寄存器 6個(gè)為狀態(tài)寄存器 圖2 6給出Thumb狀態(tài)下的寄存器組織與ARM狀態(tài)下的寄存器組織的關(guān)系 31 2 4Thumb狀態(tài)下寄存器組織 32 2 4Thumb狀態(tài)下寄存器組織 33 2 4Thumb狀態(tài)下寄存器組織 34 Thumb狀態(tài)下的寄存器組織與ARM狀態(tài)寄存器組織有如下的關(guān)系 Thumb狀態(tài)R0 R7與ARM狀態(tài)R0 R7相同 Thumb狀態(tài)CPSR和SPSR與ARM狀態(tài)CPSR和SPSR相同 Thumb狀態(tài)SP映射到ARM狀態(tài)R13 Thumb狀態(tài)LR映射到ARM狀態(tài)R14 Thumb狀態(tài)PC映射到ARM狀態(tài)PC R15 以上對應(yīng)關(guān)系如圖2 6所示 2 5ARM存儲器組織 2 5 1編址方式與尋址空間在計(jì)算機(jī)系統(tǒng)中主要有兩類資源需要編址訪問 存儲單元和I O端口 這兩類資源在計(jì)算機(jī)系統(tǒng)中有兩種編址方式 1 統(tǒng)一編址方式 存儲單元和I O端口統(tǒng)一編址在同一個(gè)地址空間 該方式的特點(diǎn)是 將同一地址空間分別分配給存儲器單元和I O端口 可用訪問存儲單元的指令訪問I O端口 無專用的I O訪問指令 35 2 5ARM存儲器組織 2 獨(dú)立編址方式 存儲單元和I O端口分別編址在兩個(gè)地址空間 即存儲器地址空間和I O地址空間 該方式的特點(diǎn)是 按資源分類的地址空間清晰 使用不同的指令訪問存儲單元和I O端口 即有專用的I O訪問指令 芯片上有專用于I O訪問的引腳 ARM處理器有32條地址線 使用統(tǒng)一編址方式 將存儲器 I O端口等組織在一個(gè)線性遞增的字節(jié)地址空間中 ARM處理器尋址的地址空間為0 x00000000 0 xFFFFFFFF 共4GB ARM處理器支持字節(jié) 8bit 半字 16bit 和字 32bit 數(shù)據(jù)訪問 在進(jìn)行半字和字?jǐn)?shù)據(jù)訪問時(shí) 要求數(shù)據(jù)是半字 字對齊存儲 ARM處理器支持232個(gè)字節(jié) 4GB 地址空間 這些地址空間也可以組織成231個(gè)半字地址空間或230個(gè)字地址空間 36 2 5ARM存儲器組織 2 5 2數(shù)據(jù)類型ARM處理器的指令長度可以是32位 在ARM狀態(tài)下 也可以是16位 在Thumb狀態(tài)下 對操作數(shù)的數(shù)據(jù)類型而言 ARM處理器支持字節(jié) 8位 半字 16位 和字 32位 3種數(shù)據(jù)類型 其中 字需要4字節(jié)對齊 地址的低兩位為0 半字需要2字節(jié)對齊 地址的最低位為0 地址空間的規(guī)則 位于地址A的字包含的字節(jié)位于地址A A 1 A 2和A 3 位于地址A的半字包含的字節(jié)位于地址A和A 1 位于地址A 2的半字包含的字節(jié)位于地址A 2和A 3 位于地址A的字包含的半字位于地址A和A 2 37 2 5ARM存儲器組織 2 5 3存儲格式ARM體系結(jié)構(gòu)可以使用兩種方法來存儲字?jǐn)?shù)據(jù) 稱為大端格式和小端格式 小端格式在小端格式中 高位數(shù)字存放在高地址字節(jié)中 因此存儲器系統(tǒng)字節(jié)0連接到數(shù)據(jù)線7 0 低位對齊 大端格式在大端格式中 高位數(shù)字存放在低地址字節(jié)中 因此存儲器系統(tǒng)字節(jié)0連接到數(shù)據(jù)線31 24 高位對齊 32位字?jǐn)?shù)據(jù)0 x12345678分別以小端模式和大端模式存儲時(shí)的具體情況如圖2 7所示 38 2 5ARM存儲器組織 39 2 5ARM存儲器組織 40 如果數(shù)據(jù)都是按字存放 按字讀取的 則用戶不必關(guān)心存儲器格式是大端模式還是小端模式 處理器會按照一致的格式來訪問存儲器 只有在使用字節(jié)數(shù)據(jù)組裝字?jǐn)?shù)據(jù) 或字?jǐn)?shù)據(jù)拆成字節(jié)數(shù)據(jù) 時(shí) 才需要關(guān)心存儲器的大小端模式 來保證數(shù)據(jù)的正確性 ARM指令集不包含任何大小端存儲器格式相關(guān)的指令 一個(gè)支持大小端存儲器模式的ARM芯片 通常由硬件配置 芯片引腳的高低電平 來選擇對存儲器系統(tǒng)訪問用的是大端模式還是小端模式 飛利浦LPC2000系列ARM固定為小端模式 2 6異常 2 6異常2 6 1ARM異常類型在ARM系統(tǒng)中 異常是一些事件 這些事件能導(dǎo)致正常運(yùn)行的程序被暫時(shí)停止 而進(jìn)入到該事件對應(yīng)的處理器異常模式并對該事件進(jìn)行處理 這個(gè)過程叫做異常響應(yīng) ARM體系結(jié)構(gòu)支持復(fù)位 未定義指令 SWI 軟中斷 預(yù)取指終止 預(yù)取數(shù)終止 IRQ以及FIQ等7種異常 具體含義見表2 3 41 2 6異常 42 2 6異常 2 6 2ARM異常的處理1 異常向量表ARM處理器硬件約定 在處理器尋址空間0 x00000000開始安排了一個(gè)稱為異常向量表的特殊存儲空間 如表2 4所示 當(dāng)ARM處理器硬件約定的異常發(fā)生時(shí) 處理器按照異常的種類自動轉(zhuǎn)移到表2 4所列特定單元取指執(zhí)行 例如 發(fā)生復(fù)位異常時(shí) 處理器自動轉(zhuǎn)移到0 x00000000單元取指執(zhí)行 當(dāng)發(fā)生FIQ異常時(shí) 處理器自動轉(zhuǎn)移到0 x0000001C地址單元取指執(zhí)行 異常處理通常是一段程序 所以在異常向量表的各字單元中存放一條32位的跳轉(zhuǎn)指令 實(shí)現(xiàn)到各異常處理代碼的轉(zhuǎn)移 43 2 6異常 44 2 6異常 2 異常響應(yīng)當(dāng)異常發(fā)生時(shí) ARM硬件自動完成圖2 8所示的一系列操作 圖中SPSR x LR x是指處理器模式x下的SPSR和LR寄存器 首先 ARM硬件自動將當(dāng)前程序狀態(tài)寄存器CPSR和PC的內(nèi)容拷貝到異常發(fā)生后所進(jìn)入的處理器模式對應(yīng)的SPSR x寄存器和LR x寄存器 之后根據(jù)異常類型改寫CPSR中的控制位 以便設(shè)置IRQ和FIQ的中斷允許狀態(tài)和處理器工作模式 最后根據(jù)不同的異常重置PC 以便使處理器轉(zhuǎn)到異常向量表對應(yīng)的字單元執(zhí)行對應(yīng)的跳轉(zhuǎn)程序 轉(zhuǎn)去執(zhí)行相應(yīng)的異常處理程序 表2 5 異常響應(yīng) 一列給出各種異常發(fā)生時(shí)硬件進(jìn)行的響應(yīng)操作 45 2 6異常 46 2 6異常 3 異常返回當(dāng)異常處理程序結(jié)束時(shí) 異常處理程序返回發(fā)生異常所中斷程序的斷點(diǎn)處繼續(xù)執(zhí)行 在異常處理程序的最后 把進(jìn)入異常前有硬件壓入到該異常模式的程序狀態(tài)寄存器的值送給CPSR 把壓入該模式R14 LR 的值經(jīng)過適當(dāng)修正后送給PC 為什么要對LR中的值修正后才能送給PC呢 這是由于ARM流水線的存在 在進(jìn)入異常處理時(shí)被保存到LR中的值未必就是程序返回地址 各種異常模式返回地址見表2 5 47 2 6異常 2 6 3ARM異常的優(yōu)先級異常優(yōu)先級包含兩種的情況 第一種情況是多個(gè)異常同時(shí)發(fā)生時(shí)處理器如何響應(yīng) 第二種情況是處理器正在處理異常過程中又有新的異常發(fā)生時(shí)處理器如何響應(yīng) 在ARM異常響應(yīng)機(jī)制中 處理器硬件僅解決了當(dāng)多個(gè)異常同時(shí)發(fā)生時(shí)處理器如何響應(yīng)的問題 系統(tǒng)約定總是優(yōu)先級高的異常優(yōu)先獲得響應(yīng) 在ARM體系結(jié)構(gòu)中 硬件約定了各個(gè)異常的優(yōu)先級順序 詳見表2 6 異常嵌套及嵌套方案則由軟件完成 從表2 6可以看出 復(fù)位異常優(yōu)先級最高 任何時(shí)候復(fù)位異??偸鞘紫全@得響應(yīng) 軟中斷指令和未定義指令總是互斥的 因此使用同一個(gè)優(yōu)先級 且它們的優(yōu)先級最低 IRQ和FIQ兩種異??梢酝ㄟ^講CPSR中的I F位置1來禁止其發(fā)生 48 2 6異常 49 2 6異常 50 習(xí)題1 ARM7處理器是幾級流水線 在ARM7處理器中 PC指向的是下一條要執(zhí)行的指令 這句話對嗎 為什么 2 ARM處理器的工作狀態(tài)分為哪兩種 在CPSR中如何設(shè)置處理器的工作狀態(tài) 3 ARM處理器有哪些工作模式 不同工作模式下CPSR寄存器的模式位M 4 0 如何設(shè)置 4 試說明ARM處理器在ARM狀態(tài)下寄存器結(jié)構(gòu) 并分別說明R13 R14 R15寄存器的作用 5 試簡述程序計(jì)數(shù)器PC 連接寄存器LR的作用 6 如何禁止IRQ和FIQ中斷 7 什么是ARM處理器的異常 ARM處理器中有哪幾種異常 簡述異常與中斷的關(guān)系 8 請描述一下ARM處理器產(chǎn)生異常的條件分別是什么 各種異常會使處理器進(jìn)入哪種模式 進(jìn)入異常時(shí)處理器有何操作 各種異常的返回指令時(shí)什么 9 什么是大端存儲模式和小端存儲模式 畫出0 x87654321分別以小端模式和大端模式存儲在0 x00006000單元中的存儲格式- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
9.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 上海 高考 數(shù)學(xué) 答案 文科
鏈接地址:http://www.hcyjhs8.com/p-8319211.html