《《存儲器組織》PPT課件》由會員分享,可在線閱讀,更多相關(guān)《《存儲器組織》PPT課件(28頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
1、2008年3月21日南京大學(xué)計(jì)算機(jī)系1 第4章ARM體系結(jié)構(gòu)l本章主要介紹以下內(nèi)容:l ARM體系結(jié)構(gòu)版本l ARM處理器系列l(wèi) ARM流水線l ARM工作模式和工作狀態(tài)l ARM寄存器組織l ARM存儲器組織l ARM的異常中斷 l AMBA和ARM7TDMI 2008年3月21日南京大學(xué)計(jì)算機(jī)系2 4.6 ARM存儲器組織l介紹以下內(nèi)容:l數(shù)據(jù)類型和存儲格式l ARM的存儲體系l片上存儲器的用法l協(xié)處理器CP15l存儲器管理單元MMUl保護(hù)單元l快速上下文切換擴(kuò)展 l寫緩存器(Write Buffer)l ARM的異常中斷向量表和異常中斷處理與返回 2008年3月21日南京大學(xué)計(jì)算機(jī)系3
2、4.6.1 數(shù)據(jù)類型和存儲格式l ARM存儲器中的數(shù)據(jù)類型有6種l有符號數(shù)l 8位(字節(jié))、16位(半字)、32位(字)l無符號數(shù)l 8位(字節(jié))、16位(半字)、32位(字)l缺省端序設(shè)置為小端序 2008年3月21日南京大學(xué)計(jì)算機(jī)系4 4.6.2 ARM的存儲體系l參看下圖,抽象成一個(gè)呈金字塔型的存儲結(jié)構(gòu)l注重研究第2層 2008年3月21日南京大學(xué)計(jì)算機(jī)系5 4.6.3 片上存儲器的用法l事實(shí)上許多ARM處理器芯片內(nèi)部含有存儲器,稱作片上存儲器。l片上存儲器的存儲空間可以通過指令進(jìn)行配置,定義成片上Cache,或者片上SRAM,或者一部分片上Cache加一部分片上SRAM。l按照具體應(yīng)用
3、情況決定片上存儲器配置方法 2008年3月21日南京大學(xué)計(jì)算機(jī)系6 片上存儲器的用法l許多嵌入式處理器芯片內(nèi)部含有存儲器,稱作片上存儲器或者片內(nèi)存儲器。片上存儲器的存儲空間可以通過指令進(jìn)行配置,定義成片上Cache,或者片上SRAM,或者一部分片上Cache加一部分片上SRAM。l例如S3C44B0X和S3C4510B有三種配置用法l較多采用片內(nèi)RAM配置而非片內(nèi)Cache配置。 2008年3月21日南京大學(xué)計(jì)算機(jī)系7 4.6.4 協(xié)處理器CP15l CP15即所謂的系統(tǒng)控制協(xié)處理器l System Control Coprocessorl在基于ARM的嵌入式系統(tǒng)中,諸如Cache配置、寫緩存
4、配置之類的存儲系統(tǒng)管理工作由協(xié)處理器CP15完成。l CP15可以包含16個(gè)32位寄存器l編號為CP0CP15。l實(shí)際運(yùn)用中寫為C0C15。 2008年3月21日南京大學(xué)計(jì)算機(jī)系8 4.6.5 存儲器管理單元MMUl ARM的MMU部件的用途:完成虛擬存儲空間到物理存儲空間的映射。管理方式:頁式虛擬存儲器。頁的大小有兩種:粗粒度和細(xì)粒度。存儲器訪問權(quán)限的控制。設(shè)置虛擬存儲空間的緩沖特性。 2008年3月21日南京大學(xué)計(jì)算機(jī)系9 4.6.6 保護(hù)單元l保護(hù)單元l PU,Protection Unit。允許將ARM的4GB地址空間映射為8個(gè)區(qū)域。每一個(gè)區(qū)域都有可編程的起始地址及大小、可編程屬性和C
5、ache屬性。 l對于不需要MMU的嵌入式系統(tǒng)而言,PU簡化了硬件和軟件。l主要表現(xiàn)在不使用轉(zhuǎn)換表, 降低系統(tǒng)開銷。 2008年3月21日南京大學(xué)計(jì)算機(jī)系10 帶保護(hù)單元和MMU的系統(tǒng)框圖 2008年3月21日南京大學(xué)計(jì)算機(jī)系11 4.6.7 ARM處理器的Cachel ARM處理器均帶有Cache或者可以將片上存儲器配置成Cache。當(dāng)然,在不需要時(shí)也可以通過配置操作關(guān)閉Cache。l ARM處理器的Cache地址映射均采用組相聯(lián)映射。 2008年3月21日南京大學(xué)計(jì)算機(jī)系12 4.6.8 快速上下文切換擴(kuò)展l快速上下文切換擴(kuò)展l FCSE , Fast Context Switch Ext
6、ensionl FCSE是 ARM存儲系統(tǒng)的修正機(jī)構(gòu)。它修改系統(tǒng)中不同進(jìn)程的虛擬地址,避免在進(jìn)行進(jìn)程間切換時(shí)造成的虛擬地址到物理地址的重映射,從而提高系統(tǒng)的性能。 2008年3月21日南京大學(xué)計(jì)算機(jī)系13 4.6.9 寫緩存器(Write Buffer)l寫緩存器是一個(gè)容量很小的片內(nèi)的先進(jìn)先出(FIFO)存儲器,位于處理器核與主存之間。l寫緩存器的主要用途是:當(dāng)CPU輸出數(shù)據(jù)時(shí),總線恰好被占用而無法輸出,此時(shí),CPU可以把輸出數(shù)據(jù)寫入到寫緩存器。 2008年3月21日南京大學(xué)計(jì)算機(jī)系14 S3C44B0X處理器的寫緩存區(qū)l由4個(gè)寫緩存寄存器構(gòu)成。每一個(gè)寫緩存寄存器包括一個(gè)32位數(shù)據(jù)字段,一個(gè)2
7、8位地址字段和一個(gè)2位狀態(tài)字段。可以通過指令使能或者禁能寫緩存器。參看下圖。 2008年3月21日南京大學(xué)計(jì)算機(jī)系15 4.7 ARM的異常中斷l(xiāng) ARM異常與中斷不做嚴(yán)格意義上的區(qū)別l ARM的中斷向量表內(nèi)存放的是響應(yīng)異常和中斷的轉(zhuǎn)移指令而不是中斷向量地址。l在ARM處理器中,當(dāng)異常發(fā)生時(shí),完成當(dāng)前指令后跳轉(zhuǎn)到相應(yīng)的異常中斷處理程序入口執(zhí)行異常中斷處理。異常處理完畢后返回原來的程序斷點(diǎn)繼續(xù)執(zhí)行原來的程序。 2008年3月21日南京大學(xué)計(jì)算機(jī)系16 異常中斷分類l ARM異常按照起因的不同分為3類:指令執(zhí)行引起的直接異常l軟件中斷、未定義指令和預(yù)取指令中止屬于這一類指令執(zhí)行引起的間接異常l數(shù)據(jù)
8、中止(在讀取和存儲數(shù)據(jù)時(shí)的存儲器故障)屬于這一類。外部產(chǎn)生的與指令流無關(guān)的異常 l復(fù)位、IRQ和FIQ屬于這一類。 2008年3月21日南京大學(xué)計(jì)算機(jī)系17 ARM中斷向量表l中斷向量表中存放了各個(gè)異常中斷以及處理程序的對應(yīng)關(guān)系。l在ARM體系結(jié)構(gòu)中,異常中斷向量表的大小只有32個(gè)字節(jié)。其中,每個(gè)異常中斷向量占4個(gè)字節(jié)。系統(tǒng)初始化時(shí),中斷向量表從0號存儲單元開始存放。 2008年3月21日南京大學(xué)計(jì)算機(jī)系18 ARM中斷向量表(續(xù))中斷向量地址異常中斷類型異常中斷模式優(yōu)先級(6級最低)0 x0復(fù)位管理模式,SVC 10 x4未定義指令未定義指令中止,UND 60 x8軟件中斷管理模式,SVC
9、60 xC指令預(yù)取中止中止模式,ABT 50 x10數(shù)據(jù)訪問中止中止模式,ABT 20 x14保留未使用未使用0 x18外部中斷請求,IRQ外部中斷模式,IRQ 4 0 x1C快速中斷請求,F(xiàn)IQ快速中斷模式,F(xiàn)IQ 3 2008年3月21日南京大學(xué)計(jì)算機(jī)系19 ARM異常中斷響應(yīng)l當(dāng)發(fā)生異常時(shí),ARM處理器對異常中斷的響應(yīng)過程如下:將CPSR的內(nèi)容保存到將要執(zhí)行的異常中斷模式的SPSR中。例如:如果異常類型是FIQ,則SPSR_FIQ=CPSR設(shè)置當(dāng)前程序狀態(tài)寄存器CPSR中的模式字段位。將異常發(fā)生時(shí)程序的下一條指令地址保存到新的異常模式的R14寄存器。注意:異常發(fā)生時(shí)異常模式R14的定義是
10、PC-4。 2008年3月21日南京大學(xué)計(jì)算機(jī)系20 ARM異常中斷響應(yīng)強(qiáng)制對程序計(jì)數(shù)器賦值。使程序從異常所對應(yīng)的向量地址開始執(zhí)行中斷服務(wù)子程序。ARM處理器對異常的響應(yīng)過程可用偽代碼描述如下:R14_=return linkSPSR_=CPSRCPSR4:0=exception mode numberCPSR5=0 /* 當(dāng)運(yùn)行于ARM狀態(tài)時(shí) */if = Reset or FIQ thenCPSR6=1 /* 禁止新的FIQ中斷 */CPSR7=1 /* 禁止新的IRQ中斷 */PC = exception vector address 2008年3月21日南京大學(xué)計(jì)算機(jī)系21 響應(yīng)異常處
11、理時(shí)的斷點(diǎn)地址計(jì)算 中斷向量號異常類型異常類型PC是否已被更新LR寄存器值返回地址返回時(shí)LR值傳送返回到PC前調(diào)整復(fù)位SVC清零清零不返回未定義指令UND未更新X+4 X+4不需要軟件中斷SWI SVC未更新X+4 X+4不需要指令預(yù)取中止ABT未更新X+4 X LR-4數(shù)據(jù)訪問中止ABT已經(jīng)更新X+8 X LR-8 保留外部中斷請求,IRQ已經(jīng)更新X+8 X+4 LR-4快速中斷請求,F(xiàn)IQ已經(jīng)更新X+8 X+4 LR-4 2008年3月21日南京大學(xué)計(jì)算機(jī)系22 IRQ、FIQ和ABT異常中斷處理程序的返回l發(fā)生IRQ或者FIQ異常中斷時(shí),指令已經(jīng)執(zhí)行完畢,PC指向當(dāng)前指令后面的第3條指令
12、。因此IRQ或者FIQ的異常中斷發(fā)生時(shí),處理器將程序計(jì)數(shù)器的計(jì)算值(PC-4)保存到LR_IRQ或者LR_FIQ寄存器中。這時(shí)LR_IRQ或者LR_FIQ寄存器的值指向當(dāng)前指令后的第2條指令。參看下面幻燈片的圖解。 2008年3月21日南京大學(xué)計(jì)算機(jī)系23 IRQ、FIQ和ABT異常中斷處理程序的返回(續(xù)1)l在指令預(yù)取時(shí)如果目標(biāo)地址是非法的,該指令將被標(biāo)記成有問題的指令,處理器產(chǎn)生指令預(yù)取ABT異常。此刻PC的值還沒有更新,它指向當(dāng)前指令后的第2條指令。指令預(yù)取ABT異常中斷發(fā)生時(shí),處理器將程序計(jì)數(shù)器的計(jì)算值(PC-4)保存到異常模式LR_ABT。這時(shí)LR_ABT寄存器的值指向當(dāng)前指令后的第
13、1條指令。 2008年3月21日南京大學(xué)計(jì)算機(jī)系24 IRQ、FIQ和ABT異常中斷處理程序的返回(續(xù)2)l當(dāng)IRQ、FIQ和ABT異常中斷處理程序退出時(shí),前兩種情況下應(yīng)該執(zhí)行斷點(diǎn)的下一條指令,后一種情況下程序應(yīng)該返回到有問題的指令處(即斷點(diǎn)指令),重新讀取并執(zhí)行。無論上述三種情況的那一種,返回操作都應(yīng)該通過SUBS PC, LR, #4指令實(shí)現(xiàn)。該指令將寄存器LR中的值復(fù)制到程序計(jì)數(shù)器PC中,實(shí)現(xiàn)程序返回,同時(shí)將SPSR_SVC或者SPSR_UND寄存器的內(nèi)容復(fù)制到CPSR中。 2008年3月21日南京大學(xué)計(jì)算機(jī)系25 全部異常中斷的四種返回方式圖解 2008年3月21日南京大學(xué)計(jì)算機(jī)系26
14、 第7講重點(diǎn)l嵌入式處理器片上存儲器的用法l ARM的協(xié)處理器CP15l ARM的存儲管理單元(MMU)l ARM的存儲器保護(hù)單元l ARM處理器的Cachel ARM的快速上下文切換l ARM中斷向量表l ARM寫緩存器 l ARM異常中斷響應(yīng)處理與返回方式 2008年3月21日南京大學(xué)計(jì)算機(jī)系27 第7講 復(fù)習(xí)題與思考題l請給出幾個(gè)采用哈佛結(jié)構(gòu)分離型Cache的處理器具體案例(此題不限于嵌入式處理器)l怎樣配置ARM處理器的片上存儲器為好l試描述ARM的MMU分頁功能和處理流程l ARM的存儲器保護(hù)單元起什么作用?l ARM的CP15協(xié)處理器起什么作用?l ARM的邏輯Cache和物理Cache是怎么一回事?l ARM處理器中的寫緩存起什么作用?l請闡述ARM異常中斷向量表的結(jié)構(gòu)。 l異常處理結(jié)束后,CPU是如何返回到主程序斷點(diǎn)的? 2008年3月21日南京大學(xué)計(jì)算機(jī)系28 第3次習(xí)題布置l題1,片上存儲器的用法有哪幾種?分別用于什么場合為宜?l題2, ARM異常中斷的返回有哪幾種情況?對應(yīng)的中斷服務(wù)子程序分別要做哪些處理?