ARM存儲系統

Download Report

Transcript ARM存儲系統

嵌入式系统教案
祥寶科技股份有限公司
2020/4/30
提纲
第五章 ARM儲存系統
1
ARM儲存系統概述
2 ARM記憶體管理單元
3 高速緩衝區和寫緩衝區
4 快速上下文切換技術
2
ARM儲存系統概述
ARM儲存系統概述
 與其他中低檔單片機不同,ARM處理器中一般都包含一個
記憶體管理部件,用於對記憶體的管理 。
 爲了適應不同的嵌入式應用, ARM儲存系統的體系結構
存在很多差別。簡單的可以使用如單片機系統中使用的平
板式地址映射機制即可;而一些複雜的系統中則可能包含
多種技術來提供功能強大的儲存系統 。
3
ARM儲存系統概述
ARM所使用的儲存系統技術
1. 系統中可能包含多種類型的記憶體件,如FLASH、ROM、
SDRAM、SRAM等;而且不同類型的記憶體件要求不同
的速度、資料寬度等 ;
2. 通過CACHE和WRITE BUFFER技術縮小處理器和儲存
系統速度差別,從而提高系統性能 ;
3. 記憶體管理單元使用記憶體映射技術實現虛擬空間到真
實空間的映射 。
4. 引入儲存保護機制,增強系統的安全性 ;
5. 引入一些機制保證I/O操作映射成記憶體操作後,各種I/O
操作能夠得到正確的結果。
4
ARM儲存系統概述
S3C44B0X記憶體組織示意圖
5
ARM記憶體管理單元
用於儲存管理的系統控制協處理寄存器 CP15
 在基於ARM的嵌入式系統中,儲存系統通常使用CP15來
完成記憶體的大部分管理工作;除了CP15之外,在具體
的儲存機制中可能還會用到其他技術如:頁表技術等 。
 CP15可以保護16個32位的寄存器,編號0-15。實際上
對於某些編號的寄存器可能對應有多個物理寄存器,在指
令中指定特定的標誌位元來區分相應的寄存器 。
6
ARM記憶體管理單元
CP15寄存器列表-1
寄存器編號
基本作用
在MMU中的作用
0
ID編碼(唯讀)
ID碼和Cache類型
1
控制位
各種控制位元
2
儲存保護和控制
地址轉換表基底位址
3
儲存保護和控制
域存取控制位元
4
儲存保護和控制
保留
5
儲存保護和控制
記憶體失效狀態
6
儲存保護和控制
記憶體失效位址
7
ARM記憶體管理單元
CP15寄存器列表-2
寄存器編號
基本作用
在MMU中的作用
7
快取記憶體和寫
緩存
儲存保護和控制
快取記憶體和寫緩存
控制
TLB控制
快取記憶體鎖定
10
快取記憶體和寫
緩存
儲存保護和控制
11
保留
12
保留
8
9
8
TLB锁定
ARM記憶體管理單元
CP15寄存器列表-3
寄存器編號
基本作用
在MMU中的作用
13
進程識別字
進程識別字
14
保留
15
因不同設計而異
9
因不同設計而異
ARM記憶體管理單元
存取CP15寄存器的指令
 存取CP15寄存器的指令有如下兩條 :
1. MCR
Register -> Coprocessor Register
2. MRC
Coprocessor Register -> Register
注意:這兩條指令只能在系統模式下執行;在用戶模式下執
行該指令將引起異常 。
10
ARM記憶體管理單元
MCR 存取CP15
 指令語法
MCR {cond} p15, <op1>, <Rd>,<CRn>,<CRm>{, <op2>}
MCR2
p15, <op1>, <Rd>,<CRn>,<CRm>{, <op2>}
 OP1爲輔助運算器將執行的操作的代碼。對於CP15來說,
該值必須爲 0;
 Rd爲源寄存器,其值將被傳送到輔助運算器中;該寄存
器不能爲PC ;
 CRn是輔助運算器的目標寄存器,可以是C0-15 ;是附加
的目標寄存器或源運算元寄存器,用於區分同一編號的不
同物理寄存器,當指令中不需要附加資訊時要將C0指定
爲CRm ;
 OP2也提供附加資訊,用於區分同一編號的不同物理寄存
器,當指令中不需要附加資訊時,可以省略或者將其置0 。
11
ARM記憶體管理單元
MCR存取CP15示例
MCR
P15, 0, R4, C1, C0, 0
 上述指令從ARM寄存器R4中將資料傳送到輔助運算器
CP15的寄存器C1中。其中R4爲ARM寄存器,存放源運
算元;C1和C0爲輔助運算器寄存器,爲目標寄存器;操
作碼1爲0,操作碼附加資訊也爲0 。
12
ARM記憶體管理單元
MRC存取CP15
 指令语法
MRC {cond} p15, <op1>, <Rd>,<CRn>,<CRm>{, <op2>}
MRC2
p15, <op1>, <Rd>,<CRn>,<CRm>{, <op2>}
 OP1爲輔助運算器將執行的操作的代碼。對於CP15來說,
該值必須爲0 ;
 Rd爲目標寄存器,指令處理的結果將存放在該寄存器中 ;
 CRn是輔助運算器寄存器,存放第一個源運算元 ;
 CRm是附加的源運算元寄存器,用於區分同一編號的不
同物理寄存器,當指令中不需要附加資訊時要將C0指定
爲CRm ;
 OP2也提供附加資訊,用於區分同一編號的不同物理寄存
器,當指令中不需要附加資訊時,可以省略或者將其置0
。
13
ARM記憶體管理單元
儲存管理單元MMU的作用
 實現虛擬位址空間到物理儲存空間的映射 ;
 記憶體存取許可權的控制 ;
 設置虛擬儲存空間的緩衝特性。
頁表是實現上述功能的一個重要手段,它實際上是位於記
憶體中的一個對照表。
14
ARM記憶體管理單元
記憶體單元的段頁式管理
 爲了實現不同層次的管理,系統提供了基於段或頁的記
憶體存取方式
1. 段(section):由1MB 的記憶體塊構成
2. 大頁(large page):由64KB 的記憶體塊構成
3. 小頁(small page):由4KB 的記憶體塊構成
4. 微頁(tiny page):由1KB 的記憶體塊構成
15
ARM記憶體管理單元
用於儲存管理的頁表
 地址變換條目:頁表的每一行對應與虛擬位址空間的一個
頁,該行同時保含了該虛擬記憶體頁對應的實體記憶體頁
的地址、該頁的存取許可權以及緩衝特性等。我們將頁表
中的一行稱爲地址變換條目 。
 頁表存放在記憶體中,系統通常有一個寄存器來保存頁表
的基底位址。ARM系統中使用的就是CP15的寄存器C2。
 快表:從虛擬位址到物理位址的轉換實際上就是查詢頁表
的過程。由於程式在執行過程中具有局部性,即在一段時
間內只是局限在少數幾個單元,爲了加快頁表的查詢速度,
在系統中通常使用一個容量更小、速度更快的記憶體件來
保存當前需要存取的位址變換條目,這個容量小的頁表又
稱作快表(TLB)。
16
ARM記憶體管理單元
快表的使用
 更新:當CPU需要存取記憶體時,首先在TLB中查找需要
的位址變換條目。若不存在則在記憶體頁表中查詢,並把
查詢的結果添加到TLB中 。
 清除:當記憶體中頁表的內容改變或者使用新的頁表時,
TLB中的內容需要清空。CP15的寄存器8用於完成該功能 。
 鎖定:可以將一個位址變換條目鎖定在TLB中,以加快存
取速度,CP15的寄存器10用於完成該功能 。
17
ARM記憶體管理單元
域(domain)管理
 域是段、大頁和小頁的集合。ARM 結構支援16 個域。對
域的存取由域存取控制寄存器( CP15的寄存器3 )的兩
個位欄位控制。因爲每個欄位對存取對應的域的使能非
常迅速,所以整個記憶體區間能很快地交換進出虛擬記
憶體。這裏支援2 種域存取方式
1. 客户:域的用戶(執行程式,存取資料),被形成這個
域的節或頁來監督存取許可權 。
2. 管理者:控制域的行爲(域中的當前段和頁,對域的存
取),不被形成這個域的段或頁來監督存取許可權 。
 一個程式可以是一些域的客戶,也是另外一些域的管理
者,同時沒有對其他域的存取許可權。這允許對程式存
取不同記憶體資源的非常靈活的記憶體保護。
18
ARM記憶體管理單元
記憶體存取失效管理
 當記憶體存取失敗時,MMU單元提供了相應的機制用於
處理這種情況。CP15的寄存器5和寄存器6用於完成該功
能。
19
ARM記憶體管理單元
寄存器1的MMU 控制位
.
.
.
.
RR
V
I
Z
F
R
S
B
L
D
P
W
C
A
M
14
13
12
11
10
9
8
7
6
5
4
3
2
1
0
 M(bit[0]) 使能MMU
 0 = 禁止MMU
 1 = 允许MMU
 在沒有MMU 和保護單元的系統上,這個位應該讀出爲0,
並忽略寫 。
 A(bit[1])使能對齊錯檢查
 0 = 禁止
 1 = 允许
20
ARM記憶體管理單元
禁止和使能MMU
 下面指令使能MMU
MRC
P15, 0, R0, C1, 0, 0
OR
R0, #1
MCR
P15, 0, R0, C1, 0, 0
 下面指令禁止MMU
MRC
P15, 0, R0, C1, 0, 0
BIC
R0, #1
MCR
P15, 0, R0, C1, 0, 0
21
ARM記憶體管理單元
地址變換過程
 虛擬儲存空間到物理儲存空間的映射是以記憶體塊爲單
位進行的 。
 在MMU中採用兩級頁表實現上述地址映射 :
1. 一級頁表中包含有以段爲單位的地址變換條目以及只想
二級頁表的指標。一級頁表實現的地址映射粒度較大;
2. 二級頁表中包含以大頁和小頁爲單位的地址變換條目。
其中一種類型的二級表還包含有極小頁爲單位的地址變
換條目。
22
ARM記憶體管理單元
基於一級頁表的地址變換
23
ARM記憶體管理單元
一級頁表描述符可能的格式
24
ARM記憶體管理單元
基於段地址的映射示意圖
25
高速緩衝區和寫緩衝區
高速緩衝記憶體和寫緩衝區
 處理器主頻較高,通常爲幾十兆甚至幾百兆,而一般記憶
體(DRAM)的儲存周期爲100~200ns。記憶體的速度
嚴重制約著系統的性能 。
 高速緩衝記憶體(cache)是一個硬體部件,對我們來說
是透明的。Cache與主記憶體間以塊(cache line)爲單
位進行資料交換 。
 Cache的存取速度遠遠大於主記憶體的速度,記憶體存取
的時間局部性決定了採用Cache後,系統的整體性能可以
得到大大提高 。
26
高速緩衝區和寫緩衝區
Cache的工作原理
块号B
块内地址
虚拟地址
主存->
cache 地址变换
命
中
块号B
块内地址
未命中
已
满
未
满
cache 替换
策略
替换块
装入块
Cache
主存储器
27
高速緩衝區和寫緩衝區
Cache的工作原理
 在Cache儲存系統中,把Cache和主存劃分爲相同大小的
塊。主存位址可以使用塊號(B)和塊內位址(W)兩部分組成。
同樣Cache的位址也可以使用塊號(B)和塊內位址(W)兩部
分組成。
 命中率:當CPU存取記憶體時,通過記憶體地址變換部件
把地址變換成cache的塊號和塊內地址,如果變換成功
(稱爲cache命中),就用得到的cache地址存取cache,
從cache中取數;如果變換失敗,則産生cache失效資訊,
並用主記憶體的地址存取主記憶體,同時將包含被存取字
在內的一整塊都從主記憶體讀出來,裝入到cache中,但
如果這時cache已滿,需要採用適當的替換演算法來更新
cache。
28
高速緩衝區和寫緩衝區
Cache的地址映象和變換方法
 位址映象指把主存位址空間映象到cache位址空間,具體
說就是把存放在主存中的程式按照某種規則裝入到cache
中,並建立主存位址到cache位址之間的對應關係 。
 地址變換是指當程式已經裝入到cache中後(形成位址映
象),在實際運行過程中,把主存位址如何變換成cache
位址 。
 位址映象和變換是密切相關的,演算法需要統一。但所有
方法都將主存和cache劃分爲同樣大小的儲存單元(稱爲
塊),在進行變換時都是以塊爲單位。
 地址映象和變換方法包括:全相聯映象、直接映象、組相
聯映象三種方法 。
29
高速緩衝區和寫緩衝區
地址映象和变换方法-全相联映象方式
 主存中任意一塊可以映射到cache中的任意一塊的位置上 。
 如果cache的塊容量爲C,主存的塊容量爲M,則兩則之間
的映象關係有C*M中,如果採用目錄表來存放這些映象關
係,目錄表的容量爲C。
30
高速緩衝區和寫緩衝區
地址映象和變換方法-直接映象方式
 這是最簡單也是最直接的方法。主存中一塊只能映象到
cache中的一個特定的塊中 。
 假設主存的塊號爲B,cache的塊號爲b,則他們之間的映
象關係可以使用下面的公司表示 :
b = B mode Cb
其中Cb爲cache的塊容量
31
高速緩衝區和寫緩衝區
地址映象和變換方法-組相聯映象方式
 在這種方式下,把主存和cache按照同樣大小劃分成組,
每個組都由相同的塊陣列成。這樣,主存的組數要比
cache的組數多;
 主存的組與cache的組之間採用直接映象的方式;
 在兩個對應的組之間採用全相聯映象方式。
32
高速緩衝區和寫緩衝區
Cache的分類
 統一/獨立的資料和指令cache
適應獨立的資料和指令cache,可以在同一個時鐘周期中
讀取指令和資料,而不需要雙埠的cache。但這時需要保
證指令和資料的一致性 。
 寫回和寫通cache
寫回cache指執行寫操作時,被寫的資料只寫入cache,
僅當cache需要被替換時才將資料寫入到實際的記憶體中;
寫通則是在指執行寫操作時,同時向cache和記憶體執
行寫操作,從而保證資料的一致性 。
33
高速緩衝區和寫緩衝區
Cache替換演算法
 隨機替換演算法和輪轉法
 隨機替換演算法通過一個亂數發生器産生亂數,用新塊將
編號爲該亂數的塊進行替換。
 輪轉法維護一個邏輯的計數器,利用該計數器依次選擇將
要被替換出去的cache塊。
34
高速緩衝區和寫緩衝區
儲存系統的一致性問題
 當引入cache機制後,同一位址的資料可能存在多個副本,
分別保存在cache中、寫緩衝區中以及主存中 。
1. 位址映射關係改變造成的不一致 ;
2. 指令cache的資料一致性問題 ;
3. DMA造成的不一致問題 ;
35
高速緩衝區和寫緩衝區
Cache的編程介面
 與cache和寫緩衝區相關的寄存器包括CP15中的寄存器
C7、寄存器C9以及寄存器C1中的某些位。
 MCR P15, 0, <Rd>, <C1>, <CRm>, <Op2>
 MCR P15, 0, <Rd>, <C7>, <CRm>, <Op2>
 MCR P15, 0, <Rd>, <C9>, c0, <Op2>
 MRC P15, 0, <Rd>, <C1>, <CRm>, <Op2>
 MRC P15, 0, <Rd>, <C7>, <CRm>, <Op2>
 MRC P15, 0, <Rd>, <C9>, c0, <Op2>
36
快速上下文切換技術
快速上下文切換技術
 快速上下文切換技術通過修改系統中不同進程的虛擬位址,
避免在進行進程間切換時造成的虛擬位址到物理位址的重
映射,從而提高系統的性能 。
37
快速上下文切換技術
快速上下文切換技術原理 (FCSE)
 如果兩個進程佔用的虛擬位址空間有重疊,系統在這兩個
進程之間進行切換時,必須進行虛擬位址到物理位址的重
映射,包括重建TLB ,清除cache,整個工作需要帶來巨
大的系統開銷。而快速上下文切換技術的引入避免了這種
開銷 。
 FCSE位於CPU和MMU之間,他的責任就是將不同進程使
用的相同的虛擬位址映射爲不同的虛擬空間,使得在上下
文切換時無需重建TLB等。
如果兩個進程使用了同樣的虛擬位址空間,則對CPU
而言,兩個進程使用了同樣的虛擬位址空間,FCSE機構
對各個進程的虛擬位址進行變換,這樣系統中除了CPU之
外的部分看到的是經過上下文切換機構變換後的虛擬位址。
38
快速上下文切換技術
快速上下文切換技術原理
 在ARM系統中,4G的虛擬位址空間被分成128個進程空間
塊,每個空間塊中可以包含一個進程,該進程可以使用的
虛擬位址空間爲0~0x01ff’ffff 。
 編號爲I的進程空間塊中的進程實際使用的虛擬位址空間
爲:
(I*0x0200’0000)~( I*0x0200’0000 +0x01ffffff)
39