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