ARM存儲器之:協(xié)處理器CP15
ARM存儲系統有非常靈活的體系結構,可以適應不同的嵌入式應用系統的需要。ARM存儲器系統可以使用簡(jiǎn)單的平板式地址映射機制(就像一些簡(jiǎn)單的單片機一樣,地址空間的分配方式是固定的,系統中各部分都使用物理地址),也可以使用其他技術(shù)提供功能更為強大的存儲系統。比如:
·系統可能提供多種類(lèi)型的存儲器件,如FLASH、ROM、SRAM等;
·Caches技術(shù);
·寫(xiě)緩存技術(shù)(writebuffers);
·虛擬內存和I/O地址映射技術(shù)。
大多數的系統通過(guò)下面的方法之一實(shí)現對復雜存儲系統的管理。
·使能Cache,縮小處理器和存儲系統速度差別,從而提高系統的整體性能。
·使用內存映射技術(shù)實(shí)現虛擬空間到物理空間的映射。這種映射機制對嵌入式系統非常重要。通常嵌入式系統程序存放在ROM/FLASH中,這樣系統斷電后程序能夠得到保存。但是通常ROM/FLASH與SDRAM相比,速度慢很多,而且基于ARM的嵌入式系統中通常把異常中斷向量表放在RAM中。利用內存映射機制可以滿(mǎn)足這種需要。在系統加電時(shí),將ROM/FLASH映射為地址0,這樣可以進(jìn)行一些初始化處理;當這些初始化處理完成后將SDRAM映射為地址0,并把系統程序加載到SDRAM中運行,這樣很好地滿(mǎn)足嵌入式系統的需要。
·引入存儲保護機制,增強系統的安全性。
·引入一些機制保證將I/O操作映射成內存操作后,各種I/O操作能夠得到正確的結果。在簡(jiǎn)單存儲系統中,不存在這樣問(wèn)題。而當系統引入了Cache和writebuffer后,就需要一些特別的措施。
在A(yíng)RM系統中,要實(shí)現對存儲系統的管理通常是使用協(xié)處理器CP15,它通常也被稱(chēng)為系統控制協(xié)處理器(SystemControlCoprocessor)。
ARM的存儲器系統是由多級構成的,每級都有特定的容量和速度。
圖15.1顯示了存儲器的層次結構。
①寄存器。處理器寄存器組可看作是存儲器層次的頂層。這些寄存器被集成在處理器內核中,在系統中提供最快的存儲器訪(fǎng)問(wèn)。典型的ARM處理器有多個(gè)32位寄存器,其訪(fǎng)問(wèn)時(shí)間為ns量級。
圖15.1存儲器的層次結構
②緊耦合存儲器TCM。為彌補Cache訪(fǎng)問(wèn)的不確定性增加的存儲器。TCM是一種快速SDRAM,它緊挨內核,并且保證取指和數據操作的時(shí)鐘周期數,這一點(diǎn)對一些要求確定行為的實(shí)時(shí)算法是很重要的。TCM位于存儲器地址映射中,可作為快速存儲器來(lái)訪(fǎng)問(wèn)。
③片上Cache存儲器的容量在8KB~32KB之間,訪(fǎng)問(wèn)時(shí)間大約為10ns。
④高性能的ARM結構中,可能存在第二級片外Cache,容量為幾百KB,訪(fǎng)問(wèn)時(shí)間為幾十ns。
⑤DRAM。主存儲器可能是幾MB到幾十MB的動(dòng)態(tài)存儲器,訪(fǎng)問(wèn)時(shí)間大約為100ns。
⑥后援存儲器,通常是硬盤(pán),可能從幾百MB到幾個(gè)GB,訪(fǎng)問(wèn)時(shí)間為幾十ms。
注意 | TCM和SRAM在技術(shù)上相同,但在結構排列上不同;TCM在片上,而SRAM在板上。 |
15.1協(xié)處理器CP15
ARM處理器支持16個(gè)協(xié)處理器。在程序執行過(guò)程中,每個(gè)協(xié)處理器忽略屬于A(yíng)RM處理器和其他協(xié)處理器的指令。當一個(gè)協(xié)處理器硬件不能執行屬于它的協(xié)處理器指令時(shí),將產(chǎn)生一個(gè)未定義指令異常中斷,在該異常中斷處理程序中,可以通過(guò)軟件模擬該硬件操作。比如,如果系統不包含向量浮點(diǎn)運算器,則可以選擇浮點(diǎn)運算軟件模擬包來(lái)支持向量浮點(diǎn)運算。
CP15,即通常所說(shuō)的系統控制協(xié)處理器(SystemControlCoprocesssor)。它負責完成大部分的存儲系統管理。除了CP15外,在具體的各種存儲管理機制中可能還會(huì )用到其他的一些技術(shù),如在MMU中除CP15外,還使用了頁(yè)表技術(shù)等。
在一些沒(méi)有標準存儲管理的系統中,CP15是不存在的。在這種情況下,針對協(xié)處理器CP15的操作指令將被視為未定義指令,指令的執行結果不可預知。
CP15包含16個(gè)32位寄存器,其編號為0~15。實(shí)際上對于某些編號的寄存器可能對應多個(gè)物理寄存器,在指令中指定特定的標志位來(lái)區分這些物理寄存器。這種機制有些類(lèi)似于A(yíng)RM中的寄存器,當處于不同的處理器模式時(shí),某些相同編號的寄存器對應于不同的物理寄存器。
CP15中的寄存器可能是只讀的,也可能是只寫(xiě)的,還有一些是可讀可寫(xiě)的。在對協(xié)處理器寄存器進(jìn)行操作時(shí),需要注意以下幾個(gè)問(wèn)題。
·寄存器的訪(fǎng)問(wèn)類(lèi)型(只讀/只寫(xiě)/可讀可寫(xiě))。
·不同的訪(fǎng)問(wèn)引發(fā)的不同功能。
·相同編號的寄存器是否對應不同的物理寄存器。
·寄存器的具體作用。
評論