【ARM】Cortex存储系统
00. 目錄
文章目錄
- 00. 目錄
- 01. 存儲系統(tǒng)概述
- 02. 協(xié)處理器(CP15)
- 03. 存儲管理單元(MMU)
- 04. 高速緩沖存儲器(Cache)
- 05. 附錄
01. 存儲系統(tǒng)概述
ARM 存儲系統(tǒng)有非常靈活的體系結(jié)構(gòu),可以適應(yīng)不同的嵌入式應(yīng)用系統(tǒng)的需要。ARM存儲器系統(tǒng)可以使用簡單的平板式地址映射機(jī)制
(就像一些簡單的單片機(jī)一樣,地址空間的分配方式是固定的,系統(tǒng)中各部分都使用物理地址),也可以使用其他技術(shù)提供功能更為強(qiáng)大
的存儲系統(tǒng)。例如:
(1)系統(tǒng)可能提供多種類型的存儲器件,如 Flash、ROM、SRAM 等。
(2)Cache 技術(shù)。
(3)寫緩存技術(shù)(Write Buffers)。
(4)虛擬內(nèi)存和 I/O 地址映射技術(shù)。
大多數(shù)系統(tǒng)通過下面的方法之一可實(shí)現(xiàn)對復(fù)雜存儲系統(tǒng)的管理。
(1)使用 Cache,縮小處理器和存儲系統(tǒng)速度差別,從而提高系統(tǒng)的整體性能。
(2)使用內(nèi)存映射技術(shù)實(shí)現(xiàn)虛擬空間到物理空間的映射。這種映射機(jī)制對嵌入式系統(tǒng)非常重要。通常嵌入式系統(tǒng)程序存放在 ROM/Flash
中,這樣系統(tǒng)斷電后程序能夠得到保存。但是,通常 ROM/Flash 與 SDRAM 相比,速度慢很多,而且基于 ARM 的嵌入式系統(tǒng)中通常把異
常中斷向量表放在 RAM 中。利用內(nèi)存映射機(jī)制可以滿足這種需要。在系統(tǒng)加電時(shí),將 ROM/Flash 映射為地址 0,這樣可以進(jìn)行一些初始
化處理;當(dāng)這些初始化處理完成后將SDRAM 映射為地址 0,并把系統(tǒng)程序加載到 SDRAM 中運(yùn)行,這樣可以很好地滿足嵌入式系統(tǒng)的需要。
(3)引入存儲保護(hù)機(jī)制,增強(qiáng)系統(tǒng)的安全性。
(4)引入一些機(jī)制保證將 I/O 操作映射成內(nèi)存操作后,各種 I/O 操作能夠得到正確的結(jié)果。在簡單存儲系統(tǒng)中,不存在這樣的問題。而
當(dāng)系統(tǒng)引入了 Cache 和 write buffer 后,就需要一些特別的措施。
在 ARM 系統(tǒng)中,要實(shí)現(xiàn)對存儲系統(tǒng)的管理通常使用協(xié)處理器 CP15,它通常也被稱為系統(tǒng)控制協(xié)處理器(System Control
Coprocessor)。
ARM 的存儲器系統(tǒng)是由多級構(gòu)成的,可以分為內(nèi)核級、芯片級、板卡級、外設(shè)級。下圖 所示為存儲器的層次結(jié)構(gòu)。
每級都有特定的存儲介質(zhì),下面對比各級系統(tǒng)中特定存儲介質(zhì)的存儲性能。
(1)內(nèi)核級的寄存器。處理器寄存器組可看做是存儲器層次的頂層。這些寄存器被集成在處理器內(nèi)核中,在系統(tǒng)中提供最快的存儲器訪
問。典型的 ARM 處理器有多個(gè) 32 位寄存器,其訪問時(shí)間為 ns 量級。
(2)芯片級的緊耦合存儲器(TCM)是為彌補(bǔ) Cache 訪問的不確定性增加的存儲器。TCM 是一種快速 SDRAM,它緊挨內(nèi)核,并且保證
取指和數(shù)據(jù)操作的時(shí)鐘周期數(shù),這一點(diǎn)對一些要求確定行為的實(shí)時(shí)算法是很重要的。TCM 位于存儲器地址映射中,可作為快速存儲器來
訪問。
(3)芯片級的片上 Cache 存儲器的容量在 8~32KB 之間,訪問時(shí)間大約為 10ns。高性能的 ARM 結(jié)構(gòu)中,可能存在第二級片外
Cache,容量為幾百千字節(jié)(KB),訪問時(shí)間為幾十納秒。
(4)板卡級的 DRAM。主存儲器可能是幾兆字節(jié)(MB)到幾十兆字節(jié)(MB)的動(dòng)態(tài)存儲器,訪問時(shí)間大約為 100ns。
(5)外設(shè)級的后援存儲器,通常是硬盤,可能從幾百兆字節(jié)(MB)到幾個(gè)吉字節(jié)(GB),訪問時(shí)間為幾十毫秒。
02. 協(xié)處理器(CP15)
? ARM 處理器支持 16 個(gè)協(xié)處理器。在程序執(zhí)行過程中,每個(gè)協(xié)處理器忽略屬于 ARM處理器和其他協(xié)處理器的指令。當(dāng)一個(gè)協(xié)處理器硬
件不能執(zhí)行屬于它的協(xié)處理器指令時(shí),將產(chǎn)生一個(gè)未定義指令異常中斷,在該異常中斷處理程序中,可以通過軟件模擬該硬件操作。例
如,如果系統(tǒng)不包含向量浮點(diǎn)運(yùn)算器,則可以選擇浮點(diǎn)運(yùn)算軟件模擬包來支持向量浮點(diǎn)運(yùn)算。CP15 即通常所說的系統(tǒng)控制協(xié)處理器
(System Control Coprocessor),它負(fù)責(zé)完成大部分的存儲系統(tǒng)管理。除了 CP15 外,在具體的各種存儲管理機(jī)制中可能還會用到其他
一些技術(shù),如在 MMU 中除了 CP15 外,還使用了頁表技術(shù)等。
在一些沒有標(biāo)準(zhǔn)存儲管理的系統(tǒng)中,CP15 是不存在的。在這種情況下,針對 CP15 的操作指令將被視為未定義指令,指令的執(zhí)行結(jié)果不
可預(yù)知。CP15 包含 16 個(gè) 32 位寄存器,其編號為 0~15。實(shí)際上對于某些編號的寄存器可能對應(yīng)多個(gè)物理寄存器,在指令中指定特定的
標(biāo)志位來區(qū)分這些物理寄存器。這種機(jī)制有些類似于 ARM 中的寄存器,當(dāng)處于不同的處理器模式時(shí),某些相同編號的寄存器對應(yīng)于不同
的物理寄存器。
CP15 中的寄存器可能是只讀的,也可能是只寫的,還有一些是可讀/可寫的。在對協(xié)處理器寄存器進(jìn)行操作時(shí),需要注意以下幾個(gè)問題:
(1)寄存器的訪問類型(只讀/只寫/可讀可寫)。
(2)不同的訪問引發(fā)不同的功能。
(3)相同編號的寄存器是否對應(yīng)不同的物理寄存器。
(4)寄存器的具體作用。
03. 存儲管理單元(MMU)
? 在創(chuàng)建多任務(wù)嵌入式系統(tǒng)時(shí),最好用一個(gè)簡單的方式來編寫、裝載及運(yùn)行各自獨(dú)立的任務(wù)。目前大多數(shù)的嵌入式系統(tǒng)不再使用自己定制
的控制系統(tǒng),而使用操作系統(tǒng)來簡化這個(gè)過程。較高級的操作系統(tǒng)采用基于硬件的存儲管理單元(MMU)來實(shí)現(xiàn)上述操作。
? MMU 提供的一個(gè)關(guān)鍵服務(wù)是使各個(gè)任務(wù)作為各自獨(dú)立的程序在自己的私有存儲空間中運(yùn)行。在帶 MMU 的操作系統(tǒng)控制下,運(yùn)行的任
務(wù)無須知道其他與之無關(guān)的任務(wù)的存儲需求情況,這就簡化了各個(gè)任務(wù)的設(shè)計(jì)。
? MMU 提供了一些資源以允許使用虛擬存儲器(將系統(tǒng)物理存儲器重新編址,可將其看成一個(gè)獨(dú)立于系統(tǒng)物理存儲器的存儲空間)。
MMU 作為轉(zhuǎn)換器,將程序和數(shù)據(jù)的虛擬地址(編譯時(shí)的連接地址)轉(zhuǎn)換成實(shí)際的物理地址,即在物理主存中的地址。這個(gè)轉(zhuǎn)換過程允許
運(yùn)行的多個(gè)程序使用相同的虛擬地址,而各自存儲在物理存儲器的不同位置。
? 這樣存儲器就有兩種類型的地址:虛擬地址和物理地址。虛擬地址由編譯器和連接器在定位程序時(shí)分配;物理地址用來訪問實(shí)際的主存
硬件模塊(物理上程序存在的區(qū)域)。
04. 高速緩沖存儲器(Cache)
? Cache 是一個(gè)容量小但存取速度非常快的存儲器,它保存最近用到的存儲器數(shù)據(jù)副本。對于程序員來說,Cache 是透明的。它自動(dòng)決定
保存哪些數(shù)據(jù)、覆蓋哪些數(shù)據(jù)。現(xiàn)在 Cache通常與處理器在同一芯片上實(shí)現(xiàn)。Cache 能夠發(fā)揮作用是因?yàn)槌绦蚓哂芯植啃浴K^局部性就
是指在任何特定的時(shí)間,處理器趨于對相同區(qū)域的數(shù)據(jù)(如堆棧)多次執(zhí)行相同的指令(如循環(huán))。
? Cache 經(jīng)常與寫緩存器(Write Buffer)一起使用。寫緩存器是一個(gè)非常小的先進(jìn)先出(FIFO)存儲器,位于處理器核與主存之間。使
用寫緩存的目的是,將處理器核和 Cache從較慢的主存寫操作中解脫出來。當(dāng) CPU 向主存儲器做寫入操作時(shí),它先將數(shù)據(jù)寫入到寫緩存
區(qū)中,由于寫緩存器的速度很高,這種寫入操作的速度也將很高。寫緩存區(qū)在 CPU 空閑時(shí),以較低的速度將數(shù)據(jù)寫入到主存儲器中相應(yīng)
的位置。
? 通過引入 Cache 和寫緩存區(qū),存儲系統(tǒng)的性能得到了很大的提高,但同時(shí)也帶來了一些問題。例如,由于數(shù)據(jù)將存在于系統(tǒng)中不同的
物理位置,可能造成數(shù)據(jù)的不一致性;由于寫緩存區(qū)的優(yōu)化作用,可能有些寫操作的執(zhí)行順序不是用戶期望的順序,從而造成操作錯(cuò)誤。
05. 附錄
5.1 ARM處理器開發(fā)詳解筆記
總結(jié)
以上是生活随笔為你收集整理的【ARM】Cortex存储系统的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ARM】Programmers Mod
- 下一篇: 【STM32】STM32F4系统架构