freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

arm9體系結(jié)構(gòu),arm9內(nèi)部資源,arm9內(nèi)部結(jié)構(gòu)教程(已修改)

2025-05-27 22:15 本頁面
 

【正文】 第 2章 ARM體系結(jié)構(gòu) 硅谷芯微 技術(shù)貢獻 網(wǎng)址: 本章中,將著眼于 ARM9內(nèi)核 、 處理器狀態(tài)與模式 、 內(nèi)部寄存器 、 程序狀態(tài)寄存器 、 異常 、中斷及其向量表和存儲系統(tǒng)的學(xué)習(xí),這是成為一個應(yīng)用工程師必備的基礎(chǔ)。 本章中程序范例除非特別聲明,否則處理器均處于 ARM狀態(tài),執(zhí)行字方式的 ARM指令。 第 2章 目錄 ?1. ARM9TDMI ?2. ARM的模塊 、 內(nèi)核和功能框圖 ?3. ARM處理器狀態(tài) ?4. ARM處理器模式 ? ? ?7. ARM體系的異常 、 中斷及向量表 ?8. ARM體系的存儲系統(tǒng) ?9. 課后練習(xí) ARM9TDMI ARM9TDMI是基于 ARM體系結(jié)構(gòu) v4版本的高端ARM核 (注意:核并非芯片, ARM核與其他部件(如RAM、 ROM、片內(nèi)外設(shè))組合在一起才構(gòu)成現(xiàn)實的芯片)。 ARM9TDMI是從 ARM7核發(fā)展而來的。ARM9TDMI后綴的涵義如下: ■ T:支持高密度 Thumb指令集擴展; ■ D:支持片上調(diào)試; ■ M:支持 64位乘法指令; ■ I:帶 Embedded ICE硬件仿真功能模塊。 ARM9TDMIS是 ARM9TDMI的可綜合( synthesizable)版本(軟核), 對應(yīng)用工程師來說,除非芯片生產(chǎn)廠商對 ARM9TDMIS進行了裁剪,否則在邏輯上 ARM9TDMIS與 ARM9IDMI沒有太大區(qū)別,其編程模型與 ARM7TDMI一致。 ? 存儲器的字與半字( 1) ARM處理器使用了馮 諾依曼 ( von Neumann)結(jié)構(gòu) , 提供單一的主存接口 。 比如 ARM7處理器就是標準的馮 諾依曼 ( von Neumann) 結(jié)構(gòu) 。 而 ARM9處理器的 CPU/MMU/CACHE系統(tǒng)是指令和數(shù)據(jù)分開的 ,不過通常也還是提供單一的主存接口 , 因此 ARM9處理器也可以看成是哈佛 ( Harvard) 結(jié)構(gòu) 。 從大的方面講 , 無論哪種 ARM處理器結(jié)構(gòu) , 都可以看成是是馮 諾依曼 (von Neumann) 結(jié)構(gòu) , 指令和數(shù)據(jù)共用一條 32位總線, 因此只有裝載 、 存儲和交換指令可以對存儲器中的數(shù)據(jù)進行訪問 。 ARM處理器直接支持 8位字節(jié) 、 16位半字或者 32位字的數(shù)據(jù)類型 。 其中 , 以能被 4整除的地址開始連續(xù)的 4個字節(jié)構(gòu)成 1個字 , 字的數(shù)據(jù)類型為 4個連續(xù)的字節(jié) 。 從偶數(shù)地址開始連續(xù)的 2個字節(jié)構(gòu)成一個半字 , 半字的數(shù)據(jù)類型為 2個連續(xù)的字節(jié) 。 ARM指令的長度剛好是 1個字 , Thumb指令的長度剛好是一個半字 。 ? 存儲器的字與半字( 2) 如果一個數(shù)據(jù)是以字方式存儲的 , 那么它就是字對齊的 , 否則就是非字對齊的 。 如果一個數(shù)據(jù)是以半字方式存儲的 , 那么它就是半字對齊的 , 否則就是非半字對齊的 , 半字與字對齊的實際情況見表 。 表 半字與字對齊 方 式 半 字 對 齊 字 對 齊地 址特 征0 x 4 0 0 20 x 4 0 0 40 x 4 0 0 60 x 4 0 0 8.0 x 4 0 0 40 x 4 0 0 80 x 4 0 0 C0 x 4 0 1 0.b i t 0 = 0其 他 位 置 為 任 意 值b i t 1 = 0 , b i t 0 = 0其 他 位 置 為 任 意 值? 存儲器的字與半字( 3) 注意: ARM處理器直接支持對齊的半字或字數(shù)據(jù)的存取,也就是可以使用一條相應(yīng)的指令來實現(xiàn)對應(yīng)操作(詳見第三章)。如果訪問非對齊的半字或字數(shù)據(jù),將需要多條指令組合才能實現(xiàn)對應(yīng)的操作,這對程序的執(zhí)行效率影響較大。因此,在 C語言編程中,定義的多字節(jié)變量或結(jié)構(gòu)體,最好使其為對齊存放。 ? 5級流水線 ( 1) ARM處理器使用流水線來增加處理指令流的速度, 這樣可使幾個操作同時進行 , 并使處理和存儲器之間的操作更加流暢 、 連續(xù) , 能提供 行速度 。 相比 ARM7( 3級流水線 ) , ARM9增加了 2個功能部件分別訪問存儲器并寫回結(jié)果 , 且將讀寄存器的操作轉(zhuǎn)移到譯碼部件上 , 使流水線各部件在功能上更平衡。 5級流水線如圖 ( 其中 PC為程序計數(shù)器 ), 流水線使用 5個階段 , 因此指令分為 5個階段執(zhí)行 。 ■ 取指:從存儲器裝載一條指令; ■ 譯碼:識別將要被執(zhí)行的指令; ■ 執(zhí)行:處理指令 , 產(chǎn)生 ALU運算結(jié)果或產(chǎn)生存儲器地址 ( 對于存儲器訪問指令來講 ) ; ■ 訪存:訪問數(shù)據(jù)存儲器; ■ 回寫:將執(zhí)行結(jié)果寫回寄存器 。 ? 5級流水線 ( 2) 圖 ARM9的 5級指令流水線 取 指譯 碼執(zhí) 行訪 存回 寫從 存 儲 器 取 出 指 令對 指 令 使 用 的 寄 存 器 進 行 譯 碼 , 并 從從 寄 存 器 組 只 能 感 讀 出 寄 存 器產(chǎn) 生 A L U 運 算 結(jié) 果 或 產(chǎn) 生 存 儲 器 地 址( 對 于 存 儲 器 訪 問 指 令 來 講 )訪 問 存 儲 器將 執(zhí) 行 結(jié) 果 寫 回 到 寄 存 器A R M T h u m bP C P CP C 4 P C 2P C 8 P C 4P C 1 2 P C 6P C 1 6 P C 8? 5級流水線 ( 3) 在傳統(tǒng)的 80C51單片機中 , 處理器只有完成一條指令的讀取和執(zhí)行后 , 才會開始下一條指令的處理所以PC總是指向正在 “ 執(zhí)行 ” 的指令 。 而 ARM9處理器采用5級流水線 , 具有 5個工位 , 將指令的處理分為 5個階段, 分別是取指 、 譯碼 、 執(zhí)行 、 訪存和回寫 。 因此 ARM“正在執(zhí)行 ” 第 3條指令的同時對第 4條指令進行譯碼 , 將第 5條指令從存儲器中取出 , 對第 2條指令完成訪存操作, 對第 1條指令完成回寫操作 。 那么一條 ARM9流水線只有在取第 6條指令的時 , 第一條指令才算完成執(zhí)行 。也就是說 , 在流水線中同時存在 5條指令 , 它們分別處于不同的處理階段 。 下面用圖 5級流水線的處理機制 ,這樣更加形象和具體 。 該圖反映了處理器處于第三個周期時的 PC指向 。 在執(zhí)行 “ 指令 1”的同時對 “ 指令 2”進行譯碼 , 并將 “ 指令 3”從存儲器中取出 。 也就是說當 “ 指令 1” ? 5級流水線 ( 4) 完成執(zhí)行時 , 才開始對 “ 指令 4”的取指處理 。 由此可見, 與 PC有關(guān)的階段只有取指 、 譯碼和執(zhí)行 , 即執(zhí)行 PC8處的指令的同時 , 對 PC4處的指令進行譯碼操作 , 對PC處的指令進行取指操作 。 而訪存與回寫則與 PC無關(guān)。 圖 ARM9的 5級最佳流水線指令執(zhí)行順序 取 指 譯 碼 執(zhí) 行 回 寫取 指 譯 碼 執(zhí) 行 訪 存 回 寫取 指 譯 碼 執(zhí) 行 訪 存 回 寫取 指 譯 碼 執(zhí) 行 回 寫T 1 T 2 T 3 T 4時 鐘 周 期M O V R 0 , R 1L D R R 3 , [ R 4 ]S T R R 9 , [ R 1 3 ]M O V R 6 , R 7P C 8P C 4P CP C + 4指 令 1指 令 2指 令 3指 令 4當 前 周 期? 5級流水線 ( 5) 無論處理器處于何種狀態(tài) , 程序計數(shù)器 R15( 即 PC)總是指向 “ 正在取指 ” 的指令 , 而不是指向 “ 正在執(zhí)行” 的指令或正在 “ 譯碼 ” 的指令 。 一般來說 , 人們習(xí)慣性約定將 “ 正在執(zhí)行的指令作為參考點 ” , 稱之為當前第 1條指令 。 因此 , PC總是指向第 3條指令 , 或者說 PC總是指向當前正在執(zhí)行的指令地址再加 2條指令的地址。 當處理器處于 ARM狀態(tài)時 , 每條指令長為 4字節(jié) , 所以 PC的值為正在執(zhí)行的指令地址加 8字節(jié) , 即: 當處理器處于 Thumb狀態(tài)時 , 每條指令長為 2字節(jié) ,所以 PC的值為正在執(zhí)行的指令地址加 4字節(jié) , 即: P C 值 = 當 前 程 序 執(zhí) 行 位 置 + 8 字 節(jié)P C 值 = 當 前 程 序 執(zhí) 行 位 置 + 4 字 節(jié)? 5級流水線 ( 6) 下面通過示例程序來進一步了解實際讀取 PC時要注意的問題 , 如程序清單 : 程序清單 PC的讀取 假設(shè)地址 0x4000上的 ADD指令是處理器 “ 正在執(zhí)行 ” 的第 1條指令 , 該指令的功能是把 PC+4的值放到 PC寄存器里 ( 通常用于程序跳轉(zhuǎn) ) 。 由于 PC總是指向第三條指令 , 即 0x4008就是 “ 正在取指 ” 的指令的地址 ,從而可以得出地址: PC+4 = 0x4008+4 = 0x400C,于是將地址值 0x400C寫入 PC寄存器 , 千萬不要誤認為是寫入地址值 0x4004。 0 x 4 0 0 0 A D D P C , P C , 4 ; 正 在 被 執(zhí) 行 的 指 令 , 將 地 址 值 P C + 4 寫 到 P C0 x 4 0 0 4 . . . ; 正 在 被 譯 碼 的 指 令0 x 4 0 0 8 . . . ; 正 在 被 取 指 的 指 令 , P C = 0 x 4 0 0 80 x 4 0 0 C . . . ; P C + 4 = 0 x 4 0 0 C? 5級流水線 ( 7) 注意: 從上面的描述可以發(fā)現(xiàn) 只有流水線被指令填滿時才能發(fā)揮最大效能 , 即每時鐘周期完成一條指令的執(zhí)行( 僅指單周期指令 ) 。 如果程序發(fā)生跳轉(zhuǎn) , 流水線會被清空 , 這將需要幾個時鐘才能使流水線再次填滿 。 因此, 盡量少地使用跳轉(zhuǎn)指令可以提高程序執(zhí)行效率 , 解決方案就是盡量使用指令的 “ 條件執(zhí)行功能 ” , 詳見第三章 。 ARM的模塊、內(nèi)核和功能框圖 ARM的模塊框圖見圖 ,功能框圖見圖 ,內(nèi)核框圖見圖 。 ARM模塊包含了 CPU協(xié)處理器接口信號、讀與寫數(shù)據(jù)總線( WDATA和 RDATA)、 Embedded ICE硬件仿真功能模塊和片上調(diào)試系統(tǒng)等必備的功能。 數(shù)據(jù)總線上沒有雙向路徑,圖 。 如圖 , ARM微處理器與傳統(tǒng)的 8位單片機相比,在很多地方都有相似之處。 例如,同樣也包含了時鐘、存儲器接口、存儲器管理接口、總線控制、仲裁等基本功能模塊;所不同的是增加了功能更加強大的協(xié)處理器接口、調(diào)試接口、同步的 Embedded ICERT掃描調(diào)試訪問接口等。 圖 ARM模塊框圖 E m b e d d e d I C E R T 宏 單 元掃描鏈2C P U掃描鏈1數(shù)據(jù)總線E m b e d d e d I C E R T T A P 控 制 器協(xié) 處 理 器接 口 信 號D B G R N G ( 0 )D B G R N G ( 1 )D B G E X T ( 0 )D B G E X T ( 1 )S I Z E [ 1 : 0 ]P O R T [ 1 : 0 ]T R A N S [ 1 : 0 ]L O C KW R I T EA D D R [ 3 1 : 0 ]W D A T A [ 3 1 : 0 ]R D A T A [ 3 1 : 0 ]D B G T C K E ND B G T M SD B G n T R S TD B G T D ID B G T D O圖 ARM功能框圖 A R M 9 T D M I SC L KC L K E Nn I R Qn F I Qn R E S E TC F G B I G E N DD M O R EL O C KD B G I N S T R V A L I DD B G R QD B G B R E A KD B G A C KD B G n E X E CD B G
點擊復(fù)制文檔內(nèi)容
黨政相關(guān)相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號-1