新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > 對ARM緊致內存TCM的理解

對ARM緊致內存TCM的理解

作者: 時間:2016-11-20 來源:網絡 收藏
ARM的ram包括靜態(tài)ram,動態(tài)ram,TCM---緊耦合內存(TCM: Tightly Coupled Memories)。

TCM是一個固定大小的RAM,緊密地耦合至處理器內核,提供與cache相當的性能,相比于cache的優(yōu)點是,程序代碼可以精確地控制什么函數或代碼放在哪兒(RAM里)。當然TCM永遠不會被踢出主存儲器,因此,他會有一個被用戶預設的性能,而不是象cache那樣是統計特性的性能提高。
TCM對于以下幾種情況的代碼是非常有用、也是需要的:可預見的實時處理(中斷處理)、時間可預見(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代碼(編解碼功能)。隨著cache大小的增加以及總線性能的規(guī)模,TCM將會變得越來越不重要,但是他提供了一個讓你權衡的機會
那么,哪一個更好呢?他取決于你的應用。Cache是一個通用目的的加速器,他會加速你的所有代碼,而不依賴于存儲方式。TCM只會加速你有意放入TCM的代碼,其余的其他代碼只能通過cache加速。Cache是一個通用目的解決方案,TCM在某些特殊情況下是非常有用的。假如你不認為需要TCM的話,那么你可能就不需要了,轉而加大你的cache,從而加速運行于內核上的所有軟件代碼.

本文引用地址:http://2s4d.com/article/201611/319039.htm

緊致內存是指片上快速存儲區(qū),與片上緩存具有同等的性能,但因為程序可完全控制緊致內存,因而比統計復用的緩存有更好的可預測性。這是ARM5TE引入的特性,目的是通過這一快速的存儲區(qū),一方面提高某些關鍵代碼(如中斷處理函數)的性能,另方面使存儲訪問延遲保持一致,這是實時性應用所要求的。ARM6對TCM操作做了進一步的規(guī)范。

TCM的應用領域:可預測的實時處理(中斷處理)、避免緩存分析(加密算法)、或單純的性能提高(處理器側編解碼)等。
如同緩存的哈佛結構,指令TCM和數據TCM是分開的。TCM有兩種使用方式:作為快緩存使用,和作為本地內存使用。
本地內存
這時,TCM被用作更快速的內存,如同一般的RAM。因為指令段有時也是數據訪問的對象,指令TCM實際上是指令數據一體化TCM。對TCM寫操作后和后續(xù)對此寫操作的依賴指令之間必須跟一個阻塞操作。
快緩存(smartcache)
TCM可以配置成當作外部RAM的緩存使用,對應的外部RAM也要設置可緩存標志。如果被緩存的外部RAM可以由多處理器共享,那么TCM是否與共享數據保持一致并沒有規(guī)定,而由具體實現廠家決定。

TCM與緩存的內容不會自動保持一致,這意味著TCM映射到的內存區(qū)域必須是不緩存的區(qū)域。如果一個地址同時落在緩存和TCM內,那么訪問這一地址的結果是不能預測的。另一個限制是各個TCM必須要配置成不相交的。

TCM的配置
通過CP15的0、1、9號寄存器進行:
0號寄存器
讀CP15的0號寄存器,opcode2為2:
MRCp15,0,Rd,C0,C0,2
返回TCM狀態(tài)寄存器的內容,其中,16-18位代表數據TCM個數,0-3代表指令TCM個數。

1號寄存器
ARM6之前,1號寄存器的16位和18位用于使能數據TCM和指令TCM(ARM946,ARM966),ARM6因為可以使用9號寄存器控制每一塊TCM的使能狀態(tài),所以1號寄存器的這兩個位就過時了,應該置1。

9號寄存器
每個TCM都有一個TCM區(qū)域寄存器,設置這個寄存器就可以設置TCM的基址和大小。在設置TCM區(qū)域寄存器前,需要設置TCM選擇寄存器。
下面是訪問這些相關寄存器的指令:

ARMInstructionTCMRegionRegister
MRC/MCRP15,0,Rd,C9,C1,0DataTCMRegionRegister
MRC/MCRP15,0,Rd,C9,C1,1Instruction/UnifiedTCMRegionRegister
MRC/MCRP15,0,Rd,C9,C2,0TCMSelectionRegister


TCM區(qū)域寄存器的結構:
BaseAddress(PhysicalAddress)[31-12]SBZ/UNP[11-7]Size[6-2]SC[1]En[0]

其中:
En位是使能位,置1時使能此TCM;
SC位置位表示此TCM被用作快緩存(smartcache),清零表示本地內存;
Size字段是只讀的,含義如下:

SizeMemorySizeMemory
filedsizefieldsize
0b000000K0b011014M
0b000114K0b011108M
0b001008K0b0111116M
0b0010116K0b1000032M
0b0011032K0b1000164M
0b0011164K0b10010128M
0b01000128K0b10011256M
0b01001256K0b10100512M
0b01010512K0b101011G
0b010111M0b101102G
0b011002M0b101114G

注意TCM區(qū)域寄存器配置出來的各個TCM塊不能相交,否則后果不可預測



關鍵詞: ARM緊致內存TC

評論


技術專區(qū)

關閉