【正文】
No. 1 2022 第三講 ARM微處理器編程模型和異常處理 ?第二講 ARM7TDMI嵌入式微處理器原理 ?ARM 微處理器的編程模型 ?ARM微處理器的異常處理 No. 2 2022 存儲程序處理器 a d d r e s si n s t r u c t i o n sp r o c e s s o rm e m o r yr e g i s t e r si n s t r u c t i o n sd a t a0 0 . . 0 016FF . . F F16a n d d a t aNo. 3 2022 指令的執(zhí)行周期 No. 4 2022 控制和數(shù)據(jù)通路 取指 譯碼:根據(jù)指令 產(chǎn)生控制信號 在適當?shù)臅r間向正確的部件發(fā)正確的控制信號 數(shù)據(jù)通路 : 在控制信號的控制下執(zhí)行運算或傳輸功能 No. 5 2022 數(shù)據(jù)通路: ?寄存器組 ?地址寄存器 ?讀數(shù)據(jù)寄存器 ?寫數(shù)據(jù)寄存器 ?乘法器 ?桶型移位器 ?32位 ALU ?地址累加器 ?A BUS ?B BUS ?ALU BUS ? INC BUS No. 6 2022 流水技術(shù)的本質(zhì) No. 7 2022 ARM7 TDMI 三級流水線 Cycle Operation ADD SUB ORR AND EOR ORR 1 2 3 4 5 6 7 8 9 F D E F D E F E F D E F D E D F D E W F Fetch D Decode E Execute M ARM Thumb ?PC PC 取指 指令從存儲器中取出 ?PC- 4 PC- 2 譯碼 對指令使用的寄存器進行譯碼 數(shù)據(jù)控制信號 將準備下一個周期。這一階段,指令擁有 譯碼邏輯,但不擁有數(shù)據(jù)通路。 ?PC- 8 PC- 4 執(zhí)行 指令擁有數(shù)據(jù)通路。 從寄存器組中讀出寄存器,執(zhí)行移位和 ALU操作,寄存器寫回到寄存器組 No. 8 2022 數(shù)據(jù)通路組成 Register Bank Multiplier Address Incrementer ALU B A Vectors A[31:0] Address Register Barrel Shifter PC ALU Read Data Register Write Data Register D[31:0] Instruction Decode ARM7的數(shù)據(jù)通路 ?單循環(huán)數(shù)據(jù)處理指令中: 寄存器 R1 — B總線 ,通過移位 寄存器 R2— A總線 在 ALU中合并,結(jié)果被寫回寄存器組。 ?地址累加 PC的值 — 地址寄存器, 再進入地址累加器 再寫回寄存器組中的程序寄存器 產(chǎn)生下一個地址 No. 9 2022 第三講 ARM微處理器編程模型和異常處理 ?第二講 ARM7TDMI嵌入式微處理器原理 ?ARM 微處理器的編程模型 ?ARM微處理器的異常處理 No. 10 2022 編程模式 ? 寄存器 ?處理器內(nèi)部的存儲部件 ,不同處理器具有很大的不同 ?所有處理器都具有的 :程序計數(shù)器 (程序指針 ),狀態(tài)寄存器 (標識處理器的狀態(tài) ),累加寄存器 (用于算術(shù)運算 ) ?處理器通常所說的 8位 /16位 /32位 /64位 ,是指其內(nèi)部寄存器的位寬 ? 堆棧 ?先進后出 ,中斷和任務(wù)調(diào)度中保存現(xiàn)場和局部變量 ?很多處理器都有一個或者多個堆棧指針 編程模式: 處理器指令集定義了操作,程序員通過操作改變處理器的系統(tǒng)狀態(tài),這些狀態(tài)是由可見寄存器和存儲器中的數(shù)據(jù)項構(gòu)成的。 No. 11 2022 存儲器系統(tǒng)-內(nèi)存映射 ? 內(nèi)存映射 : 如何劃分不同的內(nèi)存和 I/O設(shè)備之間的地址空間 (memory Map) ? Intel的 X86處理器 ,對 I/O設(shè)備設(shè)置了單獨的地址空間 ,用單獨指令來訪問 ,I/O端口映射方式 ported I/O。 ?大部分處理器 I/O設(shè)備和內(nèi)存存在相同的地址空間 ,用相同指令進行訪問 ,memorymapped I/O。 I/O地址 RAM ROM 端口 I/O I/O 空間 內(nèi)存空間 other I/O地址 RAM ROM 內(nèi)存 I/O 內(nèi)存空間 other No. 12 2022 ARM的存儲器格式 ?存儲器組織 ?字( Word):在 ARM體系結(jié)構(gòu)中,字的長度為 32位,而在 8位 /16位處理器體系結(jié)構(gòu)中,字的長度一般為 16位,請讀者在閱讀時注意區(qū)分。 ?半字( HalfWord):在 ARM體系結(jié)構(gòu)中,半字的長度為 16位,與 8位 /16位處理器體系結(jié)構(gòu)中字的長度一致。 ?字節(jié)( Byte):在 ARM體系結(jié)構(gòu)和 8位 /16位處理器體系結(jié)構(gòu)中,字節(jié)的長度均為 8位。 ? ARM體系結(jié)構(gòu)將存儲器看作是從 零地址開始的字節(jié)的線性組合 。 從零字節(jié)到三字節(jié)放置第一個存儲的字數(shù)據(jù), 從第四個字節(jié)到第七個字節(jié)放置第二個存儲的字數(shù)據(jù),依次排列。 作為 32位的微處理器, ARM體系結(jié)構(gòu)所支持的最大尋址空間為 4GB h a l f w o r d 4w o r d 1 60123456789101 1b y t e 0b y t e121314151617181920212223b y t e 1b y t e 2h a l f w o r d 1 4b y t e 3b y t e 6a d d r e ssbi t 3 1 bi t 0h a l f w o r d 1 2w o r d 8No. 13 2022 存儲器數(shù)據(jù)順序 ? BigEndian 和 LittleEndian ?處理器在存放多字節(jié)的數(shù)據(jù)時候 ,一般將低位字節(jié)存放在低地址單元 ,譬如X86 系列的處理器 。 這種方法成為小印第安序 (低端優(yōu)先 )。 ?在嵌入式系統(tǒng)中被廣泛應(yīng)用的 PowerPC處理器中 ,則把低位字節(jié)放在高地址單元 ,這種方法成為大印第安序 (高端優(yōu)先 )。 1 2 3 4 5 6 7