新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 對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那樣是統(tǒng)計特性的性能提高。
        TCM對于以下幾種情況的代碼是非常有用、也是需要的:可預見的實時處理(中斷處理)、時間可預見(加密算法)、避免cache分析(加密算法)、或者只是要求高性能的代碼(編解碼功能)。隨著cache大小的增加以及總線性能的規(guī)模,TCM將會變得越來越不重要,但是他提供了一個讓你權衡的機會
        那么,哪一個更好呢?他取決于你的應用。Cache是一個通用目的的加速器,他會加速你的所有代碼,而不依賴于存儲方式。TCM只會加速你有意放入TCM的代碼,其余的其他代碼只能通過cache加速。Cache是一個通用目的解決方案,TCM在某些特殊情況下是非常有用的。假如你不認為需要TCM的話,那么你可能就不需要了,轉而加大你的cache,從而加速運行于內核上的所有軟件代碼.

        本文引用地址:http://www.104case.com/article/201611/319039.htm

        緊致內存是指片上快速存儲區(qū),與片上緩存具有同等的性能,但因為程序可完全控制緊致內存,因而比統(tǒng)計復用的緩存有更好的可預測性。這是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ū)

        關閉
        主站蜘蛛池模板: 云安县| 竹北市| 宜兴市| 黎川县| 霍山县| 九江县| 太保市| 太仓市| 井冈山市| 赤水市| 永昌县| 珲春市| 平和县| 韶关市| 宜宾县| 天全县| 萨嘎县| 始兴县| 大悟县| 乌拉特后旗| 舞钢市| 华容县| 政和县| 定边县| 内乡县| 邳州市| 达州市| 娱乐| 增城市| 澜沧| 汝阳县| 广汉市| 南和县| 镇赉县| 汕尾市| 中山市| 甘泉县| 桃园县| 左贡县| 昌江| 甘孜县|