嵌入基礎系統及其應用 7_第1頁
嵌入基礎系統及其應用 7_第2頁
嵌入基礎系統及其應用 7_第3頁
嵌入基礎系統及其應用 7_第4頁
嵌入基礎系統及其應用 7_第5頁
已閱讀5頁,還剩63頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章典型嵌入式架構ARM第二章典型嵌入式架構ARM(1)ARM處理器架構ARM處理器概述

/ARMCortex-A9處理器架構與工作模式/ARMCortex-A9存儲器管理/ARMCortex-A9異常管理/ARM安全機制trustzone技術(擴展)(2)RISC-V指令集與架構(擴展)RISC-V概述/RISC-V指令集/RISC-V硬件平臺指令集架構基本概念ISA(InstructionSetArchitecture,指令集架構)是與實現無關的指令行為規范。它定義了IS(InstructionSet,thelistofinstructions;指令集,一系列指令)及其操作的寄存器和數據類型。它還定義了其他基本功能,如內存訪問和I/O。RISC-V就是一種ISA。有了指令集架構,便可以使用不同的處理器硬件實現方案來設計不同性能的處理器。處理器的具體硬件實現方案稱為微架構。微架構(Microarchitecture,縮寫為μarch或者uarch)是ISA的一種具體實現。它是一種硬件處理器設計。給定的一種ISA可以實現多種不同的微架構。雖然不同的微架構實現可能造成性能與成本的差異,但是軟件無須做任何修改便可以完全運行在任何一款遵循同一指令集架構實現的處理器上。RISC與CISCRISC(ReducedInstructionSetComputer,精簡指令集計算機),是一種基于簡單性原則的計算機體系結構。RISC處理器通過精簡指令集、減少每條指令的復雜性和執行時間來提高性能,使得指令執行更高效。RISC架構的處理器通常將復雜操作分解為多個簡單指令來完成,這種設計有助于提高流水線的效率,并且易于實現超標量執行等高級功能。RISC的典型代表:ARM,RISC-V系列處理器。CISC(ComplexInstructionSetComputer,復雜指令集計算機),與RISC相對。CISC架處理器具有復雜而豐富的指令集,指令可能長度不固定,執行時可能需要更多的時鐘周期,但允許一條指令完成較為復雜的操作,包括直接操作內存等功能。相對于RISC,CISC處理器在單個指令上可能會提供更多功能,但也可能犧牲了一些效率和性能方面的優勢。CISC典型代表:Intel的x86/64系列處理器。RISCCISCRISC與CISC的區別指令數量和復雜度CISC有大量的復雜指令,可以完成多個操作或尋址模式,但使用率不高,增加了CPU的復雜度;RISC有少量的簡單指令,只能完成單個操作或尋址模式,但使用率高,降低了CPU的復雜度。指令長度和格式CISC的指令長度不固定,指令格式種類多,譯碼較慢;RISC的指令長度固定,指令格式種類少,譯碼較快。內存訪問方式CISC可以訪問內存的指令不受限制,可以直接對內存進行操作;RISC只有Load/Store指令可以訪問內存,其余指令只能對寄存器進行操作。寄存器數量和使用CISC有較少的寄存器,有些寄存器有專門的用途;RISC有大量的寄存器,所有寄存器都是通用的。指令執行時間和效率CISC的指令執行時間相差很大,大多數指令需要多個時鐘周期才能完成;RISC的指令執行時間基本相同,大多數指令只需要一個時鐘周期就能完成。控制器設計和編譯器優化CISC的控制器大多數采用微程序控制,難以用優化編譯生成高效的目標代碼程序;RISC的控制器采用組合邏輯控制,注重軟件優化,由編譯器完成大部分優化工作RISCCISCCISC的優點和缺點指令豐富,功能強大,可以完成多個操作或尋址模式,處理特殊任務效率高。尋址方式靈活,可以訪問內存的指令不受限制,可以直接對內存進行操作。以微程序控制器為核心,性能強大,指令存儲器與數據存儲器共享同一個物理存儲空間。需要較少的內存空間,因為指令長度不固定,可以用較少的指令來完成復雜的任務。指令使用率不均衡,大多數指令需要多個時鐘周期才能完成,影響計算機運算速度。不利于采用先進結構提高性能,結構復雜不利于VLSI(超大規模集成電路)實現。難以用優化編譯生成高效的目標代碼程序,因為指令編碼復雜、長度可變。點優點缺精簡指令集系統RISC的典型特點指令格式的規格化和簡單化。采用Load/Store(裝載/存儲)指令結構。采用面向寄存器組的指令。單周期的執行無微代碼的硬連線控制。注重編譯的優化,力求有效地支撐高級語言程序。采用高效的流水線操作。ARM處理器概述按指令系統分類,嵌入式微處理器分為:復雜指令集系統CISC:代表IntelX86精簡指令集系統RISC:代表ARM(1)單周期的執行。(2)采用高效的流水線操作。(3)無微代碼的硬連線控制。(4)指令格式的規格化和簡單化。(5)采用面向寄存器組的指令。(6)采用Load/Store(裝載/存儲)指令結構。(7)注重編譯的優化,力求有效地支撐高級語言程序。ARM處理器概述:內核版本變化體系結構ARM內核版本v1ARM1v2ARM2v2aARM2aS、ARM3v3ARM6、ARM600、ARM610、ARM7、ARM700、ARM710v4StrongARM、ARM8、ARM810v4TARM7TDMI、ARM720T、ARM740T、ARM9TDMI、ARM920T、ARM940Tv5TEARM9E-S、ARM10TDMI、ARM1020Ev6ARM11、ARM1156T2-S、ARM1156T2F-S、ARM1176JZF-S、ARM11JZF-Sv7ARMCortex-M、ARMCortex-R、ARMCortex-Av8Cortex-A53/57、Cortex-A72等v9Cortex-X2/X3、Cortex-A510、Cortex-A710/A715等v4版本

該版本在v3版本的基礎上做了進一步的擴充,是目前被應用最廣的ARM體系結構,ARM7TDMI、ARM9、StrongARM等都采用該結構。它的主要特點有:(1)增加了對有符號、無符號半字及有符號字節的存/取指令;(2)增加T變種,引入Thumb狀態,處理器工作在該狀態下時,指令集為新增的16位Thumb指令集;(3)增加了系統模式,該模式下處理器使用用戶寄存器;(4)完善了軟件中斷(SWI)指令功能;(5)把一些未使用的指令空間捕獲為未定義指令。v5版本

.在v4版本的基礎上增加了一些新的指令。ARM9E、ARM10和Intel的XScale處理器都采用該版本結構。它的主要特點有:(1)改進了ARM指令集和Thumb指令集的混合使用效率;(2)增加了帶有鏈接和交換的轉移指令(BLX)、計數前導零指令(CLZ)、軟件斷點指令(BKPT);(3)v5TE版本中增加了DSP(數字信號處理)指令集,包括全部算法和16位指令集;支持新的Java,提供字節代碼執行的硬件和優化軟件加速性能。v6版本

該版本2001年發布,并應用在2002年發布的ARM11處理器中。該版本降低耗電量的同時提高了圖像處理能力,適合無線和消費類電子產品;高數據吞吐量和高性能的結合。它的主要特點有:(1)支持多微處理器內核;(2)Thumb代碼壓縮技術;(3)引入Jazelle技術,提高了Java性能,降低了Java應用程序對內存的空間占用;(4)通過SIMD(單指令多數據流)技術,提高了音/視頻處理能力。v7版本

v7版本架構是在v6版本的基礎上誕生的,對于早期的ARM處理器軟件提供了較好的兼容性。它的主要特點有:(1)采用了在Thumb代碼壓縮技術上發展的Thumb-2技術,比純32位代碼減少了31%的內存占用,減小了系統開銷,能夠提供比基于Thumb技術的解決方案高出38%的性能;(2)首次采用NEON信號處理擴展集,它是一個結合64位和128位的SIMD指令集,對H.264和MP3等媒體解碼提供加速,將DSP和媒體處理能力提高了近4倍,并支持改良的浮點運算;(3)支持改良的運行環境,迎合不斷增加的JIT(JustInTime)和DAC(DynamicAdaptiveCompilation)技術的使用ARM處理器概述:ARMCortex處理器分類Cortex-ACortex-RCortex-M設計特點高時鐘頻率,長流水線,高性能,對媒體處理支持(NEON指令集擴展)高時鐘頻率,較長流水線,高確定性(中斷延遲低)通常較短的流水線,超低功耗系統特征內存管理單元(MMU),cachememory,ARMTrustZone安全擴展內存保護單元(MPU),cachememory,緊耦合內存(TCM)內存保護單元(MPU),嵌套向量中斷控制器

(NVIC),喚醒中斷控制器(WIC),最新ARMTrustZone安全擴展目標市場移動計算,智能手機,高效能服務器,高端微處理器工業微控制器,汽車電子,硬盤控制器,基帶微控制器,深度嵌入系統(例如傳感器,MEMS,混合信號IC,IoT)Cortex-M3實現$1

ARM芯片ARMCortexArchitectureThumb-2ISA3StagePipeline1.22DMIPS/MHz–30%overARM7TDMI33Kgates–30%smallerthanARM7TDMILuminaryMicro的Stellaris系列MCU產品售價僅1美元ARMCortex-M3微控制器內核,專門針對MCU應用領域而設計,突出低成本、低功耗和高效率。v8版本

2011年11月,ARM公司發布了新一代處理器架構ARMv8的部分技術細節,這是ARM公司的首款支持64位指令集的處理器架構,將被首先用于對擴展虛擬地址和64位數據處理技術有更高要求的產品領域,如企業應用、高檔消費電子產品。目前的ARMv7架構的主要特性都將在ARMv8架構中得以保留或進一步拓展,如TrustZone技術、虛擬化技術及NEONadvancedSIMD技術等。ARMv8架構將64位架構支持引入ARM架構中,其中包括:(1)64位通用寄存器、SP(堆棧指針)和PC(程序計數器);(2)64位數據處理和擴展的虛擬尋址;(3)兩種主要執行狀態:AArch64(64位執行狀態)和AArch32(32位執行狀態);v9版本

該版本架構是ARM公司于2021年3月發布的最新指令集體系結構(ISA),作為ARMv8-A的繼任者,旨在提升性能、能效和安全性,特別針對AI、5G、云計算和邊緣計算等新興需求。該公司表示,本次v9架構旨在為移動端設備、計算機和服務器提供更強的算法支持。ARMv9繼續使用AArch64作為基準指令集,但在此基礎上添加了一些新的功能:ARMv8架構將64位架構支持引入ARM架構中,其中包括:(1)可伸縮矢量擴展SVE2(ScalableVectorExtension2),支持可變矢量長度(128至2048位),無需重新編譯即可適配不同硬件,提供了更強大的矢量處理能力;(2)可伸縮矩陣擴展SME(ScalableMatrixExtension)專為矩陣運算優化,支持更高效的深度學習工作負載;(3)分支記錄擴展BRBE(BranchRecordBufferExtensions),支持可配置的BRBE緩沖區深度(8、16、32或64個記錄),增強分支預測記錄,優化分支密集型應用的性能,降低分支錯誤率;v9版本

(4)事務內存擴展TME(TransactionalMemoryExtensions),支持事務內存操作,簡化多線程編程,減少鎖競爭,提升并發性能(5)ARM機密計算體系結構CAA(ConfidentialComputeArchitecture),通過動態創建“realms”(安全容器化執行環境)來重新設計安全應用程序的工作方式,極大地減少了給定應用程序的信任鏈,并使OS對安全性問題變得越來越透明;(6)內存標記擴展MTE(MemoryTaggingExtension),增強內存安全,標記內存地址以檢測非法訪問,幫助解決緩沖區溢出和無用后使用等持久的安全問題;(7)內嵌跟蹤擴展ETE(EmbeddedTraceExtension)、跟蹤緩沖區擴展TRBE(TraceBufferExtension)和統計分析擴展SPE(StatisticalProfilingExtensions)為開發者提供了了解軟件性能所需的信息,能夠更好的利用硬件平臺。ARMCortex-A9處理器架構Cortex-A9處理器采用了先進微架構設計,提供了傳統的Cortex-A9單核處理器和可擴展的Cortex-A9MPCoreTM多核處理器兩種架構選項(最多支持4核)。支持32位ARM指令、16位/32位Thumb指令,以及8位的Java字節碼(Jazelle狀態)。Cortex-A9處理器采用的高效超標量流水線技術使得處理器性能大幅提升,超過2.0DMIPS/MHz,實現了前所未有的峰值性能,同時維持了較低的功耗,延長了電池壽命,降低了封裝和操作成本。流水線技術理想的3級流水線(ARM7TDMI:無訪存操作)LDR流水線從存儲器中讀取指令解碼指令中用到的寄存器寄存器讀(從寄存器Bank)移位及ALU操作寄存器寫(到寄存器Bank)思考題設指令由取指、分析、執行3個子部件完成,每個子部件的工作周期均為Dt,采用常規標量單流水線處理機。若連續執行10條指令,則共需時間?Dt。(3)A.8 B.10 C.12 D.142.1.4

ARM開發工具簡介ARM開發工具就是ARM公司為龐大的各領域工程師和開發人員裝備的完整的開發工具鏈,幫助迅速搭建開發平臺,降低開發的成本和難度,縮短開發周期,讓工程師們充分針對ARM架構處理器進行開發。根據開發目標平臺的不同,ARM提供不同的工具解決方案。最常見的是MDK-ARM、RVDS,ARMDS5。他們分別針對低端和高端ARM處理器應用。1.MDK-ARMRealViewMicrocontrollerDevelopmentKit(MDK)支持基于包括ARM7,ARM9,Cortex-M3微控制處理器等在內的眾多處理器,例如Atmel,Freescale,Luminary,NXP,OKI,Samsung,Sharp,ST,TI等廠家的產品。MDK提供工業標準的編譯工具和強大的調試支持。MDK主要是為終端客戶提供價格低廉,功能強大的開發工具。集成了RealView編譯工具,KeiluVision開發環境,支持基于ARM7,ARM9,Cortex-M1,Cortex-M3,Cortex-R4等ARM產品的仿真,提供非常高效的RTOSKernel,此外,提供的Real-Time庫還有TCP/IP網絡套件,Flash文件系統,USB器件接口,CAN總線接口等,方便終端用戶進行應用開發。2.RVDSRVDS(RealViewDevelopmentSuite)是ARM公司推出的專為SOC,FPGA以及ASIC用戶開發復雜嵌入式應用程序或者和操作系統平臺組件接口而設計的開發工具,被業界稱為最好的ARM開發工具。RVDS支持器件設計,支持多核調試,支持基于所有ARM和Cortex系列CPU的程序開發。RVDS還可以和第三方軟件進行很好的連接。RVDS是ARM公司繼SDT與ADS1.2之后主推的新一代開發工具,目前最高版本是4.1。RVDS對代碼密度的提升、代碼執行速度的提高,都可以由ARM開發工具自動實現,而不需要軟件開發人員花費過多的時間手動優化高級語言代碼。這是RVDS的優勢所在。RVDS包含有四個模塊:(1)IDE:RVDS中集成了EclipseIDE,用于代碼的編輯和管理。支持語句高亮和多顏色顯示,以工程的方式管理代碼,支持第三方Eclipse功能插件。(2)RVCT:RVCT是業界最優秀的編譯器,支持全系列的ARM和XSCALE架構,支持匯編語言、C語言和C++語言。RVDS的編譯器根據最新的ARM架構進行特別的優化,針對每個ARM架構都提供最好的代碼執行性能,最優的代碼密度。可以根據需要選擇調試信息級別,以及不同的代碼優化方向和優化級別。(3)RVD:是RVDS中的調試軟件,功能強大,支持Flash燒寫和多核調試,支持多種調試手段,快速錯誤定位。(4)RVISS:是指令集仿真器,支持外部設備虛擬,可以使軟件開發和硬件開發同步進行,同時可以分析代碼性能,加快軟件開發速度。3.ARMDS5ARMDS5,也叫ARMDS-5,是一款支持開發所有ARM內核芯片的集成開發環境,也是一套針對ARM支持的linux和android平臺的全面的端到端軟件開發工具套件。ARMDS5提供具有跟蹤、系統范圍性能分析器、實時系統模擬器和編譯器的應用程序和內核空間調試器。這些功能包含在定制的、功能強大且用戶友好的基于Eclipse的IDE中。借助于該工具套件,可以很輕松地為ARM支持的系統開發和優化基于Linux的系統,縮短開發和測試周期,并且可幫助工程師創建資源利用效率高的軟件。圖2-2ARMDS-5功能框架圖2-1ARMDS5的工程配置思考題某計算機系統由下圖所示的部件構成,假定每個部件的千小時可靠度R均為0.9,則該系統的千小時可靠度約為(2)。(2)A.0.882 B.0.951 C.0.9 D.0.99思考題分析

本題考查系統可靠度的概念。串聯部件的可靠度=各部件的可靠度的乘積。并聯部件的可靠度=1?–?各部件失效率的乘積。題目中給出的系統由三個部件串聯組成,其中第二、第三部件又分別由兩個部件并聯構成,因此整個系統的可靠度為0.9?′?(1?–?(1?–?0.9)?′?(1?–?0.9))?′?(1?–?(1?–?0.9)?′?(1?–?0.9))?≈?0.882參考答案(2)A

Cortex-A9處理器工作模式和狀態PartThree2.3ARMCortex-A9處理器工作模式用戶模式非用戶模式,或特權模式異常模式特權模式:是為了服務中斷或異常,或訪問受保護的資源,具有多系統資源的完全訪問權限,可自由的切換工作模式。用戶模式系統模式:系統模式不能由任何異常進入,它有與用戶模式完全相同的寄存器。系統模式供需要訪問系統資源的操作系統任務使用,這樣避免使用和異常模式相關的寄存器,保證在任何異常發生時都不會使任務的狀態不可靠。異常模式:除了可以通過程序切換進入外,還可以在發生特定的異常中斷時進入。每一種異常模式都有一組專用的寄存器,以保證在進入異常模式時用戶模式下的寄存器(保存著工作模式切換前的程序運行狀態)不被破壞。Cortex-A9處理器狀態Cortex-A9處理器是32位處理器,可執行32位ARM指令集指令,同時兼容16位Thumb-2指令集指令和數據類型。有3種工作狀態,這些狀態由程序狀態寄存器(CPSR)的T位和J位控制與切換。(1)ARM狀態:執行32位的字對齊的ARM指令集指令,T位和J位為0;(2)Thumb狀態:執行16位或32位半字對齊的Thumb-2指令集指令,T位為1,J位為0;(3)ThumbEE狀態:執行為動態產生目標而設計的16位或32位半字對齊的Thumb-2指令集的變體,T位和J位為1。ARM指令必須在ARM狀態下執行;Thumb指令也必須在Thumb狀態下執行;ARM處理器可以在兩種狀態下切換,只要遵循ATPCS調用規則,ARM子程序和Thumb子程序之間可以相互調用。ARM狀態和Thumb狀態之間的切換并不影響處理器工作模式和寄存器組的內容。處理器復位后開始執行代碼時,處于ARM狀態。

Cortex-A9存儲器管理PartFour2.4思考題:若內存按字節編址,用存儲容量為8K*8比特的存儲器芯片構成地址編號A0000H~DFFFFH的內存空間,則至少需要多少片。本題考查內存容量的計算。給定起、止地址碼的內存容量?=?終止地址?–?起始地址?+?1。將終止地址加1等于E0000H,再減去起始地址,即E0000H?–?A0000H?=?40000H。十六進制的?(40000)16?=?218。組成內存儲器的芯片數量?=?內存儲器的容量/單個芯片的容量。218/(8*210)??=?32ARM的數據類型Cortex-A9是32位處理器,支持多種數據類型:字節(Byte):8位;以字節為單位,按1字節對齊;半字(Halfword):16位;以半字為單位,按2字節對齊,地址最末一位為0;字(Word):32位;雙字(Doubleword):64位。浮點運算使用在ARM硬件指令集中未定義的數據類型。另外ARM公司還提供了C語言編寫的浮點庫作為ARM浮點指令集的替代方法(Thumb代碼只能使用浮點指令集)。以字為單位,按4字節對齊,地址最末兩位為00。ARM的體系結構將存儲器看成是從0x00000000地址開始的按字節編碼的線性存儲結構,每個字節都有對應的地址編碼。由于數據有不同的字節大小(1字節、2字節、4字節等),導致數據在存儲器中存放不是連續的,這樣降低了存儲系統的效率,甚至引起數據讀寫錯誤。因此數據必須按照一下方式對齊:以字為單位,按4字節對齊,地址最末兩位為00。以半字為單位,按2字節對齊,地址最末一位為0;以字節為單位,按1字節對齊;2.4.2浮點數據類型浮點運算使用在ARM硬件指令集中未定義的數據類型。在協處理器指令空間定義了一系列浮點指令,這些指令全部可以通過未定義指令異常(該異常收集所有硬件協處理器不接受的協處理器指令)在軟件中實現,其中的一小部分也可以由浮點運算協處理器FPA10以硬件方式實現。另外ARM公司還提供了C語言編寫的浮點庫作為ARM浮點指令集的替代方法(Thumb代碼只能使用浮點指令集)。該庫支持IEEE標準的單精度和雙精度格式。C編譯器有一個關鍵字標志來選擇,它產生的代碼與軟件仿真(通過避免中斷、譯碼和浮點指令仿真)相比既快又緊湊。大/小端存儲模式Cortex-A9處理器支持大端(Big-endian)、小端(Little-endian)、混合大小端模式和非對齊數據訪問。可以通過硬件的方式設置端模式。大端模式是被存放字數據的高字節存儲在存儲系統的低地址中,而被存放的字數據的低字節則存放在存儲系統的高地址中。小端模式中,存儲系統的低地址中存放的是被放字數據中的低字節內容,存儲系統的高地址存放的是被存字數據中的高字節內容。例如,一個32位的字數據

0x12345678處理器大小端模式的判斷typedefunion{charchChar;shortshShort;}UnEndian;boolIsBigEndian(){UnEndiantest;test.shShort=0x10;if(test.chChar==0x10){returntrue;}returnfalse;}同時也可以采用如本書微課2.4.3大小端模式與程序判斷的完整程序進行演示如果需要在大端模式和小端模式之間相互轉換,最經典的做法是使用套接字庫中的ntohs、ntohl、htons和htonl進行轉換。內存和I/O–大小端

大端:小端:0xb32045000xddddddd00xb32045000xddddddd0f6f673734b4bcdcddada0000實例變量A:wordA=0xf6734bcd,在內存中的起始地址為0xb3204500變量B:halfwordB=218,在內存中的起始地址為0xddddddd0問題:halfwordB=218與wordC=218在內存中的存放方式有何不同?請分大端和小端兩種情況說明。圖2-7ARM狀態下的通用寄存器組圖2-8ARM狀態下的狀態寄存器組不分組的通用寄存器分組的通用寄存器在特權模式下,特定模式下的寄存器陣列才是有效的。=特權模式Cortex-A9存儲器管理:通用寄存器組

R8~R12寄存器分別對應兩個不同的物理寄存器,分別是快速中斷模式下的相應存儲器和非快速中斷模式下的相應存儲器。

R13、R14寄存器分別對應七個不同的物理存儲器,除了用戶和系統模式共用一個物理寄存器外,其它六個分別是fiq、svc、abt、irq、und和mon模式下的不同物理寄存器。R13常作堆棧指針(SP:StackPointer);R14子程序鏈接寄存器(LR:LinkRegister),該寄存器由ARM編譯器自動使用。在執行BL和BLX指令時,R14保存返回地址。。

程序計數器R15(PC),用于記錄程序當前的運行地址。ARM處理器每執行一條指令,都會把PC增加4字節(Thumb模式為兩個字節)。此外,相應的分支指令(如BL等)也會改變PC的值。在ARM狀態下,PC字對齊;在Thumb和ThumbEE狀態下,PC半字對齊。FIQ模式下有7個分組寄存器映射到R8~R14,即R8_fiq~R14_fiq,所以很多快速中斷處理不需要保存任何寄存器。Cortex-A9存儲器管理:狀態寄存器主要功能是:保存最近執行的算術或邏輯運算的信息、控制中斷的允許或禁止、設置處理器工作模式(1)條件標志位:N、Z、C和V統稱為條件標志位,這些標志位會根據程序中的算術和邏輯指令的執行結果修改。處理器則通過測試這些標志位來確定一條指令是否執行。N(Negative):N=1表示運算的結果為負數,N=0表示結果為正數或零。Z(Zero):Z=1表示運算的結果為零,Z=0表示運算的結果不為零。C(Carry):在加法指令中,當結果產生了進位,C=1,其他情況C=0;在減法指令中,當運算發生了借位,C=1,其他情況C=0;在移位運算指令中,C被設置成被移位寄存器最后移出去的位。V(oVerflow):對于加/減法運算指令,當操作數和運算結果為二進制補碼表示的帶符號數時,V=1表示符號位溢出。(2)Q標志位:在帶有DSP指令擴展的ARMv5及以上版本中,Q標志位用于指示增強的DAP指令是否發生了溢出。Q標志位具有粘性,當因某條指令將其設置為1時,它將一直保持為1直到通過MSR指令寫CPSR寄存器明確地將該位清0,不能根據Q標志位的狀態來有條件地執行某條指令。(3)IT塊:IT塊用于對Thumb指令集中if-then-else這一類語句塊的控制。如果有IT塊,則IT[7:5]為當前IT塊的基本條件碼。在沒有IT塊處于活動狀態時,該3位為000。IT[4:0]表示條件執行指令的數量,不論指令的條件是基本條件碼或是基本條件的逆條件碼。在沒有IT塊處于活動狀態時,該5位為00000。當處理器執行IT指令時,通過指令的條件和指令中Then、Else(T和E)參數來設置這些位。(4)J標志位:用于表示處理器是否處于ThumbEE狀態。T=1時,J=0,表示處理器處于Thumb狀態。J=1,表示處理器處于ThumbEE狀態。注意:T=0時,不能夠設置J=1;當T=0時,J=0。不能通過MSR指令來改變CPSR的J標志位。(5)GE[3:0]位:該位用于表示在SIMD指令集中的大于、等于標志。在任何模式下讀可寫。(6)E標志位:該標志位控制存取操作的字節順序。0表示小端操作,1表示大端操作。Arm和Thumb指令集都提供指令用于設置和清除E標志位。當使用CFGEND0信號復位時,E標志位將被初始化。(7)A標志位:表示異步異常禁止。該位自動置為1,用于禁止不精確的數據中止。(8)控制位:程序狀態寄存器的低8位是控制位。當異常發生時,這些位的值將發生改變。在特權模式下,可通過軟件編程來修改這些標志位的值。中斷屏蔽位:I=1,IRQ中斷被屏蔽;F=1,FIQ中斷被屏蔽。狀態控制位:T=0,處理器處于ARM狀態;T=1,處理器處于Thumb狀態。模式控制位:M[4:0]為模式控制位,決定處理器的工作模式,ARMState與ThumbState寄存器關系CPSR寄存器的使用

CodeA

voidincrement(int*restrictb,

int*restrictc)

{

inti;

for(i=0;i<100;i++)

{

c[i]=b[i]+1;

}

}CodeB

voidincrement(int*b,int*c)

{

inti;

int*pb,*pc;

intb3,b4;

pb=b-1;

pc=c-1;

b3=pb[1];

for(i=(100/2);i!=0;i--)

{

b4=*(pb+=2);

pc[1]=b3+1;

b3=pb[1];

*(pc+=2)=b4+1;

}

}

循環100次變成了循環50次(loopunrolling),減少了跳轉次數;數組變成了指針,減少每次計算數組偏移量的指令;微調了不同代碼操作的執行順序,減少了流水線stall的情況;循環從++循環變成了――循環。這樣可以使用CPSR的條件位,為每次循環減少了一條判斷指令Cortex-A9存儲系統MMU的任務

(1)實現虛擬存儲空間到物理存儲空間的映射。(2)存儲器訪問權限的控制,提供硬件機制的內存訪問授權。(3)設置虛擬存儲空間緩沖的特性。虛擬地址由編譯器和連接器在定位程序時分配;物理地址用來訪問實際的主存儲器硬件模塊。在ARM中采用了頁(Page)式虛擬存儲管理方式。虛擬地址空間劃分成稱為頁的單位,而相應的物理地址空間也被進行劃分,單位是頁幀(frame)。頁與頁幀之間在MMU的調度下是如何進行映射:虛擬地址0被送往MMU,MMU發現該地址在頁0(0~4095)的范圍內,頁0所映射的頁框為2(頁框2的地址范圍是8192~12287)。因此MMU將該虛擬地址轉化為物理地址8192,并把地址8192送到內存地址總線上。內存對地址的映射過程并不清楚,它只是接收到一個對地址8192的訪問請求并執行。MMU的一個重要任務就是讓每個任務都運行在各自的虛擬存儲空間中。MMU做為轉換器,將程序和數據的虛擬地址轉換成實際的物理地址,也就是實現虛擬存儲空間到物理存儲空間的映射。除此之外,MMU的其他重要功能還包括:(1)存儲器訪問權限的控制,提供硬件機制的內存訪問授權。(2)設置虛擬存儲空間緩沖的特性。MMU中的虛擬地址轉換成實際的物理地址的變換過程是通過兩級頁表實現的:(1)一級頁表中包含有以段為單位的地址變換條目以及指向二級頁表的指針。一級頁表實現的地址映射力度較大。以段為單位的地址變換過程只需要一級頁表。(2)二級頁表中包含有以大頁和小頁為單位的地址變換條目。有一種類型的二級頁表還包含有以極小頁為單位的地址變換條目。以頁為

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論