第三章CPU相關知識_第1頁
第三章CPU相關知識_第2頁
第三章CPU相關知識_第3頁
第三章CPU相關知識_第4頁
第三章CPU相關知識_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

嵌入式系統概論第三章CPU輸入/輸出機制管態(tài),異常,陷阱存儲管理和地址轉換高速緩存CPU的性能和功耗1嵌入式系統概論3.1I/O編程I/O設備模擬元件或非電子元件數字邏輯——與CPU相關I/O設備與CPU的接口——一組寄存器CPUstatusregdataregmechanism2I/OI/O設備的寄存器數據寄存器:I/O與CPU交互的數據I/O設備讀寫的數據狀態(tài)寄存器:提供設備運行的狀態(tài)、信息只讀方式,由設備完成對這些寄存器的操作,CPU只能讀取它可讀、可寫方式,不僅設備可對這些寄存器操作,CPU也可以進行讀、寫操作3嵌入式系統概論I/O設備的分類計算機所管理的I/O設備按輸入輸出對象的不同可以分為以下3類:用戶可讀寫設備,用于用戶與計算機通信。如:顯示器、鍵盤、鼠標、打印機等機器可讀寫設備,用于電子裝置與計算機通信。如:硬盤、U盤、控制器通信設備,用于與遠程設備通信。如:Modem、ISDN終端4嵌入式系統概論嵌入式系統概論應用:8251UART

(Universalasynchronousreceiver/transmitter)串行通訊的基本設備UART功能被集成到ARM9有3組發(fā)送接收接口,通過通用的I/O接口復用獲得的允許發(fā)送接收參數編程5嵌入式系統概論8251UART與CPU接口CPU串口68251串行數據通信系統模型

DTE-DataTerminalEquipment,常常是計算機.

DCE-DataCommunicationEquipment,常常是MODEM,也可以是計算機.串行接口

–主要是8251A、16550、8250等,連接DTE和DCE。7嵌入式系統概論串行通訊數據以字符流的形式timebit0bit1bitn-1nocharstartstop...8嵌入式系統概論串行通訊的參數波特率(Baud(bit)rate)每個字符的位數是否有奇偶校驗(Parity/noparity)奇、偶校驗(Even/oddparity)結束位的長度

(1,1.5,2位).9嵌入式系統概論I/O編程兩種方法支持I/O編程特殊的I/O指令Intelx86提供

in,out

指令內存映射I/O大多數CPUs應用內存映射I/O支持I/O指令的CPU并不排除內存映射I/O10內存映射I/O為每一個I/O設備的寄存器提供地址程序使用普通的CPU讀寫指令來與設備通訊Definelocationfordevice:DEV1EQU0x1000Read/writecode:LDRr1,#DEV1LDRr0,[r1]LDRr0,#8STRr0,[r1]11嵌入式系統概論內存映射I/O——高級語言

Peek和poke讀操作intpeek(char*location){ return*location;}寫操作 voidpoke(char*location,charnewval){ (*location)=newval;}12I/O操作的方式13嵌入式系統概論忙等I/O方式輪詢(polling):通過CPU讀I/O設備狀態(tài)寄存器來詢問設備是否空閑14嵌入式系統概論忙等I/O方式-輸出設備編程將一個字符串寫到輸出設備#defineOUT_CHAR0x1000#defineOUT_STATUS0x1001Char*mystring=“Hello,world.”;Char*current_char;current_char=mystring;while(*current_char!=‘\0’){ poke(OUT_CHAR,*current_char);poke(OUT_STATUS,1); while(peek(OUT_STATUS)!=0); current_char++;}15嵌入式系統概論忙等I/O方式-輸入/輸出同步方式編程#definein_CHAR0x1000#definein_STATUS0x1001#defineOUT_CHAR0x1100#defineOUT_STATUS0x110116嵌入式系統概論忙等I/O方式-輸入/輸出同步方式編程(續(xù))while(TRUE){ /*read*/ while(peek(IN_STATUS)==0); achar=(char)peek(IN_DATA); /*write*/ poke(OUT_DATA,achar); poke(OUT_STATUS,1); while(peek(OUT_STATUS)!=0); }17I/O中斷忙等I/O效率非常低I/O設備的速度遠遠小于CPU的速度除了測試,CPU不能做其它任何事情CPU的很多操作是可以與I/O事件并行執(zhí)行中斷機制:可以改變CPU的控制流順序強制CPU執(zhí)行一段特定代碼——中斷處理子例程18嵌入式系統概論I/O中斷由I/O設備邏輯決定什么時候中斷CPU響應中斷——可能無法立即響應將程序計數器指向設備處理子例程前臺程序:無中斷情況下CPU運行的程序19嵌入式系統概論中斷機制CPUstatusregdataregmechanismPCintrrequestintrackdata/addressLR20嵌入式系統概論中斷的物理連接CPU和設備通過CPU總線連接CPU和設備

通過握手協議進行通訊設備發(fā)出中斷請求CPU準備處理I/O設備請求時,CPU發(fā)出中斷響應21嵌入式系統概論中斷行為基于調用中斷子例程的形式(保護現場)中斷強制下一條指令調用中斷服務子例程執(zhí)行中斷子例程(恢復現場)返回前臺程序22正在運行的程序中斷點中斷處理程序中斷處理開始中斷處理結束嵌入式系統概論例:應用基本中斷將字符從輸入設備復制到輸出設備23CPUstatusregdataregoutputdevicestatusregdatareginputdevice嵌入式系統概論例:應用基本中斷將字符從輸入設備復制到輸出設備中斷子例程voidinput_handler()/*輸入中斷子例程*/{ achar=peek(IN_DATA); gotchar=TRUE;}voidoutput_handler()/*輸出中斷子例程*/{}24嵌入式系統概論例:應用基本中斷將字符從輸入設備復制到輸出設備(續(xù))main(){ while(TRUE){ if(gotchar){ poke(OUT_DATA,achar); poke(OUT_STATUS,1); gotchar=FALSE; } } }25例:具有緩沖區(qū)的中斷I/O字符隊列headtailheadtaila26#defineBUF_SIZE8chario_buf[BUF_SIZE];intbuf_head=0,buf_tail=0;interror=0;voidempty_buffer();voidfull_buffer();intnchars();voidadd_char(charachar);charremove_char();27基于緩沖區(qū)的輸入中斷子例程voidinput_handler(){ charachar; if(full_buffer())error=1; else{achar=peek(IN_DATA);add_char(achar);} poke(IN_STATUS,0); if(nchars()==1) {poke(OUT_DATA,remove_char());poke(OUT_STATUS,1);} }28基于緩沖區(qū)的輸出中斷子例程voidoutput_handler(){ if(!empty_buffer()){ poke(OUT_DATA,remove_char()); poke(OUT_STATUS,1); } }29調試中斷代碼若忘記改變寄存器的內容前臺程序會展示一些非常奇怪的錯誤錯誤很難重現---它依賴與中斷的時間30如何發(fā)現中斷在開始執(zhí)行每條指令之前檢查中斷請求信號是否有中斷請求一旦出現中斷,PC將指向中斷服務子例程注意:要保護和恢復現場31中斷優(yōu)先級和中斷向量兩種機制允許中斷處理更多的設備優(yōu)先級(Priorities):確定哪種中斷首先獲得CPU向量(Vectors):

允許中斷設備制定其中斷服務子例程大多數CPU這兩種方式都支持32具有優(yōu)先級的中斷

---序號小的優(yōu)先級高CPUdevice1device2devicenL1L2..Lninterruptacknowledge33使用輪詢讓幾個設備共享一個中斷34中斷的優(yōu)先級Masking(屏蔽):發(fā)生中斷的優(yōu)先級比正在中斷的優(yōu)先級低,CPU將不響應該優(yōu)先級低的中斷。Nonmaskableinterrupt(NMI,不可屏蔽中斷):最高優(yōu)先級,永不屏蔽電源故障35中斷向量不同的設備有不同的中斷服務子例程中斷向量表handler0handler1handler2handler3Interruptvectortablehead36一般的中斷機制intr?NY假設優(yōu)先級的選擇已經處理.NignoreYvector?YYNtimeout?Ybuserrorcalltable[vector]intrpriority>currentpriority?continueexecutionN37ack中斷開銷中斷服務子例程執(zhí)行的時間中斷機制的開銷寄存器存儲/恢復流水相關補償Cache相關補償38ARM中斷ARM支持兩類中斷快速中斷請求(FIQs).中斷請求(IRQs).中斷表開始地址:0.39ARM最壞延遲27個時鐘周期2周期同步外部請求最多20周期完成當前指令3周期的數據異常終止2周期進入中斷處理狀態(tài)40管態(tài)通過SWI指令進入SWICODE_1在中斷向量表中的地址:0x08.進入管理模式將CPSR存儲到SPSR.41異常(Exception)內部檢測到的錯誤與指令是同步的,但它是不可預料的通常是內部產生的有多種異常,處理的方法與中斷類似,有優(yōu)先級和向量表42Trap(陷阱)又叫軟中斷(softwareinterrupt):由指令產生的異常,然后進入管態(tài)ARM通過SWI指令進入軟件中斷43協處理器(Co-processor)增加一些功能單元,可以通過指令來調用浮點單元通過協處理器完成的ARM允許有16個協處理器浮點數處理是用協處理器編號為1和2的44Caches和CPUsCPUcachecontrollercachemainmemorydatadataaddressdataaddress45Cache操作主存被映射到cache中.Caches類型:指令caches;數據caches;指令caches+數據caches.主存的讀取時間就是不確定的.46TermsCachehit:(高速緩存命中)位置就在cache中.Cachemiss:(高速緩存未命中)位置不在cache中.Workingset:(工作集)在一段時間內CPU訪問的一小段存儲單元,這個活動單元的集合就叫工作集.47未命中的類型Compulsory(cold):(強制性未命中)存貯單元第一次被訪問.Capacity:(容量未命中)工作集過大.Conflict:(沖突未命中)多個地址映射到同一個cache單元上.48主存的性能h=cache命中率.tcache=cache訪問時間,tmain=內存的訪問時間.平均內存訪問時間:tav=htcache+(1-h)tmain49多級cacheCPUL1cacheL2cache50mainmemory多級cache訪問時間h1=L1cache命中率.h2=L1未命中,L2命中率.tL1

和tL2–cache1和cache2訪問時間平均內存訪問時間:tav=h1tL1+(h2-h1)tL2+(1-h2-h1)tmain51替換策略(placementpolicy)Replacementpolicy:選擇哪個cache單元的內容被淘汰,騰出空間存儲新內存的內容兩種策略:隨機替換.最近最少使用(Least-recentlyused(LRU)).Cache的組織全相聯(Fully-associative):任何位置的內存都可以存儲到cache的任何位置(幾乎重沒有實現).直接映射(Direct-mapped):每個存儲單元被精確的映射到cache的某個單元上.n-路組相聯(N-wayset-associative):每一個存儲單元被映射到n組中的某個單元上.Cache的優(yōu)點經常訪問的內容保留在高速緩存中.Cache能夠一次能夠導入多個字,它是以塊為單位進行導入、導出。第一次訪問后,順序訪問的速度快.直接映射cache有效標記=標記索引偏移hitvalue標記數據10xabcdbytebytebyte...bytecache塊地址cache寫操作通寫(Write-through):每次寫操作都同時改變高速緩存和相應的主存單元.回寫(Write-back):只有當cache中的內容要被移出時,才將數據寫到主存中.直接映射cache許多地址映射到相同的cache塊中.沖突很容易產生:考慮一個具有1024個塊的直接映射數組a[]使用的地址0,1,2,…數組b[]使用的地址1024,1025,1026,…操作a[i]+b[i]產生沖突.組相聯cache直接映射caches的集合:Set1Set2Setn...hitdata例:直接映射vs.組相聯cache直接映射cacheAfter001access:block tag data00 - -01 0 111110 - -11 - -After010access:block tag data00 - -01 0 111110 0 000011 - -cache:4個塊,每個塊存儲一個數據,地址與cache的對應:

地址

標記塊直接映射cache(續(xù))After011access:block tag data00 - -01 0 111110 0 000011 0 0110After100access:block tag data00 1 100001 0 111110 0 000011 0 0110直接映射cache(續(xù))After101access:block tag data00 1 100001

1

000110 0 000011 0 0110After111access:block tag data00 1 100001 1 000110 0 000011

1

01002-路組相聯cacheCache的最后狀態(tài)(2個大小的直接映射的cache):set blk0tag blk0data blk1tag blk1data00 1 1000 - -010 1111 1 000110 0 0000 - -11 0 0110 1 01002-路組相聯cache地址

標記塊Cache的最后狀態(tài)(與直接映射的cache大小一樣):set blk0tag blk0data blk1tag blk1data0 01 0000 10 10001 10 0001 11 0100例:cachesStrongARM:16KB,32-路,32-字節(jié)塊指令cache.16KB,32-路,32-字節(jié)塊數據cache.策略:回寫

CPU的性能周期時間(Cycletime).CPU的流水線(CPUpipeline).高速緩存(cache).流水線幾條指令在不同的部件上同時執(zhí)行由于各種條件導致流水線阻滯:分支;內存延遲;etc.流水線結構ARM73-級流水:取指(fetch):

從內存取出指令;譯碼(decode):

指令的操作碼和操作數被譯碼從而決定執(zhí)行什么功能;Execute:執(zhí)行已譯碼的指令.ARM流水線的執(zhí)行addr0,r1,#5subr2,r3,r6cmpr2,#3fetchtimedecodefetchexecutedecodefetchexecutedecodeexecute123性能的測量Latency:(延時)一條指令流出流水線所花費的時間。Throughput:(吞吐量)單位時間內執(zhí)行指令的數目建立時間:流水線開始工作,須經過一定時間才能達到最大吞吐率,這就是建立時間。流水線增加其吞吐量,但并沒有減少其延時阻滯(Pipelinestalls)若某一步沒有按照相同的時間完成,流水線就阻滯阻滯增加了延時,減少了吞吐量ARM多周期的load指令fetchdecodeexldr2ldmiar0,{r2,r3}subr2,r3,r6cmpr2,#3exldr3fetchtimedecodeexsubfetchdecodeexcmp控制阻滯分支通常引入阻滯(分支補償)直到條件計算完后才知道執(zhí)行那條指令ARMpipelinedbranchtimefetchdecodeexbnebnefoosubr2,r3,r6fetchdecodefooaddr0,r1,r2exbnefetchdecodeexaddexbne例:ARM執(zhí)行時間確定FIR濾波器的執(zhí)行時間:for(i=0;i<N;i++) f=f+c[i]*x[i];循環(huán)測試的分支可能花費多于一個周期.BLTloop

最好情況下花費1個時鐘周期,最糟情況下花費3個時鐘周期。內存性能分析Caches的引入使得執(zhí)行時間非確定了依賴于執(zhí)行的順序Cache未命中補償(Cachemisspenalty):由于cache未命中而需要花費的額外時間未命中的原因:強制性未命中,容量未命中,沖突未命中CPU功耗在某些情況下,CPU的功耗與其運行時間同等重要功率和能量:(Powervs.energy)功耗是能量消耗和功率消耗的簡稱熱量的產生取決于功率;電池的壽命取決于能量的消耗.CMOS的功耗CMOS幾乎所有的數字系統都有的Voltagedrops:功耗V2與成正比.切換:(Toggling)切換越多,功耗越多.泄漏:(Leakage)消除漏電的唯一方法切斷電源.CPU節(jié)能的方法CPU在低電壓下使用.在低時鐘頻率下使用內部禁止當前執(zhí)行功能不需要的功能單

溫馨提示

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

評論

0/150

提交評論