




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、CP15CP15協(xié)處理器第四章第1頁/共81頁預(yù)習(xí)檢查 什么是cache? Cache有哪兩種寫方式? MMU的功能是什么?2第2頁/共81頁本章目標(biāo) 了解ARM存儲(chǔ)器組織結(jié)構(gòu) 了解S3C2440A的cache基本工作原理 了解MMU基本工作原理,與地址映射 第3頁/共81頁本章結(jié)構(gòu)CP15協(xié)處理器協(xié)處理器協(xié)處理器協(xié)處理器CP15結(jié)構(gòu)和功能結(jié)構(gòu)和功能高速高速Cache內(nèi)存管理單元內(nèi)存管理單元MMU快速上下文切換快速上下文切換ARM存儲(chǔ)器存儲(chǔ)器第4頁/共81頁6-1 ARM存儲(chǔ)器 ARM存儲(chǔ)系統(tǒng)有非常靈活的體系結(jié)構(gòu),可以適應(yīng)不同的嵌入式應(yīng)用系統(tǒng)的需要。 ARM存儲(chǔ)器系統(tǒng)可以使用簡單的平板式地址映
2、射機(jī)制,也可以使用其他技術(shù)提供功能更為強(qiáng)大的存儲(chǔ)系統(tǒng)。提供多種類型的存儲(chǔ)器件,如FLASH、ROM、SRAM等; Caches技術(shù); 寫緩存技術(shù)(write buffers); 虛擬內(nèi)存和IO地址映射技術(shù)。第5頁/共81頁6-1 ARM存儲(chǔ)器 大多數(shù)的系統(tǒng)通過下面的方法之一實(shí)現(xiàn)對復(fù)雜存儲(chǔ)系統(tǒng)的管理。使能Cache,縮小處理器和存儲(chǔ)系統(tǒng)速度差別,從而提高系統(tǒng)的整體性能。 引入存儲(chǔ)保護(hù)機(jī)制,增強(qiáng)系統(tǒng)的安全性。引入一些機(jī)制保證將IO操作映射成內(nèi)存操作后,各種IO操作能夠得到正確的結(jié)果。 第6頁/共81頁6-1 ARM存儲(chǔ)器 8051的結(jié)構(gòu)第7頁/共81頁6-1 ARM存儲(chǔ)器 s32440的結(jié)構(gòu)第8頁
3、/共81頁6-1 ARM存儲(chǔ)器 存儲(chǔ)器的層次結(jié)構(gòu)第9頁/共81頁6-2 協(xié)處理器CP15 CPl5,即通常所說的系統(tǒng)控制協(xié)處理器(System Control Coprocesssor)。它負(fù)責(zé)完成大部分的存儲(chǔ)系統(tǒng)管理。 CacheARM內(nèi)核地址地址寫緩沖MMU或MPU數(shù)據(jù)讀數(shù)據(jù)寫數(shù)據(jù)控制邏輯控制邏輯CP15AMBA總線接口JTAG 及非AMBA信號AMBA接口第10頁/共81頁6-2 協(xié)處理器CP15 CPl5包含l6個(gè)32位寄存器,其編號為015。 CPl5中的寄存器可能是只讀的,也可能是只寫的,還有一些是可讀可寫的。在對協(xié)處理器寄存器進(jìn)行操作時(shí),需要注意以下幾個(gè)問題。 寄存器的訪問類型(
4、只讀只寫可讀可寫)。不同的訪問引發(fā)的不同功能。 相同編號的寄存器是否對應(yīng)不同的物理寄存器。 寄存器的具體作用。第11頁/共81頁6-2-1 CP15 寄存器訪問指令 通常對協(xié)處理器CPl5的訪問使用以下兩種指令 MCR:將ARM寄存器的值寫入CPl5寄存器中; MRC:將CPl5寄存器的值寫入ARM寄存器中。 指令MCR和MRC指令訪問CPl5寄存器使用通用語法MCR p15, , , , , MRC p15, , , , , 第12頁/共81頁6-2-2 CP15 中的寄存器寄存器編號 基本作用特殊用途 0 ID編號(只讀) ID和Cache類型 1 控制位 各種控制位 2 存儲(chǔ)器保護(hù)和控制
5、MMU:地址轉(zhuǎn)換表基地址MPU:Cache屬性設(shè)置 3內(nèi)存保護(hù)和控制MMU:域訪問控制MPU:寫緩存控制 4內(nèi)存保護(hù)和控制保留 5內(nèi)存保護(hù)和控制MMU:錯(cuò)誤狀態(tài)MPU:訪問權(quán)限控制 6內(nèi)存保護(hù)和控制MMU:錯(cuò)誤狀態(tài)MPU:保護(hù)區(qū)域控制 7 Cache和寫緩存Cache和寫緩存控制 8內(nèi)存保護(hù)和控制MMU:TLB控制MPU:保留 9 Cache和寫緩存Cache鎖定 10內(nèi)存保護(hù)和控制MMU:TLB鎖定MPU:保留 11保留保留 12保留保留 13進(jìn)程ID進(jìn)程ID 14保留保留 15芯片生產(chǎn)廠商定義芯片生產(chǎn)廠商定義第13頁/共81頁6-2-3 寄存器C0操作碼操作碼 opcode2opcode2
6、對應(yīng)的標(biāo)識(shí)符寄存器對應(yīng)的標(biāo)識(shí)符寄存器0b0000b000主標(biāo)識(shí)符寄存器主標(biāo)識(shí)符寄存器Ob001Ob001 CacheCache類型寄存器類型寄存器其他其他保留保留寄存器c0包含的是ARM本身或芯片生產(chǎn)廠商的一些標(biāo)識(shí)信息。當(dāng)使用MRC指令讀c0寄存器時(shí),根據(jù)第二個(gè)操作碼opcode2的不同,讀出的標(biāo)識(shí)符也是不同的。第14頁/共81頁6-2-3 寄存器C0由生產(chǎn)商決定(Implementor)產(chǎn)品子編號 (Varimant) Arm系統(tǒng)版本號 (Architecture) 產(chǎn)品主編號 (Primary Part Number)處理器版本型號 (Revision)主標(biāo)識(shí)符寄存器 當(dāng)協(xié)處理器指令對CP
7、l5進(jìn)行操作,并且操作碼0pcode2時(shí),處理器的主標(biāo)識(shí)符將被讀出。從主標(biāo)識(shí)符中,可以確定ARM體系結(jié)構(gòu)的版本型號。 如果bit15:12為0 x0,說明處理器是ARM7之前的處理器; 如果bit15:12為0 x7,說明處理器為ARM7處理器; 如果bit15:12為其他值,說明處理器為ARM7之后的處理器。bit31:24:生產(chǎn)廠商的編號30 24 23 20 19 16 15 4 3 0第15頁/共81頁6-2-3 寄存器C0Cache類型標(biāo)識(shí)符寄存器 對于指令MRC來說,當(dāng)協(xié)處理器寄存器為r0,而第二操作數(shù)opcode2為0b001時(shí),指令讀取值為Cache類型,即可以將處理器的Cac
8、he類型標(biāo)識(shí)符寄存器的內(nèi)容讀取到寄存器r0中。MCR P15 ,0,r0,c0,c0,1第16頁/共81頁6-2-3 寄存器C0Cache類型標(biāo)識(shí)符寄存器 Cache類型標(biāo)識(shí)符定義了關(guān)于Cache的信息 系統(tǒng)中的數(shù)據(jù)Cache和指令Cache是分開的還是統(tǒng)一的。Cache的容量、塊大小以及相聯(lián)特性。 Cache類型是直(writethrough)寫還是回寫(writeback)。 對于回寫(writeback)類型的Cache如何有效清除Cache內(nèi)容。 Cache是否支持內(nèi)容鎖定。第17頁/共81頁6-2-3 寄存器C0000屬性字段 S 數(shù)據(jù)Cache相關(guān)屬性數(shù)據(jù)Cache相關(guān)屬性Cach
9、e類型標(biāo)識(shí)符寄存器編碼格式Cache類型標(biāo)識(shí)符定義了關(guān)于Cache的信息:31 29 28 25 24 23 12 11 0第18頁/共81頁6-2-4 寄存器C1SBZP/UNPL4RRVIZFRSBLDPWCAMCPl5中的寄存器C1包括以下控制功能:禁止使能MMU以及其他與存儲(chǔ)系統(tǒng)有關(guān)的功能;配置存儲(chǔ)系統(tǒng)以及刪處理器中相關(guān)的工作。31 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0第19頁/共81頁6-3 高速緩沖存儲(chǔ)器CacheCache存儲(chǔ)器是一個(gè)容量小但存取速度非常快的存儲(chǔ)器它保存最近用到的存儲(chǔ)器數(shù)據(jù)拷貝。對于程序員來說,Cache是透明的。它自動(dòng)
10、決定保存哪些數(shù)據(jù)、覆蓋哪些數(shù)據(jù)?,F(xiàn)在Cache通常與處理器在同一芯片上實(shí)現(xiàn)。Cache能夠發(fā)揮作用是因?yàn)槌绦蚓哂芯植啃蕴匦浴?第20頁/共81頁6-3 高速緩沖存儲(chǔ)器Cache謂局部性就是指,在任何特定的時(shí)間,微處理器趨于對相同區(qū)域的數(shù)據(jù)(如堆棧)多次執(zhí)相同的指令(如循環(huán))。Cache經(jīng)常與寫緩存器(write buffer)一起使用。通過引入Cache和寫緩存區(qū),存儲(chǔ)系統(tǒng)的性能得到了很大的提高,但同時(shí)也帶來了一些問題。第21頁/共81頁6-3 高速緩沖存儲(chǔ)器Cache位于處理器中的少量高速緩沖存儲(chǔ)器, 保存最近被訪問的存儲(chǔ)空間內(nèi)容的備份哪些存儲(chǔ)空間需要讀入到cache中,要通過MMU 或 M
11、PU來控制依賴于內(nèi)存的重使用僅用來改善速度較慢的存儲(chǔ)器或總線寬度較窄的存儲(chǔ)器的性能降低對總線寬度的要求減少功耗外部存儲(chǔ)器CPUCache地址數(shù)據(jù)總線接口第22頁/共81頁6-3-1 Cache的分類統(tǒng)一Cache。指令和數(shù)據(jù)用同一個(gè)Cache 第23頁/共81頁6-3-1 Cache的分類指令和數(shù)據(jù)分開的Cache。有時(shí)這種組織方式也被稱為改進(jìn)的哈佛結(jié)構(gòu)。第24頁/共81頁6-3-2 Cache的性能衡量只有當(dāng)所需要的Cache存儲(chǔ)器內(nèi)容已經(jīng)在Cache時(shí),微處理器才能以高時(shí)鐘速率工作,因此,系統(tǒng)的總體性能就可以用存儲(chǔ)器訪問中命中Cache的比例來衡量。當(dāng)要訪問的內(nèi)容在Cache時(shí)稱為命中(h
12、it),而要訪問的內(nèi)容不在Cache時(shí)稱為未命中(miss)。在給定時(shí)間間隔內(nèi),Cache命中的次數(shù)與總的存儲(chǔ)器請求次數(shù)的比值被稱為命中率。命中率用下面的公式進(jìn)行計(jì)算:命中率=(Cache命中次數(shù)/存儲(chǔ)器請求次數(shù))*100%第25頁/共81頁6-3-3 Cache的工作原理 Cache的基本存儲(chǔ)單元為Cache行(Cache line)。存儲(chǔ)系統(tǒng)把Cache和主存儲(chǔ)器都劃分為相同大小的行。Cache與主存儲(chǔ)器交換數(shù)據(jù)是以行為基本單位進(jìn)行的。每一個(gè)Cache行都對應(yīng)于主存中的一個(gè)存儲(chǔ)塊(memory block)Cache行的大小通常是2L字節(jié)。通常情況下是16字節(jié)(4個(gè)字)和32字節(jié)(8個(gè)字)
13、。如果Cache行的大小為2L字節(jié),那么對主存的訪問通常是2L字節(jié)對齊的。對于一個(gè)虛擬地址來說,它的bit31 :L ,是Cache行的一個(gè)標(biāo)識(shí)。當(dāng)CPU發(fā)出的虛擬地址的bit31:L和Cache中的某行bit31:L相同,那么Cache中包含CPU要訪問的數(shù)據(jù),即成為一次Cache命中。 第26頁/共81頁6-3-3 Cache的工作原理第27頁/共81頁6-3-3 Cache的工作原理數(shù)據(jù)以每次傳送一行的方式復(fù)制到cache 中每個(gè)cache行包含連續(xù)的數(shù)據(jù)Cache行按其自然的行邊界尺寸分配Cache中的數(shù)據(jù)一旦被獲取后,立即對內(nèi)核有效在一個(gè)cache 讀操作不命中后,將激發(fā)cache
14、行內(nèi)容的填充但新數(shù)據(jù)應(yīng)放在cache 的什么位置?ARM 處理器支持以下置換策略中的一個(gè)或多個(gè):隨機(jī), 循環(huán)輪換 輪換指針指向下一個(gè)要填充的cache 行已經(jīng)使用過的行將被收回和替換對回寫數(shù)據(jù)cache而言, 任何改過的數(shù)據(jù)都要寫到存儲(chǔ)器中第28頁/共81頁6-3-4 Cache與主存的關(guān)系 在Cache中采用地址映射將主存中的內(nèi)容映射到Cache地址空間。 具體的說,就是把存放在主存中的程序按照某種規(guī)則裝入到Cache中,并建立主存地址到Cache地址之間的對應(yīng)關(guān)系。而地址變換是指當(dāng)程序已經(jīng)裝入到Cache后,在實(shí)際運(yùn)行過程中,把主存地址變換成Cache地址。 地址的映射和變換是密切相關(guān)的。
15、采用什么樣的地址映射方法,就必然有與之對應(yīng)的地址變換。 直接映射和變換方式組相聯(lián)映射和變換方式以及 全相聯(lián)和變換方式。 第29頁/共81頁6-3-4 Cache與主存的關(guān)系 直接映射(direct-mapped)方式。直接映射是一種最簡單,也是最直接的映射方式。主存中的每個(gè)地址都對應(yīng)Cache存儲(chǔ)器中惟一的一行。由于主存的容量遠(yuǎn)遠(yuǎn)大于Cache存儲(chǔ)器,所以在主存中很多地址被映射到同一個(gè)Cache行。 如果程序同時(shí)用到對應(yīng)于Cache同一主存行的兩個(gè)主存塊,那么就會(huì)發(fā)生沖突,沖突的結(jié)果是導(dǎo)致Cache行的頻繁變換。這種由直接映射導(dǎo)致的Cache存儲(chǔ)器中的軟件沖突稱為顛簸(thrashing)問題
16、。 第30頁/共81頁6-3-4 Cache與主存的關(guān)系主存儲(chǔ)器0 x00000 x00100 x00200 x00300 x00400 x00500 x00600 x00700 x00800 x0090Cache00.0110010 x006400tagindex word地址tag ram數(shù)據(jù)=第31頁/共81頁6-3-4 Cache與主存的關(guān)系 為了減少顛簸問題,有些Cache使用了組相聯(lián)的映射策略。在組相聯(lián)的地址映射和變換中,把主存和Cache按同樣大小劃分成組(set),每個(gè)組都由相同的行數(shù)組成。 從主存的組到Cache的組之間采用直接映射方式。主存中的一組與Cache中的一組之間建
17、立了之間映射方式后,在兩個(gè)對應(yīng)的組內(nèi)部采用全相聯(lián)映射方式。 在ARM中采用的是組相聯(lián)的地址映射和變換方式。 如果Cache的行大小為2L,則同一行中各地址的bit31:L是相同的。如果Cache中組的大小(每組中包含的行數(shù))為2S,則虛地址位bitL+S:L用于選擇Cache中的某個(gè)組。 第32頁/共81頁6-3-4 Cache與主存的關(guān)系 2路組相聯(lián)的Cache主存儲(chǔ)器0 x00000 x00100 x00200 x00300 x00400 x00500 x00600 x00700 x00800 x0090Way 0Way 1Set 02-Way, 4 Sets?數(shù)據(jù)=tagindex=ta
18、gindexWay 0Way 1目標(biāo)計(jì)數(shù)器n替換策略:n隨機(jī)n循環(huán)第33頁/共81頁6-3-4 Cache與主存的關(guān)系 4路組相聯(lián)的CacheDecoderDecoderDecoder31 10 9 5 4 2 1 0Cache 行53注:每一個(gè)地址索引映射到一個(gè)cache 行,該行可存于4組的任意一組中(4組相聯(lián))存于 TAG中的地址 (22 位)IndexWordUnusedDataway 0TAGLine 0Line 1Line 30Line 31這里是一個(gè)4k cache 的例子: 4 組x 32 lines x 8 words = 4kb cacheDecodervd0d1v- 有效
19、位 d0,d1 臟位01234567d0 d1第34頁/共81頁6-3-4 Cache與主存的關(guān)系 隨著Cache控制器的相聯(lián)度的提高,沖突的可能性減少了。 提高組相聯(lián)程度,使主存地址能夠映射到任意Cache行。這樣的Cache被稱為全相聯(lián)Cache。 硬件設(shè)計(jì)者提高Cache相聯(lián)度的一種方法就是使用內(nèi)容尋址寄存器CAM(ContentAddressable Memory)。 CAM使用一組比較器,以比較輸入的標(biāo)簽地址和存儲(chǔ)在每一個(gè)有效Cache行中的標(biāo)簽位。 CAM采取了與RAM相反的工作方式:RAM在得到一個(gè)地址后再給出數(shù)據(jù),而CAM則是在檢測到給定的數(shù)據(jù)值在存儲(chǔ)器中后,再給出該數(shù)據(jù)的地址
20、。 使用CAM允許同時(shí)比較更多的地址中的標(biāo)簽位,從而增加了可以包含在一組的Cache行數(shù)。 第35頁/共81頁6-3-4 Cache與主存的關(guān)系 全相聯(lián)的Cache第36頁/共81頁6-3-5 Cache的寫策略 直寫():如果位置在cache之內(nèi), cache 將被更新. 數(shù)據(jù)也通過寫緩沖送至存儲(chǔ)器. 回寫: 如果位置在cache之內(nèi),只有 cache 被更新. 注: 如果數(shù)據(jù)位置不在cache之內(nèi), 數(shù)據(jù)將被直接寫到存儲(chǔ)器中。如果存儲(chǔ)器是可cache或可緩沖的,寫緩沖將被使用 。CPUCacheWrite BufferAccess Mode 0Non cacheable, non buff
21、erable0GCd GBd0Non cacheable, bufferable11WT, Write Through01WB, Write Back1ExternalMemory訪問模式 0非 cache, 非緩沖0GCd GBd0非 cache, 可緩沖11WT, 直寫01WB, 回寫1CPUCache寫緩沖外部存儲(chǔ)器wbwt第37頁/共81頁6-3-5 Cache的寫策略 直寫與回寫的比較 如果位置在cache之內(nèi), cache 將被更新. 數(shù)據(jù)也通過寫緩沖送至存儲(chǔ)器.寫策略寫策略直寫法直寫法回寫法回寫法可靠性可靠性 高低與主存的通信量與主存的通信量多少控制的復(fù)雜性控制的復(fù)雜性簡單復(fù)雜硬
22、件實(shí)現(xiàn)代價(jià)硬件實(shí)現(xiàn)代價(jià)大小第38頁/共81頁6-3-6 Cache的替換策略 在Cache訪問過程中,發(fā)現(xiàn)查找的Cache行已經(jīng)失效,則需要從主存中調(diào)入新的行到Cache中。 在采用組相聯(lián)的Cache中,一個(gè)來自主存的行可以放入多個(gè)Cache組中。當(dāng)所有組中的對應(yīng)行都已經(jīng)裝滿時(shí),就要使用Cache替換算法, Cache控制器選擇下一個(gè)丟棄Cache行的策略被稱為替換策略。在ARM常用的替換算法有兩種: 輪轉(zhuǎn)算法 隨機(jī)替換算法。 第39頁/共81頁6-3-6 Cache的替換策略 在常見ARM核使用的替換策略內(nèi)核寫策略替換策略ARM720T直寫法隨機(jī)ARM740T直寫法隨機(jī)ARM920T直寫法、
23、回寫法隨機(jī)、輪轉(zhuǎn)ARM940T直寫法、回寫法隨機(jī)ARM926EJ-S直寫法、回寫法隨機(jī)、輪轉(zhuǎn)ARM946E直寫法、回寫法隨機(jī)、輪轉(zhuǎn)ARMl020E直寫法、回寫法隨機(jī)、輪轉(zhuǎn)ARMl 026EJS直寫法、回寫法隨機(jī)、輪轉(zhuǎn)Intel Stong ARM回寫法輪轉(zhuǎn)Intel XSCale直寫法輪轉(zhuǎn)第40頁/共81頁6-3-7 Cache相關(guān)的編程接口 與Cache編程相關(guān)的CPl5的寄存器共有3個(gè),它們分別為Cl、C7及C9。 第41頁/共81頁6-3-7 Cache相關(guān)的編程接口 C1中與Cache相關(guān)的位 相關(guān)位作用C(bit2)當(dāng)數(shù)據(jù)Cache和指令Cache分開時(shí),本控制位禁止使能數(shù)據(jù)Cach
24、e當(dāng)數(shù)據(jù)Cache和指令Cache統(tǒng)一時(shí),本控制位禁止使能整個(gè)Cache 0:禁止Cache 1:使能Cache如果系統(tǒng)中不含Cache,讀取時(shí)該位返回0,寫入時(shí)忽略該位當(dāng)系統(tǒng)中Cache不能禁止時(shí),讀取返回l,寫入時(shí)忽略該位I(bit12)當(dāng)數(shù)據(jù)Cache和指令Cache分開時(shí),本控制位禁止使能數(shù)據(jù)Cache0:禁止Cache1:使能Cache如果系統(tǒng)使用統(tǒng)一的指令Cache和數(shù)據(jù)Cache或者系統(tǒng)中不含Cache,讀取時(shí)該位返回0,寫入時(shí)忽略該位當(dāng)系統(tǒng)中Cache不能禁止時(shí),讀取返回l,寫入時(shí)忽略該位RR(bit14)如果系統(tǒng)中Cache的淘汰算法可以選擇的話,本控制位選擇淘汰算法 0:選
25、擇常規(guī)的淘汰算法,如隨機(jī)淘汰算法RR(bit14) ;1:選擇預(yù)測性的淘汰算法,如輪轉(zhuǎn)(round-robin)淘汰算法;如果系統(tǒng)中淘汰算法不可選擇,寫入該位時(shí)被忽略,讀取該位時(shí),根據(jù)其淘汰算法可以簡單地預(yù)測最壞情況,并返回1或者0第42頁/共81頁6-3-7 Cache相關(guān)的編程接口 CPl5中的寄存器c7主要用于控制Cache和寫緩存。 c7是一個(gè)只寫存儲(chǔ)器,可以使用協(xié)處理器指令MCR對其進(jìn)行操作。如果程序中包含讀c7的操作,那么指令的結(jié)果不可預(yù)知。第43頁/共81頁6-3-8 內(nèi)存一致性 當(dāng)一個(gè)系統(tǒng)中同時(shí)使用了Cache、寫緩存時(shí),同一地址的數(shù)據(jù)可能同時(shí)出現(xiàn)在包括系統(tǒng)內(nèi)存在內(nèi)的多個(gè)不同的
26、物理位置中。如果Cache引入了哈佛架構(gòu),使用數(shù)據(jù)和指令分類的Cache,那情況將更復(fù)雜。 由于上述存儲(chǔ)系統(tǒng)的多樣性特點(diǎn),當(dāng)從內(nèi)存中讀取數(shù)據(jù)時(shí),不能保證讀取的是數(shù)據(jù)的最新值(即有可能出現(xiàn)下述情況:寫操作將數(shù)據(jù)寫入到Cache中,但更新數(shù)據(jù)還沒有被回寫到內(nèi)存)。 ARM存儲(chǔ)系統(tǒng)中,數(shù)據(jù)不一致問題一方面可以通過存儲(chǔ)系統(tǒng)自動(dòng)保證解決,另一方面編寫程序時(shí)要遵循一定的規(guī)則,防止數(shù)據(jù)不一致性發(fā)生。第44頁/共81頁6-3-8 內(nèi)存一致性 地址映射發(fā)生的變換 如果數(shù)據(jù)Cache為寫回型Cache,清空該數(shù)據(jù)Cache。使數(shù)據(jù)Cache中相應(yīng)的行無效。 使指令Cache中相應(yīng)的行無效。 將寫緩存區(qū)中被延時(shí)的操
27、作全部執(zhí)行。 有些情況可能還要求相關(guān)的存儲(chǔ)區(qū)域被置換成非緩存的。 第45頁/共81頁6-3-8 內(nèi)存一致性 當(dāng)系統(tǒng)中采用分離的數(shù)據(jù)Cache和指令Cache時(shí) 對于使用數(shù)據(jù)和指令分離Cache的系統(tǒng),使指令Cache的內(nèi)容無效。 對于使用數(shù)據(jù)和指令分離Cache的系統(tǒng),如果數(shù)據(jù)Cache是寫回類型的,清空數(shù)據(jù)Cache。 第46頁/共81頁6-3-8 內(nèi)存一致性 DMA造成的數(shù)據(jù)不一致 將DMA訪問的存儲(chǔ)器設(shè)置成非緩存的 將DMA訪問的存儲(chǔ)區(qū)所涉及的數(shù)據(jù)Cache中的行設(shè)置成無效,或者清空數(shù)據(jù)Cache。 清空寫緩存區(qū)(將寫緩存區(qū)中延時(shí)操作全部執(zhí)行)。 在DMA訪問期間限制存儲(chǔ)器訪問DMA所訪
28、問的存儲(chǔ)區(qū)域。第47頁/共81頁階段總結(jié) ARM處理器支持多種類型存儲(chǔ)器,具備復(fù)雜的管理和控制能力 系統(tǒng)控制協(xié)處理器CP15,負(fù)責(zé)完成大部分系統(tǒng)存儲(chǔ)管理 Cache的工作原理 Cache的性能 Cache與主存的關(guān)系 Cache的寫策略Cache的替換策略 內(nèi)存一致性第48頁/共81頁64 存儲(chǔ)管理單元MMU MMU(Memory Management Unit) MMU提供的一個(gè)關(guān)鍵服務(wù)是使各個(gè)任務(wù)作為各自獨(dú)立的程序在其自己的私有存儲(chǔ)空間中運(yùn)行。 MMU提供了一些資源以允許使用虛擬存儲(chǔ)器(將系統(tǒng)物理存儲(chǔ)器重新編址,可將其看成一個(gè)獨(dú)立于系統(tǒng)物理存儲(chǔ)器的存儲(chǔ)空間)。存儲(chǔ)器有兩種類型的地址:虛擬地
29、址和物理地址。虛擬地址由編譯器和連接器在定位程序時(shí)分配;物理地址用來訪問實(shí)際的主存硬件模塊(物理上程序存在的區(qū)域)。第49頁/共81頁6-4-1 MMU概述 內(nèi)存管理單位MMU,對處理器內(nèi)存管理主要是通過一個(gè)叫作傳輸表的數(shù)據(jù)結(jié)構(gòu)來實(shí)現(xiàn)的。 這個(gè)傳輸表存在于內(nèi)存中,它有多個(gè)稱為Entry的入口。 每個(gè)入口定義了存儲(chǔ)空間的一個(gè)頁,頁的大小從lKB到1MB,同時(shí)定義了這些頁的屬性 第50頁/共81頁6-4-1 MMU概述 ARM系統(tǒng)中,MMU主要完成以下工作: 虛擬存儲(chǔ)空間到物理存儲(chǔ)空間的映射; 存儲(chǔ)器訪問權(quán)限的控制; 設(shè)置虛擬存儲(chǔ)空間的緩存特性。第51頁/共81頁6-4-1 MMU概述 從虛擬地址
30、到物理地址的變換過程是查詢傳輸表的過程 ARM結(jié)構(gòu)體系中采用一個(gè)容量更小、訪問速度和CPU中通用寄存器相當(dāng)?shù)拇鎯?chǔ)器件來存放當(dāng)前訪問需要的地址變換條目,它是一個(gè)小容量的Cache。 這個(gè)小容量的頁表Cache稱為TLB(Translation Lookaside Buffer)。 第52頁/共81頁6-4-1 MMU概述 MMU可以將整個(gè)存儲(chǔ)空間分為最多16個(gè)域(domain)。每個(gè)域?qū)?yīng)一定的內(nèi)存區(qū)域。 MMU中寄存器c3用于控制與域有關(guān)的屬性配置。 第53頁/共81頁6-4-1 MMU概述 從內(nèi)存管理單元 控制存儲(chǔ)器的訪問權(quán)限 將虛擬地址轉(zhuǎn)換為物理地址 MMU 的組成 后備變換緩沖器 (TL
31、B) 最近用于頁變換的cache 頁表浮動(dòng)硬件邏輯 更新 TLB 訪問控制邏輯 如果MMU 被禁用了 外部地址總線將直接輸出虛擬地址第54頁/共81頁6-4-1 MMU概述 與MMU有關(guān)的協(xié)處理器寄存器及其作用 協(xié)處理器寄存器協(xié)處理器寄存器作用作用c1中某些位中某些位配置配置MMU中的一些操作中的一些操作c2保存內(nèi)存中頁表基地址保存內(nèi)存中頁表基地址c3設(shè)置域訪問權(quán)限設(shè)置域訪問權(quán)限c4保留保留c5內(nèi)存訪問失效狀態(tài)標(biāo)準(zhǔn)內(nèi)存訪問失效狀態(tài)標(biāo)準(zhǔn)c6內(nèi)存訪問失效時(shí)失效地址內(nèi)存訪問失效時(shí)失效地址c8控制與清除控制與清除TLB內(nèi)容相關(guān)的操作內(nèi)容相關(guān)的操作clO控制與鎖定控制與鎖定TLB內(nèi)容相關(guān)的操作內(nèi)容相關(guān)的
32、操作第55頁/共81頁6-4-2 MMU與MPU 在ARM體系結(jié)構(gòu)中,MMU將MPU的功能大大地增加,使系統(tǒng)內(nèi)存管理更加靈活、方便。 MMU還增加了虛擬地址到物理地址的映射。 使用MMU中虛擬地址到物理地址的映射功能,即使任務(wù)被編譯、連接、運(yùn)行在主存中有重疊地址的區(qū)域中,它們?nèi)匀豢梢赃\(yùn)行。第56頁/共81頁6-4-3 內(nèi)存的訪問過程 當(dāng)處理器產(chǎn)生一個(gè)內(nèi)存訪問請求時(shí),將傳輸一個(gè)虛擬地址給MMU MMU首先遍歷TLB(如果使用分離的存儲(chǔ)系統(tǒng),它將分別遍歷數(shù)據(jù)TLB和指令TLB)。 如果TLB中不保護(hù)虛擬地址入口(Entry),那么它將轉(zhuǎn)入保存在內(nèi)存中的傳輸主表,來獲得所有訪問地址的物理地址和訪問權(quán)
33、限。 一旦訪問成功,它將新的虛擬地址入口(Entry)信息保存在TLB中,以備下次查詢使用。第57頁/共81頁6-4-3 內(nèi)存的訪問過程保護(hù) & 中止虛擬存儲(chǔ)器物理存儲(chǔ)器 變換和校驗(yàn)機(jī)制.Process CProcess BProcess AManagerProcess DMMURAMRAMVRAMROMRAMRAMRAM變換表I TLBD TLB第58頁/共81頁6-4-4 MMU的使能與禁止 MMU的使能禁止可以通過CPl5寄存器的cl的bit0來控制。 bit0=0,MMU禁止。 bit0=1,MMU使能。 當(dāng)MMU被禁止時(shí),存儲(chǔ)訪問執(zhí)行下列過程。 存儲(chǔ)系統(tǒng)是否支持Cache和寫
34、緩存,根據(jù)不同芯片設(shè)計(jì)不同而有所不同(ARM公司將設(shè)計(jì)權(quán)交給芯片廠商)。 如果芯片規(guī)定當(dāng)禁止MMU時(shí)禁止Cache和寫緩存,則存儲(chǔ)訪問 如果芯片規(guī)定禁止MMU時(shí)使能Cache和寫緩存,則數(shù)據(jù)訪問被視為無Cache (uncachable)和寫緩存(unbufferable)的,即C=0、B=0。讀取指令時(shí),如果系統(tǒng)是統(tǒng)一的TLB,則C=0;如果使用分開的TLB,則C=1。 存儲(chǔ)訪問不受權(quán)限控制,MMU也不會(huì)產(chǎn)生存儲(chǔ)訪問中止信號。 所有物理地址和虛擬地址相等,即使用平板存儲(chǔ)模式。第59頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 為了使任務(wù)有各自的虛擬存儲(chǔ)器映射,MMU硬件采用地址重定位.
35、在地址訪問主存之前,轉(zhuǎn)換處理器輸出的虛擬地址。 當(dāng)處理器產(chǎn)生一個(gè)虛擬地址時(shí),MMU取出這個(gè)虛擬地址的高位,遍歷傳輸表,從而形成一個(gè)物理地址。 虛擬存儲(chǔ)空間到物理存儲(chǔ)空間的映射是以內(nèi)存塊為單位進(jìn)行的。第60頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 變換過程由硬件完成,對用戶是透明的 變換表由軟件產(chǎn)生檢查TLB是否包含該虛擬地址虛擬地址得到物理地址頁表浮動(dòng)得到物理地址是否更新 TLB第61頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 ARM支持的存儲(chǔ)塊的大小有以下幾種段(Sections):大小為lM的存儲(chǔ)塊。 大頁(Large pages):大小為64KB。 小頁(Small pag
36、es):大小為4KB。 極小頁(Tiny Pages):大小為lKB。第62頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 ARM在內(nèi)存中存在兩級頁表以實(shí)現(xiàn)上述地址映射過程。 一級頁表: 一級頁表包括兩種類型的頁表項(xiàng),即保持指向二級頁表起始地址的頁表項(xiàng)和保存用于轉(zhuǎn)換段(Section)地址的頁表項(xiàng)。一級頁表也稱為段頁表(section page table)。二級頁表: 二級頁表包含以大頁和小頁為單位的地址變換頁表項(xiàng)。第63頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 第一級變換頁表 虛擬地址 第一級頁表項(xiàng) 物理地址 段索引段基地址1AP域CB1 0段基地址313029282726252
37、423222120191817161514131211109876543210段索引索引進(jìn)入第一級頁表+TTB第64頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 一級頁表項(xiàng)是轉(zhuǎn)換表中的一個(gè)條目,它可以是: 一個(gè)錯(cuò)誤 一個(gè)段描述 一個(gè)粗略的或細(xì)致的頁描述 段描述指針指向1Mb 的段物理空間,包括訪問權(quán)限和可cache和可緩沖的控制位 如果第一級取返回的是一個(gè)頁描述,這將提供第二級描述表的基地址粗略頁表錯(cuò)誤詳細(xì)頁表段313029282726252423222120191817161514131211109876543210段基地址1AP域選擇CB 1 0粗略的第二級描述基地址1域選擇0 1詳細(xì)
38、的第二級描述基地址1域選擇1 10 0第65頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 虛擬地址第一級轉(zhuǎn)換頁表CBDomain SelectorAP0 x00011 0CBDomain SelectorAP0 x00211 0CBDomain SelectorAP0 xFFC11 0CBDomain SelectorAP0 xFFF11 0CBDomain SelectorAP0 xFFF11 0CBDomain SelectorAP0 xFFF11 0CBDomain SelectorAP0 xFFF11 00 x002 000000 x003 000000 x004 000000 x
39、001 000000 x005 000000 x006 000000 xFFF 000000 xFFE 000000 xFFD 000000 xFFC 00000物理地址 4096 項(xiàng) 1 MB 段 1 MB 段 錯(cuò)誤0 x001 000000 x003 000000 x004 000000 x002 000000 x005 000000 x006 000000 xFFF 000000 xFFE 000000 xFFD 000000 xFFC 000000 x000 000000 x000 000000 00 0Fine Table Base11 1Domain SelectorCoarse
40、Table Base10 1Domain Selector粗略第二級轉(zhuǎn)換頁表細(xì)致第二級轉(zhuǎn)換頁表第66頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 第二級地址變換 虛擬地址 物理地址313029282726252423222120191817161514131211109876543210頁索引索引進(jìn)入第一級頁表第一級頁表項(xiàng) 第二級頁表項(xiàng) 頁索引大頁/小頁/微頁基地址索引進(jìn)入第二級頁表大頁/小頁/微頁基地址x xC BAP粗略/細(xì)致第二級描述基地址1頁x 1+TTB+第67頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 第二級描述保存的是大頁,小頁的基地址位 1:0 代表訪問類別 微頁只支
41、持詳細(xì)頁表 加入微頁是為了改善存儲(chǔ)器以用于更高級的文件分段系統(tǒng)大頁錯(cuò)誤微頁小頁313029282726252423222120191817161514131211109876543210大頁基地址0 10 0AP3AP2AP1AP0CB小頁基地址CB1 0AP3 AP2AP1AP0微頁基地址1 1CBAP第68頁/共81頁6-4-5 虛擬地址到物理地址的轉(zhuǎn)換 第二級變換頁表第二級轉(zhuǎn)換頁表CBAP3Large Page Base0 1AP2AP1AP00 0CBAP3Small Page Base1 0AP2AP1AP01 1CBTiny Page Base1 1APCBAP3Small Page Base1 0AP2AP1AP0CBAP3Large Page Base0 1AP2AP1AP00 0 粗略頁表 - 256 項(xiàng) 細(xì)致頁表 - 1024 項(xiàng)微頁1024頁1kB大頁16頁64kB大頁16 頁64kB小頁256 頁4kB小頁256頁4kB錯(cuò)誤第69頁/共81頁6-4-6 域(domain)和存儲(chǔ)器訪問權(quán)限 域指
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 佛像合同范本
- 體系合同范本
- 卷閘門承攬合同范本
- 合同標(biāo)注正規(guī)合同范本寫
- 助貸合同范本
- 古樹防雷工程合同范本
- 傳媒公司宣傳合同范本
- 廚房轉(zhuǎn)讓合同范例
- 廚師勞動(dòng)合同范例pdf
- 化工原理采購合同范本
- 一年級上冊生字卡片帶拼音組詞可打印01637
- 汽車行業(yè)集團(tuán)公司關(guān)鍵崗位崗位職責(zé)及KPI考核指標(biāo)
- 心理健康課1 漫步陽光心靈_ppt課件
- 精品紅四川大學(xué)信紙?zhí)ь^logo
- 建設(shè)項(xiàng)目職業(yè)病防護(hù)設(shè)施設(shè)計(jì)專篇編制導(dǎo)則
- C21甾體化合物 (2)
- 船舶安檢缺陷處理建議表籍國內(nèi)航行海船
- 輻照交聯(lián)電線電纜型號說明
- 雨污水管道溝槽開挖專項(xiàng)施工方案(改)
- 云南省作家協(xié)會(huì)入會(huì)申請表及說明
- 城軌道交通認(rèn)知實(shí)習(xí)任務(wù)書及指導(dǎo)書
評論
0/150
提交評論